Skip to content

Ns81000/WHATSUP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

325 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

What's Up?

๐ŸŽฌ What's Up?

Autonomous Philosophical Media Engine
AI-powered deep dives into the existential depths of cinema

Daily Posts Deploy Live Site Python Posts per week Gemini AI TMDB Jekyll

What is this? โ€ข How it Works โ€ข Features โ€ข Sunday Special โ€ข Image Workflow โ€ข Tech Stack โ€ข Quick Start โ€ข Configuration


๐Ÿค” What is This?

What's Up? is a fully autonomous blog that generates philosophical movie and TV series analyses using AI. Unlike typical movie review sites that focus on ratings and plot summaries, this platform explores:

  • ๐Ÿง  Existential themes โ€” What does this film say about the human condition?
  • ๐Ÿ”ฎ Metaphysical questions โ€” How does it challenge our perception of reality?
  • ๐Ÿ’ญ Philosophical frameworks โ€” What schools of thought does it embody?
  • โค๏ธ Emotional resonance โ€” Why does this story move us?

"We don't just watch films. We explore the questions they dare to ask."

๐Ÿ“Š At a Glance

Metric Value Details
๐Ÿ“ Weekly Posts 25 24 (Mon-Sat) + 1 (Sunday Recap)
๐ŸŽฌ Movie Library 572 films Curated IMDb watchlist
๐Ÿ“บ Series Library 105 shows Carefully selected
๐Ÿ–ผ๏ธ Image Format WebP Compressed to <500KB
๐Ÿค– AI Model Gemini 2.5 Flash 800-2000 words per post
โฑ๏ธ Automation 100% Zero manual intervention
๐ŸŒŸ Sunday Special Weekly Recap Synthesizes week's posts

โš™๏ธ How It Works https://422442.github.io/What_Flow/

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                           ๐Ÿ• GITHUB ACTIONS                                 โ”‚
โ”‚                    Triggers automatically 1-2 times daily                   โ”‚
โ”‚                                                                             โ”‚
โ”‚     Mon-Sat: 08:30 AM + 05:30 PM IST (4 posts/day = 24/week)             โ”‚
โ”‚     Sunday:  08:30 AM (notification) + 07:30 PM (1 recap post)            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                      โ”‚
                                      โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                           ๐Ÿ PYTHON AUTOMATION                              โ”‚
โ”‚                                                                             โ”‚
โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                โ”‚
โ”‚   โ”‚  ๐Ÿ“‹ READ     โ”‚    โ”‚  ๐ŸŽฌ FETCH    โ”‚    โ”‚  ๐Ÿ–ผ๏ธ PROCESS  โ”‚                โ”‚
โ”‚   โ”‚  CSV Lists   โ”‚โ”€โ”€โ”€โ–ถโ”‚  TMDB Data   โ”‚โ”€โ”€โ”€โ–ถโ”‚  Images      โ”‚                โ”‚
โ”‚   โ”‚  (IMDb IDs)  โ”‚    โ”‚  (metadata)  โ”‚    โ”‚  (WebP)      โ”‚                โ”‚
โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                โ”‚
โ”‚                                                  โ”‚                          โ”‚
โ”‚                                                  โ–ผ                          โ”‚
โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                โ”‚
โ”‚   โ”‚  ๐Ÿ“ CREATE   โ”‚    โ”‚  ๐Ÿค– GENERATE โ”‚    โ”‚  ๐Ÿง  ANALYZE  โ”‚                โ”‚
โ”‚   โ”‚  Jekyll Post โ”‚โ—€โ”€โ”€โ”€โ”‚  Content     โ”‚โ—€โ”€โ”€โ”€โ”‚  with Gemini โ”‚                โ”‚
โ”‚   โ”‚  (.md file)  โ”‚    โ”‚  (markdown)  โ”‚    โ”‚  AI          โ”‚                โ”‚
โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                      โ”‚
                                      โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                           ๐ŸŒ GITHUB PAGES                                   โ”‚
โ”‚                                                                             โ”‚
โ”‚              Jekyll builds static HTML โ†’ Live website updated               โ”‚
โ”‚                    https://ns81000.github.io/WHATSUP                        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

