]> git.gir.st - subscriptionfeed.git/blob - README.md
rewrite TODOs
[subscriptionfeed.git] / README.md
1 # Unnamed Youtube Frontend
2
3 Note: this is a work in progress, still unreleased software. Feel free to look around, but keep in mind that this repository will move servers for its public release.
4
5 Contributors wanted! Please send me an email (see commit log) or contact `girst` on irc.freenode.net (hanging out in `#invidious` for now)
6
7 Test Instance: http://delta.gir.st:8000/ (will move in the future)
8
9 TODO:
10 - reorganize using departmental flask blueprints:
11 forces decoupling of all youtube <-> reddit and allows 3rd party extensions
12 - reddit blueprint:
13 - user should be able to subscribe to subreddits
14 - show a frontpage-like feed, pin/hide videos (linking their reddit comments)
15 - abstract database access
16 we want to be able to choose between at least sqlite and postgres
17 - implement 'dangerous' functions as disablable blueprint
18 - search through invidious-api
19 - proxy for subtitles, hls/dash manifests, ...
20 - subtitles on /watch
21 - hls.js for livestreams
22 - proxy for geolocked videos?
23 - modern css frontend (flexbox)
24 - document all the things
25 - quality of life improvements:
26 - asynchronically call update-subs and pull-subs on subscribing, iff necessary
27 - get_video_info on incoming websub-webhook to get exact published date
28 - development-friendly error handling:
29 - log unkown info/endcards to file
30 - save get_video_info/reddit.json/etc with traceback
31 - proper support for sponsorblock (cached db?)
32 - cleanups:
33 - remove jsonify()
34 - fix all the TODOs and XXXs
35 - find a name!
36
37 wishlist:
38 - proxy googlevideo (and probably thumnails) responses
39
40 # Installation
41
42 see INSTALL file
43
44 # Usage
45
46 Since user authentication is not yet implemented, users are for now identified by a randomized token. To "log in", just visit `/feed/subscriptions?token=....`. at the bottom, click 'Manage Subscriptions' and paste the UC...-URLs of channels you want to subscribe to.
47
48 If no token is specified, it defaults to `guest`. Since this is a readonly account, you can populate it by directly writing into the database:
49
50 first, prepare a file (guest.csv) of channel ids like so:
51 UCxxxxxxxxxxxxxxxxxxxxxxxx,guest,channel
52 then from the sqlite3 console, issue:
53 .mode csv
54 .import guest.csv subscriptions
55
56
57 # Notes
58 - caching external api requests
59 currently using in-memory-backend, which is purged every 10minutes. a real installation should use redis, which should scale better and handle purging for us.
60 the in-memory cache conflicts with gunicorn's worker model: which is a sepreate process for each request. switch to mulitple gthreads on a single worker to avoid getting the cache torn down after every request (note that threads may leak memory, if my observations from $dayjob are still valid).
61 - neater sqlite output:
62 .mode column
63 .headers on
Imprint / Impressum