]> git.gir.st - subscriptionfeed.git/blob - README.md
switch to threaded workers, so in-memory-caching works
[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 - implement authentication
11 - abstract database access, implement nice config system
12 - don't hardcode reddit-links in the template
13 - use html error pages for watch?show=metadata
14 - use invidious api for channels/playlists/search (with query parameter provider=https://invidio.us/api or similar)
15 - rewrite frontend-'card' with flexbox
16 https://css-tricks.com/snippets/css/a-guide-to-flexbox/
17 - write documentation, theory of operation, overview diagram, risk (of getting banned) assessment, ...
18 - asynchronically call update-subs and pull-subs after subscribing to a channel
19 - we are currently misclassifying some subscription videos as old, when they are uploaded unlisted and made public later. this could be solved by querying get_video_info for websub-videos that are not yet in the database to get the actual published date.
20
21 wishlist:
22 - proxy googlevideo (and probably thumnails) responses
23
24 # Installation
25
26 see INSTALL file
27
28 # Usage
29
30 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.
31
32 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:
33
34 first, prepare a file (guest.csv) of channel ids like so:
35 UCxxxxxxxxxxxxxxxxxxxxxxxx,guest,channel
36 then from the sqlite3 console, issue:
37 .mode csv
38 .import guest.csv subscriptions
39
40
41 # Notes
42 - caching external api requests
43 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.
44 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).
Imprint / Impressum