The Complete Flow

Step What Happens Technology
1๏ธโƒฃ GitHub Actions triggers on schedule Cron jobs (UTC)
2๏ธโƒฃ Python script reads from IMDb CSV lists Pandas
3๏ธโƒฃ Fetches movie/series data from TMDB API REST API
4๏ธโƒฃ Downloads and optimizes images to WebP (<500KB) Pillow
5๏ธโƒฃ Gemini AI generates philosophical analysis Google Gemini 2.5 Flash
6๏ธโƒฃ Creates Jekyll markdown post with frontmatter Python
7๏ธโƒฃ Commits and pushes to repository Git
8๏ธโƒฃ Jekyll builds and deploys to GitHub Pages GitHub Actions

โœจ Features

๐Ÿค– Fully Autonomous

Zero human intervention required. The system runs 24/7, generating fresh content every day.

๐Ÿ“… Smart Scheduling

Day Runs Posts Timing (IST)
Monday - Saturday 2 4 posts 08:30 AM, 05:30 PM
Sunday 2 1 recap 08:30 AM (notification), 07:30 PM (recap)

Weekly output: 25 posts (24 regular + 1 Sunday recap)

๐Ÿ–ผ๏ธ Intelligent Image Handling

TMDB API Available?
       โ”‚
       โ”œโ”€โ”€ YES โ†’ Download backdrop โ†’ Convert to WebP โ†’ Compress to <500KB
       โ”‚
       โ””โ”€โ”€ NO โ†’ Pre-check system alerts you 6 hours in advance
                      โ”‚
                      โ”œโ”€โ”€ Telegram Bot notification
                      โ””โ”€โ”€ Email notification (SMTP)
                              โ”‚
                              โ–ผ
                      Upload manually โ†’ Next run processes it

๐Ÿง  AI-Powered Content

Each post includes:

Section Description
Opening Hook Philosophical quote or thought-provoking question
Thematic Analysis Deep dive into existential/metaphysical themes
Character Study Psychological examination of key characters
Visual Storytelling Analysis of cinematography and symbolism
The Question It Asks Core philosophical inquiry of the work
Streaming Info Where to watch (via TMDB data)

๐Ÿท๏ธ Mood Categorization

Every post is tagged with a philosophical mood:

Mood Description Example Films
๐Ÿง  Cerebral Intellectually challenging Inception, Primer
๐Ÿ˜ข Melancholy Sad, wistful Eternal Sunshine, Her
๐ŸŒ… Hopeful Optimistic, uplifting The Shawshank Redemption
โšก Intense High tension, gripping Whiplash, Uncut Gems
๐Ÿ•ฐ๏ธ Nostalgic Evokes longing Cinema Paradiso
โ“ Existential Questions existence Blade Runner, 2001
๐Ÿ’• Romantic Love-focused Before Sunrise
๐Ÿฆธ Heroic Triumphant, inspiring Rocky, Gladiator
๐ŸŒ‘ Dystopian Dark future The Matrix, Children of Men
๐ŸŒ€ Surreal Dreamlike, abstract Mulholland Drive

๐Ÿ” Pre-Check System

The system looks ahead at the next scheduled items:

# Before processing current items, check if NEXT items have images
if not check_image_availability(next_movie):
    trigger_manual_fallback()  # Sends Telegram/Email alert

This gives you 6+ hours to manually upload images before they're needed.


๐ŸŒŸ Sunday Special - Weekly Recap

Every Sunday has two runs with different purposes:

๐ŸŒ… Sunday Morning (08:30 AM IST / 03:00 UTC) - Notification Only

Purpose: Give you the full day to upload a custom hero image!

What Happens:

  1. โœ‰๏ธ Email sent with week's summary (all 24 posts from Mon-Sat)
  2. ๐Ÿ“ฑ Telegram notification with upload token
  3. โธ๏ธ Script exits - no post generation yet
  4. โฐ Deadline reminder: Upload before 7:30 PM IST

Sample Email:

๐ŸŒŸ Sunday Special - Weekly Recap Coming Tonight!

