TODO user-images-extract-to-table: User profile images and banner images => extract to table. Add `is_downloaded` column. Add test for double-downloading a user, shouldn't change the write-times on these files TODO update-all TODO broadcast-cards panic: Unknown card type: 3691233323:periscope_broadcast panic: Unknown card type: 745291183405076480:broadcast TODO video-bitrates - add "bitrate" and "available bitrates" fields - option to upgrade or downgrade video quality TODO: videos-view-count - videos don't parse properly in APIv2 TODO: APIv2-pinned-tweets - feed with pinned tweet TODO video-not-downloading: https://twitter.com/JustinPulitzer/status/1496709662602932224 TODO get-user-tweets-user-doesn't-exist TODO bash-completions - Should have bash completions. TODO twitter-spaces - add `is_details_available` flag TODO authenticated-requests - media tab - quote-tweets - notifications TODO post-tweets - post tweets - reply to a tweet - quote-tweet a tweet - retweet a tweet TODO spaces-fetch-participants-info - some user information is available in a Spaces result. Right now we just render them as null users (handle = "", id = 0) if they're not fetched already - distinguish whether someone was an admin in the space or not TODO spaces-fetch-sharings - you can fetch the stuff that was posted in the jumbotron TODO tweets-with-italics - https://twitter.com/exit_org/status/1656813511572443141 TODO authenticated-only-request-warning - warn when attempting to run requests which require authentication without a session active TODO unknown-user-upgrading - if an unknown user (created to satisfy SQLite integrity check on user_id foreign key) has user details fetched, the "Join Date" and other zero-value fields should update with the new value TODO apiv2-tombstones - on Tweet Detail: - tombstones in replies to the focused tweet - on User Feed: - tombstones (e.g, "Age restricted") that show up as top-level entries - keep in mind that these might be retweets; the entry-id is the RetweetID, not the TweetID TODO tidy-up-command-line-flags - make flags that are part of a subcommand go after that subcommand (e.g., `twitter get_user_tweets -n 200 ...`) TODO: fatih-color - replace "terminal-utils" with "fatih/color" TODO: mobile-requests - implement mobile versions of various requests - Check in `pkg/scraper/test_responses/mobile_requests` TODO: search-bottom-cursor - Entry type "TimelineReplaceEntries" that replaces the cursor in the timeline instead of the new timeline having a new one - As first step, need helper function that returns the []Instruction element in a APIV2Response (not just the MainInstruction which is TimelineAddEntries) - since different requests have different paths to the Instructions, e.g., Data.User.Result.Timeline.Timeline.Instructions vs Data.Home.HomeTimelineUrt.Instructions, etc TODO: newer-version-tombstone - Preserve tombstone after re-scraping TODO: failed-tweets - https://twitter.com/_HARVEY__DENT_/status/1755665502385377720 - "Empty tweet": https://twitter.com/wispem_wantex/status/1581333495393107968 - "video not available in your location" (geoblock) (this one should be fixed, but check it): https://twitter.com/espnmma/status/1764026985775333761 TODO: new-content-type - https://twitter.com/itsbackwereover/status/1757947530506043872 Webserver --------- TODO: SQL-logger TODO const-select-fields - There's a few queries that use "select ..." and write out all the fields. Put the field names in one spot TODO compound-query-structs - Right now the result structs for the compound queries (e.g., "Feed", "TweetDetail") are in the `persistence` package. They don't go there probably TODO: login-routes-tests - Make the scraper.API object injectable somehow (get rid of singleton pattern) and add tests for login and change-session sequences - Also test profile.ListSessions() TODO: webserver-session-arg-active-user - make the active user get set on initializing the Application object if a --session flag is given TODO: progressive-web-app TODO: paste-twitter-urls-in-search-bar - pasting a link from twitter.com into the search bar should handle it properly - space TODO: show-errors-in-UI - if an HTTP request fails, show an error in the UI somehow - scrape failed due to rate limiting - non-HTMX 500 errors now show a weird HTML page TODO: refactor-compound_queries_test-file - Move the tests for user feeds into the compound_queries_ssf_test file TODO: features-from-qt-version - Add all features from the Qt app to the web UI - when previous tweet in thread is missing, put a "fetch tweet" button to get it TODO: dms - unshorten URLs - fetch chat room history on opening TODO: search-terms-highlighted - on Search page, highlight matches for the search keywords TODO: profile-image-template - There are a lot of places that use a circle profile image aside from author-infos Windows Build ------------- TODO: windows-session-list - Check that sessions load as @Offline_Twatter instead of @test\Offline_Twatter on Windows TODO: windows-automated-build - build and upload to offline-twitter.org on release branches