#!/bin/bash # 4chan-timestamp-search.sh # Produces list of search query URLs from internal Unix timestamp filename used by 4chan and it's archives. # Each query returns all archived posts with images posted in the exact second as target file. # # Usage: # $ . 4chan-timestamp-search.sh 1570975531526 # $ . 4chan-timestamp-search.sh /home/user/path/1570975531526.jpg # $ . 4chan-timestamp-search.sh https://example.com/1570975531526s.jpg # # 4chan filename timestamp is Unix time in milliseconds. # # References: # https://en.wikipedia.org/wiki/Unix_time # https://en.wikipedia.org/wiki/ISO_8601 # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones #[ TZ=US/Eastern ] and [ TZ=America/New_York ] timezones are interchangeable # # Valid time formats for FoolFuuka archives: # 2019-10-13T14:05:31+04:00 # 2019-10-13 14:05:31+04:00 # 2019-10-13T10:05:31 # 2019-10-13 10:05:31 # # Offset can be anything: # 2019-10-13 15:05:31+05:00 # # Passing time zones does something # https://desuarchive.org/r9k/search/start/2019-11-03 01:00:00 EST/order/asc # https://desuarchive.org/r9k/search/start/2019-11-03 01:00:00 EDT/order/asc # for FILE_PATH in "$@";do FILENAME=$(basename "$FILE_PATH") # # strip extension # 1570975531526.jpg > 1570975531526 # 1570975531526s.jpg > 1570975531526s # EXTENSION_STRIP="${FILENAME%%.*}" # # handle thumbnail names # 1570975531526s > 1570975531526 # CHAN4_TS="${EXTENSION_STRIP%%s*}" UNIX_TS="$(("$CHAN4_TS"/1000))" POST_TIME_UTC="$(date --utc --date @"$UNIX_TS" +'%Y-%m-%dT%H:%M:%S %Z')" POST_TIME="$(TZ=America/New_York date --date @"$UNIX_TS" +'%Y-%m-%dT%H:%M:%S')" POST_TIME_TZ="$(TZ=America/New_York date --date @"$UNIX_TS" +'%Y-%m-%dT%H:%M:%S %Z')" echo " File: "$FILENAME"" echo "Universal time: "$POST_TIME_UTC"" echo " 4chan time: "$POST_TIME_TZ"" echo "https://desuarchive.org/_/search/filter/text/start/"$POST_TIME"/end/"$POST_TIME"/order/asc" echo "https://thebarchive.com/_/search/filter/text/start/"$POST_TIME"/end/"$POST_TIME"/order/asc" echo "https://archived.moe/_/search/filter/text/start/"$POST_TIME"/end/"$POST_TIME"/order/asc" echo "https://archive.4plebs.org/_/search/filter/text/start/"$POST_TIME"/end/"$POST_TIME"/order/asc" echo "https://archiveofsins.com/_/search/filter/text/start/"$POST_TIME"/end/"$POST_TIME"/order/asc" echo "https://archive.palanq.win/_/search/filter/text/start/"$POST_TIME"/end/"$POST_TIME"/order/asc" echo "https://boards.fireden.net/_/search/filter/text/start/"$POST_TIME"/end/"$POST_TIME"/order/asc" # Text-only archive (2004 - 2014) echo "https://old.sage.moe/_/search/filter/text/start/"$POST_TIME"/end/"$POST_TIME"/order/asc" # search is disabled on some b4k boards echo "https://arch.b4k.co/_/search/filter/text/start/"$POST_TIME"/end/"$POST_TIME"/order/asc" # date searches don't work at all # echo "https://archive.alice.al/_/search/filter/text/start/"$POST_TIME"/end/"$POST_TIME"/order/asc" # 4plebs errors and asks to narrow search when quering all boards with /_/ BOARDS_4PLEBS=("adv" "hr" "o" "pol" "s4s" "sp" "tg" "trv" "tv" "x" "f") for BOARD in "${BOARDS_4PLEBS[@]}";do echo "https://archive.4plebs.org/"$BOARD"/search/filter/text/start/"$POST_TIME"/end/"$POST_TIME"/order/asc" done ################################################################################### # Warosu only searches one board by design # # So far I couldn't find ways to make it search anything narrower than than 1 day # # Each post has Unix timestamp embedded as span title attribute (tooltip): # # Sat Sep 23 12:56:40 2023 # ################################################################################### POST_DAY="$(TZ=US/Eastern date --date @"$UNIX_TS" +'%Y-%m-%d')" NEXT_DAY="$(TZ=US/Eastern date --date "$POST_DAY + 1 day" +'%Y-%m-%d')" echo "" echo " Post day: [$POST_DAY]" echo " Next day: [$NEXT_DAY]" BOARDS_WAROSU=("3" "biz" "cgl" "ck" "diy" "fa" "ic" "jp" "lit" "sci" "vr" "vt") for BOARD in "${BOARDS_WAROSU[@]}";do echo "https://warosu.org/"$BOARD"/?task=search2&search_datefrom="$POST_DAY"&search_dateto="$NEXT_DAY"" done echo "" done