This week's posts:
1. Film A (Monday)
2. Film B (Monday)
...
24. Film X (Saturday)

๐Ÿ“ธ Upload Hero Image - Deadline: 7:30 PM IST
Token: RECAP_W5_2026

Tonight at 7:30 PM: Script will check Telegram + generate recap

๐ŸŒ™ Sunday Evening (07:30 PM IST / 14:00 UTC) - Recap Generation

Purpose: Generate and publish the weekly synthesis!

What Happens:

  1. ๐Ÿ” Check Telegram for uploaded image (token: RECAP_W5_2026)
  2. ๐Ÿ–ผ๏ธ Process image if found (or continue without)
  3. ๐Ÿค– Generate recap weaving all 24 posts into one narrative
  4. ๐Ÿ“ Publish post with or without hero image
  5. โœ… Complete - week's journey documented

What Makes It Special?

Feature Description
โฐ Split Workflow Morning notification + Evening generation (19.5 hour gap)
๐Ÿ“Š Weekly Summary Lists all 24 posts from Monday-Saturday
๐Ÿงต Thematic Synthesis AI finds common philosophical threads across all films
๐Ÿ“– 1500-2000 Words Longer, more comprehensive than regular posts
๐Ÿ’ญ 6-8 Philosopher Quotes Nietzsche, Camus, Sartre, Heidegger, etc.
๐ŸŽจ Optional Hero Image Upload anytime before 7:30 PM (or skip it)
โœจ Beautiful Formatting Multiple blockquotes, horizontal rules, rich markdown

How It Works

