]> git.gir.st - subscriptionfeed.git/blob - README.md
disable subtitles, as they raise CORS errors
[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 - better checking for livestreams
21 - implement hls.js
22 - infocard/endcard errors should get written to file instead of template. instance owner should submit them to me.
23 - CORS error on subtitles from 3rd party
24 neither the video nor the subtitles serve CORS headers. since they come
25 from different domains, the subtitles are blocked. adding
26 crossorigin="anonymous" will prevent requests if they don't serve CORS headers.
27
28 wishlist:
29 - proxy googlevideo (and probably thumnails) responses
30
31 # Installation
32
33 see INSTALL file
34
35 # Usage
36
37 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.
38
39 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:
40
41 first, prepare a file (guest.csv) of channel ids like so:
42 UCxxxxxxxxxxxxxxxxxxxxxxxx,guest,channel
43 then from the sqlite3 console, issue:
44 .mode csv
45 .import guest.csv subscriptions
46
47
48 # Notes
49 - caching external api requests
50 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.
51 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