uplynxed / twitter-archive Goto Github PK
View Code? Open in Web Editor NEWArchival page for twitter accounts
License: MIT License
Archival page for twitter accounts
License: MIT License
Currently only working in main user's bio for some reason.
Currently it just disappears due to layout changes - make it a sidebar slider using bootstrap.
Not having it severely limits functionality.
Loads infinitely / no 404 type message
The following error is getting thrown on interaction with working AND broken popovers, as well as mouseenter event on the document itself?
tooltip.js:444 Uncaught TypeError: Cannot read properties of undefined (reading 'trigger')
at un._setListeners (tooltip.js:444:35)
at new cn (tooltip.js:123:10)
at new un (popover.js:42:1)
at HTMLDocument.<anonymous> (tweets.js:1543:13)
at HTMLDocument.dispatch (jquery.min.js:2:43184)
at y.handle (jquery.min.js:2:41168)
at HTMLDocument.c (rocket-loader.min.js:1:9405)
_setListeners @ tooltip.js:444
cn @ tooltip.js:123
un @ popover.js:42
(anonymous) @ tweets.js:1543
dispatch @ jquery.min.js:2
y.handle @ jquery.min.js:2
c @ rocket-loader.min.js:1
Sidebar stays open after navigating.
This might obstruct visibility to the content on smaller viewports and lead to the user not realizing anything has happened.
"-- hidden tweets --":
"Specify the ID's of any tweets to be hidden from the archive (they will still be in the data, but not rendered).",
"hidden": [],
Primarily so that any changes to the layout of the page doesn't require replacing index.html in active installations due to the title and meta tag customization being required to be done in it due to social media link embedding limitations.
Related to #5, keep template file size in mind.
Read up on some JSRender/JSViews best practices and then break up templates into more modular parts.
Make them clickable but unscrapable
As with the picture content, video content should cycle through the given URL substitutions until we get one that (properly) works.
Currently twitter videos are playing for a second before they stop. We need to figure out how to keep it playing, or attempt to load a local archived version instead (if available).
from:@username
, mentions:@username
)This can of course be customized, but it's a good idea to have a proper default.
The current page loads in JS and JSON from external files and remote locations, which does not work for local files.
Solution:
Compile all files into a single html page and serve it as a download option.
Issues:
loadConfig()
and loadTweets()
functions will need refactoring somehow to not load from external files if the contents of those files are already present in the html.TODO:
loadConfig()
and loadTweets()
to fix the issue mentioned aboveCan be used for some boilerplate about text regarding the project as well as some customizable text by the person setting up the archive.
Also potentially a place to display license info, like for the Twemojis #24
When changing a filter on mobile, the offcanvas sidebar gets refreshed with the rest of the content area causing it to be closed without the state of the page being updated, thus breaking scrolling and any interaction. Only workaround is to do a full page reload.
Predetermined in the config.json file with the options "light", "dark" and "auto".
Implement auto option to adhere to a user's browser settings
Implement the option to allow or disallow theme toggling
Implement theme toggling
May require some kind of settings modal or offcanvas sidebar.
Could expand and implement the custom icon font designed for valk.cam
Twitter offers a way to archive your own account, so look into how the data is saved for that and figure out if we can parse it to be compatible with this project.
The wayback machine (WBM) rewrites all the media URLs even on a javascript and json entries level.
This means all media URLs are being rewritten to their web.archive.org archived counterparts.
However, when trying to retrieve a URL stored in an attribute in the html, the WBM rewrites that URL as well, removing the web.archive.org prefix from it at some point between the value in the html and the function in js.
This is an issue because we are storing media file replacements with the keys set to the (cleaned up) original media file URL.
Because of WBM messing with the URLs, all keys (and all property values) have the prefix, but the value we retrieved does not. We can not use this value to retrieve its associated media_replacements object. Rewriting the URL to include the prefix again might also not be an issue as the timestamp of when the URL was archived is part of that prefix, and there is probably no way to tell what it might be.
Potential fixes:
Problems with this approach:
Blocked by #4
"-- favorite tweets --":
"Specify the ID's of any tweets to be set as favorites by default.",
"favorites": [],
Confirmed to crash in Opera GX by at least 1 person.
Can't replicate locally.
Implement a feature to allow for more familiar pathing.
Issues:
Related to #3
See related issue for the problems it creates in the "front-end".
TODO
Problems happen when the cards fill up a lot of vertical space:
I think a programmatic solution is in order, unless Firefox finally releases its :has() CSS functionality.
Related commit: ac6791c
Allow sorting by:
Blocked by #3 as we need to filter the list before sorting.
Potentially making use of the newer substituteMedia() function to make sure we grab the highest quality media.
Current testing seems to suggest this is happening in retweeted quote tweets.
The specific example is related to tweet #INTERRO/status/1373556489391067137, which has a v2 format.
Utilize the format as seen in config.aliases
:
"aliases": [
{
"current": "INTERRO",
"former": ["heyinterrobang", "InterroTalks"]
}
]
With the current implementation of letting the browser resolve the best working image source in order of (original > local > backup) means that every time we load any image media it has to try loading the failed sources again. This gets bad especially with user avatars.
Given that we will have already resolved most media down to a working source at least once, we should store that source and use that directly for subsequent instances of the media.
We could even store this info in localStorage to save us from having to do it all again on a reload.
Solution may be similar to favorite tweets export/import feature
See also #4
Figure out a way to remove any ads that may have snuck into the json archive
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.