graph TD
    A[Sunday 03:00 UTC<br/>Morning Run] --> B[Get Week's 24 Posts]
    B --> C[Send Email Summary]
    C --> D[Send Telegram Notification]
    D --> E[EXIT - Wait for Evening]
    
    F[User Has All Day] --> G{Upload Image?}
    G -->|Yes| H[Upload with Token<br/>RECAP_W5_2026]
    G -->|No| I[Skip - That's Fine!]
    
    H --> J[Sunday 14:00 UTC<br/>Evening Run]
    I --> J
    
    J --> K{Check Telegram}
    K -->|Image Found| L[Download & Process]
    K -->|No Image| M[Continue Without]
    
    L --> N[Generate Weekly Recap<br/>with Gemini AI]
    M --> N
    
    N --> O[Publish Post]
    O --> P{Image Status?}
    P -->|Had Image| Q[โœ… Complete with Hero]
    P -->|No Image| R[โœ… Complete Text-Only]
Loading

Week Calculation Logic

def get_week_posts_from_history():
    today = datetime.now()
    
    if today.weekday() == 6:  # Sunday
        # Use THIS week's Monday (current week being completed)
        monday = today - timedelta(days=6)
    else:
        # For any other day, get most recent Monday
        monday = today - timedelta(days=today.weekday())
    
    # Calculate end of week
    sunday = monday + timedelta(days=6)
    
    # Filter: monday <= post_date <= sunday
    # Ensures only current week's posts are included

Sample Weekly Recap Structure

---
title: "Echoes of Eternity: A Week Through Time, Memory, and Becoming"
categories: [Weekly Recap, Philosophical]
tags: [Cerebral, Existential, Profound]
---

> "Time is the substance of which I am made..." โ€” Jorge Luis Borges
{: .prompt-tip }

This week, cinema became our **philosophical laboratory**...

## The Philosophical Thread
[Reveals common themes across all 24 films]

> "Memory is not what we remember..." โ€” Andrรฉ Bazin
{: .prompt-info }

## The Journey Through Cinema

**Film 1**: How it explores mortality and choice...
**Film 2**: Its meditation on identity and becoming...
[Continues through all 24 posts]

---

## Deeper Waters: The Human Condition

[Synthesis of universal truths]

> "The absurd is the essential concept..." โ€” Albert Camus
{: .prompt-warning }

[Final reflections and questions for the reader]

๐Ÿ–ผ๏ธ Image Workflow - Intelligent Fallback System

The system has a sophisticated 3-tier image handling strategy:

Tier 1: TMDB API (Primary)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Check TMDB for High-Quality Images    โ”‚
โ”‚  Requirement: width >= 1920px           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                  โ”‚
         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
         โ”‚                 โ”‚
    โœ… Found          โŒ Not Found
         โ”‚                 โ”‚
         โ–ผ                 โ–ผ
   Download &          Go to Tier 2
   Process           (Pre-Check Alert)

Tier 2: Pre-Check Alert System (6-Hour Warning)

When TMDB doesn't have images for the NEXT scheduled post:

1. Telegram Notification:

๐ŸŽฌ Manual Upload Required

Title: Inception
IMDb ID: tt1375666

๐Ÿ“ธ Upload Images with These Captions:

1๏ธโƒฃ HERO_tt1375666 (Landscape/Backdrop - REQUIRED)
2๏ธโƒฃ IMG1_tt1375666 (Optional)
3๏ธโƒฃ IMG2_tt1375666 (Optional)
4๏ธโƒฃ IMG3_tt1375666 (Optional)

โฐ Deadline: Before next scheduled run (~6 hours)

2. Email Alert:

Subject: ๐ŸŽฌ Action Required: Image Missing for Inception

โš ๏ธ Manual Image Upload Required
Title: Inception
IMDb ID: tt1375666

Please check your Telegram and upload required images.

Tier 3: Graceful Fallback

If no images are available (even after alert):

# Script continues without blocking
if not images:
    print("โš ๏ธ No images available - post will be created without hero image")
    has_images = False
    
# Gemini generates post anyway
content = generate_blog_post(data, tmdb_data, media_type, has_images=False)

Image Detection Rules

Scenario HERO Image Body Images Alert Sent? Result
Perfect โœ… โ‰ฅ1920px โœ… 3 images โŒ No All images downloaded
Good โœ… โ‰ฅ1920px โš ๏ธ 2 images โŒ No Hero + 2 images
Acceptable โœ… โ‰ฅ1920px โŒ 0 images โŒ No Hero only
Alert! โŒ None โœ… Any โœ… YES Only HERO missing triggers alert
Fallback โŒ None โŒ None โœ… YES Post created text-only

Key Point: Only the HERO image (landscape, โ‰ฅ1920px) triggers notifications. Body images (IMG1-3) are completely optional.

Complete Image Flow Example

Thursday 03:00 UTC - Current Run:

1. Process Movie "Interstellar"
   โ”œโ”€ check_telegram_for_uploads(tt0816692)
   โ”‚  โ””โ”€ Not found (no manual upload)
   โ”‚
   โ”œโ”€ fetch_tmdb_data(tt0816692)
   โ”‚  โ””โ”€ Found: 15 backdrops
   โ”‚
   โ”œโ”€ download_and_process_images()
   โ”‚  โ”œโ”€ Download hero (3840x2160) โ†’ tt0816692_hero.webp (485KB) โœ…
   โ”‚  โ”œโ”€ Download img1 (1920x1080) โ†’ tt0816692_1.webp (287KB) โœ…
   โ”‚  โ””โ”€ Download img2 (1920x1080) โ†’ tt0816692_2.webp (265KB) โœ…
   โ”‚
   โ””โ”€ Generate post with 3 images โœ…

2. Pre-Check Next Movie "Inception"
   โ”œโ”€ check_image_availability(tt1375666)
   โ”‚  โ””โ”€ TMDB: No backdrops >= 1920px โŒ
   โ”‚
   โ””โ”€ trigger_manual_fallback()
      โ”œโ”€ Send Telegram notification ๐Ÿ“ฑ
      โ””โ”€ Send email alert โœ‰๏ธ

Thursday 05:00 - User Uploads:

[User uploads to Telegram]
๐Ÿ“ท Photo 1 with caption: HERO_tt1375666
๐Ÿ“ท Photo 2 with caption: IMG1_tt1375666

Friday 09:00 UTC - Next Run:

1. Process Movie "Inception"
   โ”œโ”€ check_telegram_for_uploads(tt1375666)
   โ”‚  โ”œโ”€ Found HERO_tt1375666 โœ…
   โ”‚  โ”œโ”€ Found IMG1_tt1375666 โœ…
   โ”‚  โ””โ”€ Download both images
   โ”‚
   โ”œโ”€ process_and_save_image()
   โ”‚  โ”œโ”€ HERO โ†’ tt1375666_hero.webp (492KB) โœ…
   โ”‚  โ””โ”€ IMG1 โ†’ tt1375666_1.webp (298KB) โœ…
   โ”‚
   โ”œโ”€ Delete Telegram messages ๐Ÿ—‘๏ธ
   โ”‚
   โ””โ”€ Generate post with 2 images โœ…

Sunday Special Image Handling

For weekly recaps, the system uses a simplified token:

Token: RECAP_W5_2026 (Week number + Year)

Example Telegram message:
"Upload hero image for Week 5 recap with caption: RECAP_W5_2026"
  • Optional: If no image uploaded, recap publishes text-only
  • Non-blocking: Never waits or times out
  • Notification: Reminds user for next week if no image provided

๐Ÿ› ๏ธ Tech Stack

Core Technologies

Layer Technology Version Purpose
Frontend Jekyll + Chirpy Theme 4.3+ Beautiful, responsive static site generator
Hosting GitHub Pages - Free, fast, reliable hosting with CDN
CI/CD GitHub Actions - Automated workflows & cron scheduling
Language Python 3.11+ Core automation & data processing
AI Engine Google Gemini 2.5 Flash Philosophical content generation
Media API TMDB API v3 Movie/series metadata & images
Image Processing Pillow 10.0+ WebP conversion, resize, compression
Data Handling Pandas 2.0+ CSV parsing & manipulation
Notifications Telegram Bot API - Real-time image upload alerts
Email SMTP (Gmail) - Email notifications for manual fallback
Comments Giscus - GitHub Discussions-based comments
Search Pagefind - Fast static site search
Analytics Google Analytics GA4 Traffic tracking & insights

Python Dependencies

google-generativeai>=0.8.0    # Gemini AI SDK
pandas>=2.0.0                 # Data manipulation
requests>=2.31.0              # HTTP requests
Pillow>=10.0.0                # Image processing
python-dotenv>=1.0.0          # Environment variables

Architecture Diagram

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                          GITHUB REPOSITORY                          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                                     โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”‚
โ”‚  โ”‚   data/      โ”‚      โ”‚  scripts/    โ”‚      โ”‚   _posts/    โ”‚    โ”‚
โ”‚  โ”‚   movies.csv โ”‚      โ”‚   main.py    โ”‚      โ”‚  (auto-gen)  โ”‚    โ”‚
โ”‚  โ”‚   series.csv โ”‚      โ”‚              โ”‚      โ”‚              โ”‚    โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ–ฒโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚
โ”‚         โ”‚                     โ”‚                     โ”‚             โ”‚
โ”‚         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                     โ”‚             โ”‚
โ”‚                    โ”‚                                โ”‚             โ”‚
โ”‚                    โ–ผ                                โ”‚             โ”‚
โ”‚         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                   โ”‚             โ”‚
โ”‚         โ”‚  GITHUB ACTIONS      โ”‚                   โ”‚             โ”‚
โ”‚         โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚                   โ”‚             โ”‚
โ”‚         โ”‚  โ”‚ daily_post.yml โ”‚โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜             โ”‚
โ”‚         โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚                                 โ”‚
โ”‚         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                                 โ”‚
โ”‚                    โ”‚                                              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
         โ”‚           โ”‚           โ”‚
         โ–ผ           โ–ผ           โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ TMDB   โ”‚  โ”‚Gemini  โ”‚  โ”‚Telegramโ”‚
    โ”‚  API   โ”‚  โ”‚   AI   โ”‚  โ”‚  Bot   โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚           โ”‚           โ”‚
         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚
                     โ–ผ
         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
         โ”‚   GITHUB PAGES CDN    โ”‚
         โ”‚ ns81000.github.io/... โ”‚
         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Workflow Files

.github/workflows/daily_post.yml - Main automation

name: What's Up? Daily Post Automation

on:
  schedule:
    # Monday-Sunday at 03:00, 09:00, 12:00 UTC
    - cron: '0 3 * * *'
    - cron: '0 9 * * *'
    - cron: '0 12 * * *'
    # Sunday special at 14:00 UTC
    - cron: '0 14 * * 0'
  workflow_dispatch:
    inputs:
      skip_delay:
        description: 'Skip random delay'
        type: boolean
        default: false

jobs:
  generate-and-publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
      - name: Set up Python 3.11
      - name: Install dependencies
      - name: Run automation script
      - name: Commit and push changes

.github/workflows/pages-deploy.yml - Jekyll deployment

name: Deploy Jekyll with GitHub Pages

on:
  push:
    branches: [main]
    paths-ignore:
      - .gitignore
      - README.md
      - LICENSE

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
      - name: Setup Pages
      - name: Setup Ruby
      - name: Build with Jekyll
      - name: Upload artifact

  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to GitHub Pages

๐Ÿ“ Project Structure

WHATSUP/
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ .github/workflows/          # GitHub Actions
โ”‚   โ”œโ”€โ”€ daily_post.yml             # Main automation (4-5 posts/day)
โ”‚   โ””โ”€โ”€ pages-deploy.yml           # Jekyll build & deploy
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ _posts/                     # Generated blog posts (auto-populated)
โ”‚   โ”œโ”€โ”€ 2026-02-02-interstellar-beyond-the-stars.md
โ”‚   โ”œโ”€โ”€ 2026-02-02-breaking-bad-the-descent.md
โ”‚   โ””โ”€โ”€ ... (grows daily)
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ assets/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ img/
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ posts/              # Post images (WebP, <500KB)
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ tt0816692_hero.webp
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ favicons/           # Site icons
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ css/                    # Stylesheets
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ data/                       # Automation data
โ”‚   โ”œโ”€โ”€ movies.csv                 # 572 movies (IMDb export)
โ”‚   โ”œโ”€โ”€ series.csv                 # 105 series (IMDb export)
โ”‚   โ”œโ”€โ”€ history.log                # Processed IMDb IDs
โ”‚   โ””โ”€โ”€ metadata_db.json           # Mood/theme tracking
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ scripts/                    # Python automation
โ”‚   โ”œโ”€โ”€ main.py                    # Master script (~900 lines)
โ”‚   โ””โ”€โ”€ requirements.txt           # Python dependencies
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ _tabs/                      # Navigation pages
โ”‚   โ”œโ”€โ”€ about.md                   # About page
โ”‚   โ”œโ”€โ”€ archives.md                # Post archives
โ”‚   โ”œโ”€โ”€ categories.md              # Category listing
โ”‚   โ””โ”€โ”€ tags.md                    # Tag listing
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ _data/                      # Jekyll data files
โ”‚   โ”œโ”€โ”€ authors.yml
โ”‚   โ”œโ”€โ”€ contact.yml
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ locales/                # Translations
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ _includes/                  # Jekyll partials
โ”œโ”€โ”€ ๐Ÿ“‚ _layouts/                   # Page templates
โ”œโ”€โ”€ ๐Ÿ“‚ _sass/                      # Stylesheets (SCSS)
โ”‚
โ”œโ”€โ”€ _config.yml                    # Jekyll configuration
โ”œโ”€โ”€ Gemfile                        # Ruby dependencies
โ”œโ”€โ”€ index.html                     # Homepage
โ””โ”€โ”€ README.md                      # This file

๐Ÿš€ Quick Start

Prerequisites

  • GitHub account
  • API Keys:
  • Optional:
    • Telegram Bot Token (for notifications)
    • Gmail App Password (for email alerts)

Step 1: Fork or Clone

git clone https://github.com/Ns81000/WHATSUP.git
cd WHATSUP

Step 2: Configure GitHub Secrets

Go to Settings โ†’ Secrets and Variables โ†’ Actions โ†’ New repository secret

Secret Required How to Get
GEMINI_API_KEY โœ… Yes Google AI Studio
TMDB_API_KEY โœ… Yes TMDB Settings
GH_PAT โœ… Yes GitHub Tokens (repo scope)
TELEGRAM_BOT_TOKEN Optional @BotFather
TELEGRAM_CHAT_ID Optional @userinfobot
SMTP_EMAIL Optional Your Gmail address
SMTP_PASSWORD Optional Gmail App Password
NOTIFICATION_EMAIL Optional Where to receive alerts

Step 3: Add Your IMDb Lists

Export your IMDb watchlists as CSV and place in data/:

data/
โ”œโ”€โ”€ movies.csv    # Your movie list
โ””โ”€โ”€ series.csv    # Your TV series list

Required CSV columns: Const (IMDb ID), Title, Year

Step 4: Enable GitHub Pages

  1. Go to Settings โ†’ Pages
  2. Source: GitHub Actions
  3. Save

Step 5: Run Manually (Optional)

  1. Go to Actions โ†’ What's Up? Daily Post Automation
  2. Click Run workflow
  3. Check Skip random delay for faster testing

โš™๏ธ Configuration

_config.yml (Key Settings)

# Site Identity
title: "What's Up?"
tagline: Exploring the Philosophical Depths of Cinema
url: "https://ns81000.github.io"
baseurl: "/WHATSUP"

# Timezone
timezone: Asia/Kolkata

# Comments (Giscus)
comments:
  provider: giscus
  giscus:
    repo: Ns81000/WHATSUP
    repo_id: # Get from giscus.app
    category: Announcements
    category_id: # Get from giscus.app

Schedule Customization

Edit .github/workflows/daily_post.yml:

on:
  schedule:
    # Format: 'minute hour * * day-of-week'
    - cron: '0 3 * * *'   # Daily at 03:00 UTC (08:30 IST)
    - cron: '0 12 * * *'  # Daily at 12:00 UTC (05:30 IST)
    - cron: '0 9 * * 0'   # Sundays only at 09:00 UTC
    - cron: '0 14 * * 0'  # Sundays only at 14:00 UTC

๐Ÿ“Š Data Sources

Movies (572 titles)

The movie list includes carefully curated selections across:

Category Examples
๐ŸŽฌ Auteur Cinema Kubrick, Nolan, Tarantino, Villeneuve
๐Ÿฆธ Superhero MCU, DCEU, X-Men, Spider-Man
๐Ÿš€ Sci-Fi Star Wars, Blade Runner, Dune
๐ŸŽญ Drama Shawshank, Godfather, Schindler's List
๐Ÿ‡ฎ๐Ÿ‡ณ Bollywood Dangal, 3 Idiots, Lagaan
๐ŸŽจ Animation Pixar, Ghibli, DreamWorks
๐ŸŒ International Parasite, Amรฉlie, Pan's Labyrinth

TV Series (105 titles)

Category Examples
๐Ÿ“บ Prestige TV Breaking Bad, The Wire, Mad Men
โš”๏ธ Fantasy Game of Thrones, The Witcher
๐Ÿ”ฌ Sci-Fi Stranger Things, Black Mirror
๐Ÿ˜‚ Comedy The Office, Brooklyn Nine-Nine
๐ŸŽญ Drama Better Call Saul, Succession
๐Ÿฆธ Superhero The Boys, Daredevil

๐Ÿ”ง Troubleshooting

Common Issues

Problem Solution
Workflow not running Check if Actions are enabled in repo settings
No posts generated Verify API keys are set correctly in Secrets
Images missing TMDB may not have images; check Telegram for fallback
Build failing Check Gemfile.lock and Ruby version compatibility
Posts not appearing Wait for Jekyll build to complete (~2-3 mins)

Logs

Check workflow logs at Actions โ†’ [Workflow Run] โ†’ generate-and-publish


๐Ÿ“„ License

This project uses the MIT License.

The Jekyll theme Chirpy is also MIT licensed.


๐Ÿ™ Acknowledgments

Resource Purpose
TMDB Movie/series metadata and images
Google Gemini AI content generation
Chirpy Theme Beautiful Jekyll theme
IMDb Curated movie/series lists
Giscus GitHub-based comments

What's Up? โ€” Exploring the philosophical depths of cinema ๐ŸŽฌ๐Ÿง 

Made with โค๏ธ and ๐Ÿค–

About

A fully autonomous blog that generates philosophical movie and TV series analyses using AI

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors