155 lines
6.4 KiB
Plaintext
155 lines
6.4 KiB
Plaintext
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 (#scraper)
|
|
- panic: Unknown card type: 3691233323:periscope_broadcast
|
|
- panic: Unknown card type: 745291183405076480:broadcast
|
|
|
|
TODO: video-bitrates (#scraper)
|
|
- add "bitrate" and "available bitrates" fields
|
|
- option to upgrade or downgrade video quality
|
|
|
|
TODO: videos-view-count (#scraper, #bug)
|
|
- video view counts don't parse properly in APIv2
|
|
|
|
TODO: video-not-downloading (#scraper, #bug)
|
|
- https://twitter.com/JustinPulitzer/status/1496709662602932224
|
|
|
|
TODO video-source-user (#scraper)
|
|
- extract source user information from API videos (i.e.., someone shares a video from someone else)
|
|
|
|
TODO: get-user-tweets-user-not-in-database (#scraper)
|
|
- subcommand `get_user_tweets` should fetch the user first instead of just failing
|
|
|
|
TODO: bash-completions
|
|
|
|
TODO: twitter-spaces-add-is-details-available-flag (#scraper, #spaces)
|
|
|
|
TODO: scrape-media-tab (#scraper)
|
|
|
|
TODO: scrape-quote-tweets (#scraper)
|
|
|
|
TODO post-tweets
|
|
- post tweets
|
|
- reply to a tweet
|
|
- quote-tweet a tweet
|
|
- retweet a tweet
|
|
|
|
TODO spaces-fetch-participants-info (#scraper)
|
|
- 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 (#scraper, #spaces)
|
|
- you can fetch the stuff that was posted in the jumbotron
|
|
|
|
TODO tweets-with-italics (#scraper)
|
|
- 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
|
|
- right now it will try and then produce an HTTP error (404)
|
|
|
|
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 (#scraper)
|
|
- 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: 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 (#scraper)
|
|
- Preserve tombstone after re-scraping
|
|
|
|
TODO: new-content-type
|
|
- https://twitter.com/itsbackwereover/status/1757947530506043872
|
|
|
|
TODO: mark-invalidated-sessions-invalid
|
|
- When a session is marked invalid by Twitter, it should be marked as such and surfaced in the UI
|
|
|
|
TODO: SQL-logger (#webserver)
|
|
|
|
TODO: const-select-fields (#webserver, #code-quality)
|
|
- 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 (#webserver)
|
|
- 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 (#webserver)
|
|
- 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: non-htmx-500-errors (#webserver)
|
|
- non-HTMX 500 errors show a weird HTML page
|
|
|
|
TODO: refactor-compound_queries_test-file (#webserver)
|
|
- Move the tests for user feeds into the compound_queries_ssf_test file
|
|
|
|
TODO: incomplete-threads (#webserver)
|
|
- when previous tweet in thread is missing, put a "fetch tweet" button to get it
|
|
|
|
TODO: dms-search (#webserver, #dms)
|
|
|
|
TODO: search-terms-highlighted (#webserver)
|
|
- on Search page, highlight matches for the search keywords
|
|
|
|
TODO: profile-image-template (#webserver, #code-quality)
|
|
- There are a lot of places that use a circle profile image aside from author-infos
|
|
|
|
TODO: send-message-last-read-event (#webserver)
|
|
- When a user sends a message, their last-read-event should be updated to that message ID immediately (no few-second delay in UI)
|
|
|
|
TODO: emoji-rewrite (#webserver)
|
|
- get rid of the "database.js" stuff in the emoji picker
|
|
- remove whatever uses `crypto.subtle` to load the emoji list
|
|
|
|
TODO: windows-session-list (#release, #windows)
|
|
- Check that sessions load as @Offline_Twatter instead of @test\Offline_Twatter on Windows
|
|
|
|
TODO: conversation-thread-missing-tweets (#scraper, #bug)
|
|
- In a conversation thread (replies under a tweet), if a user is blocked, the tweet response can be empty
|
|
- These are just completely invisible on Twitter (render as nothing)
|
|
- e.g.: https://x.com/sirbughunter/status/1479540319410696192
|
|
|
|
TODO: scrape-user-feed-removes-pinned-tweet (#scraper, #bug)
|
|
- Scraping a user feed unsets the user's pinned tweet
|
|
|
|
TOOD: notifications-duplicate-bug (#scraper, #bug)
|
|
- Older notifications often appear to get duplicated, sometimes quite a few times
|
|
- Probably related to the fact that notifications can replace old ones but we just treat them as a new notification instance
|
|
|
|
TODO: dm-reaccs-popup-list (#dms, #webserver, #reaccs)
|
|
- on-click popup showing who sent which reacc
|
|
|
|
TODO: sqlite-query-optimizing
|
|
- https://sqlite.org/cli.html#index_recommendations_sqlite_expert_
|
|
- https://sqlite.org/eqp.html
|
|
|
|
TODO: htmx-scrollBehavior (#webserver, #ux)
|
|
- Investigate `htmx.config.scrollBehavior = "smooth"`: https://htmx.org/migration-guide-htmx-1/
|
|
|
|
TODO: deprecated-offline-follows
|
|
- Offline Follows doesn't do much userful anymore
|
|
|
|
TODO: offline-timeline-vs-user-timeline
|
|
|
|
TODO: go-stdlib-path-vs-filepath (#code-quality)
|
|
|
|
TODO: show-retweet-icon-in-ui (#webserver)
|
|
- The UI should show whether the active user has retweeted the tweet, same as with "likes"
|