Sunny's Notebook

Censor: February's Films

Short reviews of every movie I watched in February.


This year, I'm trying to watch more movies. To keep myself accountable, I'm writing short reviews for the ones I ended up watching at the end of each month. That's the short version – for a longer one, you can check out the January edition.

For this post, I added links to all movies and split up the collage so you don't have to scroll up and down all the time.

I also wrote my own collage generator, since the one I used previously reversed the order of the posters, putting the one I watched most recently at the beginning, which was mildly confusing. This also means that the collage now has a somewhat higher quality – and that the poster for Dune: Part Two is in Russian for some reason. Oh well, you can't have everything. Also, some movies still don't have a poster at all, but that's on TMDB, not me!

Click here to view the generator script if you're interested. It needs Linux, curl, ImageMagick and jq.
#!/usr/bin/env bash

USER="" # Your Trakt username
MONTH="" # 2024-02 in this case
TRAKT="" # A Trakt client ID
TMDB="" # A TMDB API key

START="$MONTH-01T00:00:00.000Z"
END="$(date -d "$START + 1 month" "+%Y-%m")-01T00:00:00.000Z"

DIRECTORY="$(mktemp -d)"
INDEX=1

echo "Retrieving Trakt history..."

curl "https://api.trakt.tv/users/$USER/history/movies?start_at=$START&end_at=$END&limit=99" -H "trakt-api-key: $TRAKT" -s |
        jq "reverse | .[].movie.ids.tmdb" |
        while IFS= read -r MOVIE; do
                FILE="$DIRECTORY/Poster $(printf "%02d" "$INDEX").jpg"

                echo "Getting image URL for $MOVIE..."
                URL="https://image.tmdb.org/t/p/original$(curl "https://api.themoviedb.org/3/movie/$MOVIE/images?api_key=$TMDB" -s | jq -r ".posters[0].file_path")"

                echo "Downloading image for $MOVIE..."
                curl "$URL" -o "$FILE" -s

                echo "Resizing downloaded image..."
                convert "$FILE" -resize 500x750^ -gravity Center -extent 500x750 "$FILE" 2>/dev/null

                ((INDEX++))
        done

echo "Generating montage..."
montage "$DIRECTORY/Poster "* -background none -geometry 500x750+0+0 -tile x3 "$DIRECTORY/Montage.jpg" 2>/dev/null

echo "Splitting up montage..."
convert "$DIRECTORY/Montage.jpg" -crop x3@ -scene 1 "$DIRECTORY/Row %d.jpg"

for FILE in "$DIRECTORY/Row "*; do
        [[ $FILE =~ Row\ (.*)\.jpg ]]

        echo "Uploading row ${BASH_REMATCH[1]} to Imgur..."
        echo "Uploaded to $(curl https://api.imgur.com/3/upload -F "image=@$FILE" -s | jq -r .data.link)."
done

echo "Deleting temporary files..."
rm -r "$DIRECTORY"

This month features the most exhausting cinema experience of my life, an animated film that made me feel like a kid again, and everything in between. Let's get started...





Even though I was sick for a good week and didn't really have the attention span for a full movie (meaning I just ended up watching a lot of Taskmaster instead), I still managed to watch 22 films in 29 days – a step up from last month! I'm really satisfied with how this challenge is going so far.

By the way, if you want to follow along, I have profiles on Trakt and Letterboxd, where I'm tracking what I watch as I go. Until next month!