]> git.gir.st - subscriptionfeed.git/log
subscriptionfeed.git
3 years agoworking HLS proxy (for livestreams)
girst [Sun, 3 Jan 2021 14:47:37 +0000 (15:47 +0100)]
working HLS proxy (for livestreams)

3 years agofix flask_logger()
girst [Tue, 9 Mar 2021 15:13:29 +0000 (16:13 +0100)]
fix flask_logger()

3 years agoadd note about api key
girst [Tue, 9 Mar 2021 15:11:35 +0000 (16:11 +0100)]
add note about api key

3 years agotakes some shortcuts with captcha busting
girst [Fri, 5 Mar 2021 20:32:50 +0000 (21:32 +0100)]
takes some shortcuts with captcha busting

3 years agointegrate anticaptcha into common and clean it up a bit
girst [Fri, 5 Mar 2021 19:08:13 +0000 (20:08 +0100)]
integrate anticaptcha into common and clean it up a bit

doesn't make sense as a seperate blueprint; can be disabled in the
config.

3 years ago[WARNING: CONFIG CHANGE] reorganize webhooks config
girst [Fri, 5 Mar 2021 18:20:15 +0000 (19:20 +0100)]
[WARNING: CONFIG CHANGE] reorganize webhooks config

3 years agoworking prototype for anticaptcha
girst [Fri, 5 Mar 2021 17:39:26 +0000 (18:39 +0100)]
working prototype for anticaptcha

needs heavy cleanup!

3 years agomove anticsrf out of __init__, provide decorator for opting out
girst [Fri, 5 Mar 2021 15:47:56 +0000 (16:47 +0100)]
move anticsrf out of __init__, provide decorator for opting out

this also fixes running the webhooks blueprint on the same flask
instance as the frontend, which couldn't have worked before this. oops!

3 years agoswitch browse endpoint from browse_ajax to youtubei/v1/browse
girst [Wed, 3 Mar 2021 19:46:10 +0000 (20:46 +0100)]
switch browse endpoint from browse_ajax to youtubei/v1/browse

apparently, https://youtubei.googleapis.com/youtubei/v1/browse is the same endpoint.
see also:
https://github.com/TeamNewPipe/NewPipeExtractor/issues/566
https://github.com/iv-org/invidious/issues/1838
https://github.com/ytdl-org/youtube-dl/issues/28289

3 years agoallow trailing slash on /r/<subreddit>
girst [Thu, 21 Jan 2021 07:11:57 +0000 (08:11 +0100)]
allow trailing slash on /r/<subreddit>

3 years agosupport /embed/videoseries
girst [Wed, 13 Jan 2021 12:03:07 +0000 (13:03 +0100)]
support /embed/videoseries

3 years agoRestructure readme
girst [Sun, 3 Jan 2021 17:20:25 +0000 (18:20 +0100)]
Restructure readme

3 years agofix subreddit manager's button styling
girst [Sun, 3 Jan 2021 16:35:26 +0000 (17:35 +0100)]
fix subreddit manager's button styling

3 years agoremove obsolete invidious plugin
girst [Sun, 3 Jan 2021 16:28:02 +0000 (17:28 +0100)]
remove obsolete invidious plugin

3 years agoclean up playlist error handling
girst [Sun, 3 Jan 2021 16:13:31 +0000 (17:13 +0100)]
clean up playlist error handling

support fallback for mix playlists (RD<video_id>, e.g. RDFiThjLcB1Qk)

3 years agosupport /embed/videoseries urls
girst [Sun, 3 Jan 2021 14:50:15 +0000 (15:50 +0100)]
support /embed/videoseries urls

/embed/videoseries?list=PLZHQObOWTQDNPOjrT6KVlfJuKtYTftqH6&autoplay=0

3 years agoupdate channel sort ui
girst [Sat, 12 Dec 2020 19:44:10 +0000 (20:44 +0100)]
update channel sort ui

remove obsolete entries, can't sort search, reword.

3 years agofix channel playlists tab
girst [Sat, 12 Dec 2020 19:32:50 +0000 (20:32 +0100)]
fix channel playlists tab

now uses v3 formatted protobuf.

3 years agoadd youtube-nocookie link
girst [Wed, 9 Dec 2020 17:58:19 +0000 (18:58 +0100)]
add youtube-nocookie link

useful for livestreams, which i'm still procrastinating implementing

3 years agoexpose feature and extra filters
girst [Sun, 6 Dec 2020 18:14:17 +0000 (19:14 +0100)]
expose feature and extra filters

3 years agoadd comment explaning 0:00 length subscription videos
girst [Sun, 6 Dec 2020 17:56:54 +0000 (18:56 +0100)]
add comment explaning 0:00 length subscription videos

3 years agofix canonicalisation of legacy usernames
girst [Sun, 6 Dec 2020 17:46:19 +0000 (18:46 +0100)]
fix canonicalisation of legacy usernames

3 years agoadd browse/ override for /<something> endpoint
girst [Mon, 30 Nov 2020 16:19:54 +0000 (17:19 +0100)]
add browse/ override for /<something> endpoint

doing this as an override, so the /youtube module doesn't gain a
dependency on this endpoint.

3 years agofollowup-fix for playlists in feed
girst [Mon, 30 Nov 2020 15:42:24 +0000 (16:42 +0100)]
followup-fix for playlists in feed

this caused videos that are in any playlist to only be displayed if the
user subscribed via playlists. fixed.

3 years agoshow playlist subscriptions in /feed/subscriptions
girst [Mon, 30 Nov 2020 15:39:08 +0000 (16:39 +0100)]
show playlist subscriptions in /feed/subscriptions

"slight" oversight. :/

3 years agoslightly better /<something> error message
girst [Sun, 29 Nov 2020 02:28:21 +0000 (03:28 +0100)]
slightly better /<something> error message

3 years agofix channel search
girst [Sun, 29 Nov 2020 02:24:13 +0000 (03:24 +0100)]
fix channel search

3 years agomake sure header+<video> fit above the fold
girst [Tue, 17 Nov 2020 13:50:47 +0000 (14:50 +0100)]
make sure header+<video> fit above the fold

3 years agodocument python version requirements
girst [Sat, 31 Oct 2020 12:24:03 +0000 (13:24 +0100)]
document python version requirements

3 years agoclean up broken-youtube-response handling
girst [Mon, 26 Oct 2020 22:04:48 +0000 (23:04 +0100)]
clean up broken-youtube-response handling

3 years agolink to sponsor.ajay.app; simplify js
girst [Mon, 26 Oct 2020 21:53:27 +0000 (22:53 +0100)]
link to sponsor.ajay.app; simplify js

now shows 0 segments when sponsorblock hasn't found the video id

3 years agofix search pagination
girst [Mon, 26 Oct 2020 21:49:19 +0000 (22:49 +0100)]
fix search pagination

old ?q= stopped displaying pages >= 2
protobuf field9 reversed by youtube-local

3 years agopolish some stuff
girst [Sat, 24 Oct 2020 14:14:42 +0000 (16:14 +0200)]
polish some stuff

3 years agofix /<something> 500 errors
girst [Thu, 22 Oct 2020 18:01:53 +0000 (20:01 +0200)]
fix /<something> 500 errors

m(

3 years agofurther improve <something> detector
girst [Tue, 20 Oct 2020 17:20:33 +0000 (19:20 +0200)]
further improve <something> detector

3 years agobetter /<something> algorithm
girst [Sat, 17 Oct 2020 23:13:41 +0000 (01:13 +0200)]
better /<something> algorithm

note: using strict_slashes=False instread of two route decorators to
avoid useless redirect.

3 years agoimplement a tiny port80-to-443 redirector
girst [Sat, 10 Oct 2020 15:59:54 +0000 (17:59 +0200)]
implement a tiny port80-to-443 redirector

3 years agofix reddit feed if 0 subscriptions
girst [Fri, 9 Oct 2020 13:09:47 +0000 (15:09 +0200)]
fix reddit feed if 0 subscriptions

3 years agoexclude search filters from new details style
girst [Thu, 8 Oct 2020 14:34:35 +0000 (16:34 +0200)]
exclude search filters from new details style

3 years agobetter <details> css
girst [Thu, 8 Oct 2020 14:22:11 +0000 (16:22 +0200)]
better <details> css

3 years agoupdate TODOs
girst [Sun, 4 Oct 2020 14:07:16 +0000 (16:07 +0200)]
update TODOs

3 years agoimplement pagination of channel/ucid/playlists (VERY HACKY)
girst [Sun, 4 Oct 2020 13:35:17 +0000 (15:35 +0200)]
implement pagination of channel/ucid/playlists (VERY HACKY)

i'm less ashamed of this code as i should be.

3 years agofix JSONDecodeError on search for real this time
girst [Sun, 4 Oct 2020 13:30:57 +0000 (15:30 +0200)]
fix JSONDecodeError on search for real this time

example of a broken response: https://paste.ubuntu.com/p/NbpSMWKQcX/

3 years agoprevent iter_content from raising ChunkedEncodingError when yt aborts connection
girst [Fri, 2 Oct 2020 09:52:39 +0000 (11:52 +0200)]
prevent iter_content from raising ChunkedEncodingError when yt aborts connection

3 years agoadd &t= to redirect-to-watch
girst [Mon, 28 Sep 2020 22:13:32 +0000 (00:13 +0200)]
add &t= to redirect-to-watch

3 years agosupport "?t=1h2m3s" and "?t=123s" style start-offsets
girst [Fri, 25 Sep 2020 14:41:08 +0000 (16:41 +0200)]
support "?t=1h2m3s" and "?t=123s" style start-offsets

documentation on media fragments:
https://www.w3.org/TR/2012/REC-media-frags-20120925/

3 years agoremove more button from xmlfeeds
girst [Thu, 24 Sep 2020 18:11:09 +0000 (20:11 +0200)]
remove more button from xmlfeeds

makes it necessary to remove the fallback from invidious (untested)

3 years agoremove v1 usage from /channels/
girst [Thu, 24 Sep 2020 16:49:51 +0000 (18:49 +0200)]
remove v1 usage from /channels/

doesn't appear to be used any more after a small and informal survey on

3 years agoadd sponsor segments debug info
girst [Thu, 24 Sep 2020 17:47:18 +0000 (19:47 +0200)]
add sponsor segments debug info

3 years agomake title in video cards selectable
girst [Wed, 23 Sep 2020 21:02:51 +0000 (23:02 +0200)]
make title in video cards selectable

3 years agofix exception on bad search results
girst [Wed, 23 Sep 2020 20:48:03 +0000 (22:48 +0200)]
fix exception on bad search results

r.json() can raise 'json.decoder.JSONDecodeError: Expecting value: line
1 column 1 (char 0)' when the response is an empty string

3 years agoremove superfluous title text
girst [Tue, 22 Sep 2020 12:11:22 +0000 (14:11 +0200)]
remove superfluous title text

3 years agovideo age: use 'm' for months, 'min' for minutes
girst [Mon, 21 Sep 2020 09:30:33 +0000 (11:30 +0200)]
video age: use 'm' for months, 'min' for minutes

3 years agochange pinned style
girst [Sat, 19 Sep 2020 23:15:18 +0000 (01:15 +0200)]
change pinned style

fully css defined; no more html boilerplate. also, the <hr> breaking
the grid was ugly.

3 years agoadd display flags to /c/*; dedup flag retrieval code
girst [Sat, 19 Sep 2020 23:11:04 +0000 (01:11 +0200)]
add display flags to /c/*; dedup flag retrieval code

3 years agoremove 'return "foo", 400' style error responses (browse/)
girst [Sat, 19 Sep 2020 18:54:15 +0000 (20:54 +0200)]
remove 'return "foo", 400' style error responses (browse/)

3 years agoexpose hls/dash streams to template
girst [Sat, 19 Sep 2020 18:12:58 +0000 (20:12 +0200)]
expose hls/dash streams to template

note that this can't be used, since no browsers implement native
hls/dash, and any js-polyfills will trigger cors-errors.

3 years ago(re)add subscribe button to channel page
girst [Sat, 19 Sep 2020 18:11:04 +0000 (20:11 +0200)]
(re)add subscribe button to channel page

3 years agoredirect youtube.com/<username>, fix /c/ trailing slash
girst [Sat, 19 Sep 2020 18:05:22 +0000 (20:05 +0200)]
redirect youtube.com/<username>, fix /c/ trailing slash

3 years agorename 'dangerous' blueprint, as its safe
girst [Sat, 19 Sep 2020 15:06:04 +0000 (17:06 +0200)]
rename 'dangerous' blueprint, as its safe

has been running long enough in production now that I'm relatively
confident that it doesn't get blocked by Big Goog' (*knocks on wood*).

3 years agoclean up dead protobuf structures
girst [Sat, 19 Sep 2020 14:57:06 +0000 (16:57 +0200)]
clean up dead protobuf structures

3 years agofix exception in pagination code on &foo=<emptystring>
girst [Sat, 19 Sep 2020 13:56:52 +0000 (15:56 +0200)]
fix exception in pagination code on &foo=<emptystring>

3 years agofix strange exception on reddit api usage
girst [Sat, 19 Sep 2020 13:53:19 +0000 (15:53 +0200)]
fix strange exception on reddit api usage

data.data might be null (maybe if subreddit list is []?)

3 years agodocument perl installation
girst [Sat, 19 Sep 2020 13:50:13 +0000 (15:50 +0200)]
document perl installation

3 years agoredirect /c/<ucid> to /channel/<ucid>
girst [Sat, 19 Sep 2020 13:49:09 +0000 (15:49 +0200)]
redirect /c/<ucid> to /channel/<ucid>

3 years agomove to v3 channel format
girst [Sat, 19 Sep 2020 13:47:48 +0000 (15:47 +0200)]
move to v3 channel format

modeled after
https://github.com/user234683/youtube-local/commit/1ff97bfde1467f7f18d4d2715a9357c41d9e9b8f

3 years agostore length when pinning videos
girst [Sat, 19 Sep 2020 13:25:55 +0000 (15:25 +0200)]
store length when pinning videos

3 years agoadd link to source code
girst [Thu, 17 Sep 2020 11:03:47 +0000 (13:03 +0200)]
add link to source code

3 years agofix pinning the first (oldest) subscription
girst [Thu, 17 Sep 2020 11:03:26 +0000 (13:03 +0200)]
fix pinning the first (oldest) subscription

3 years agoUse new k-anonymity SponsorBlock API; enable by default
girst [Wed, 16 Sep 2020 14:24:56 +0000 (16:24 +0200)]
Use new k-anonymity SponsorBlock API; enable by default

3 years agoimplement /watch video start offset
girst [Wed, 16 Sep 2020 13:42:46 +0000 (15:42 +0200)]
implement /watch video start offset

3 years agouse correct magic for v2 format
girst [Sat, 5 Sep 2020 16:31:46 +0000 (18:31 +0200)]
use correct magic for v2 format

test channel: UC2C_jShtL725hvbm1arSV9w (sort by popular, page2)

reversing of magic:
https://github.com/user234683/youtube-local/blob/master/youtube/channel.py#L47

3 years agolink to snopyta's invidous instance
girst [Fri, 4 Sep 2020 18:27:51 +0000 (20:27 +0200)]
link to snopyta's invidous instance

3 years agofix error on playlist that doesn't even work on youtube.com
girst [Sat, 29 Aug 2020 17:35:55 +0000 (19:35 +0200)]
fix error on playlist that doesn't even work on youtube.com

3 years agoI AM SO SMART -- S-M-R-T!
girst [Sat, 29 Aug 2020 16:22:23 +0000 (18:22 +0200)]
I AM SO SMART -- S-M-R-T!

3 years agofixup 'blockable'
girst [Sat, 29 Aug 2020 10:03:58 +0000 (12:03 +0200)]
fixup 'blockable'

3 years agofix aspect clamping yet again
girst [Sat, 29 Aug 2020 09:56:16 +0000 (11:56 +0200)]
fix aspect clamping yet again

3 years agouse new card.live property in typed_card
girst [Sat, 29 Aug 2020 09:52:07 +0000 (11:52 +0200)]
use new card.live property in typed_card

3 years agofix unavailable endcard
girst [Sat, 29 Aug 2020 09:43:46 +0000 (11:43 +0200)]
fix unavailable endcard

test id: WYjgHLFZMa0

3 years agocomment UU* (user uploads) playlists
girst [Sat, 29 Aug 2020 09:23:41 +0000 (11:23 +0200)]
comment UU* (user uploads) playlists

3 years agomore lenient channel redirection, catch not existing channels
girst [Sat, 29 Aug 2020 09:18:59 +0000 (11:18 +0200)]
more lenient channel redirection, catch not existing channels

3 years agowe're blockable :(
girst [Sat, 29 Aug 2020 09:16:38 +0000 (11:16 +0200)]
we're blockable :(

3 years agoconvert all search result types to use pipe framework
girst [Sat, 29 Aug 2020 09:14:05 +0000 (11:14 +0200)]
convert all search result types to use pipe framework

3 years agomake |G() take multiple keys
girst [Sat, 29 Aug 2020 08:30:58 +0000 (10:30 +0200)]
make |G() take multiple keys

3 years agoimplement 'pipe' framework and test on VIDEO searchresults
girst [Sat, 29 Aug 2020 08:20:34 +0000 (10:20 +0200)]
implement 'pipe' framework and test on VIDEO searchresults

3 years agonew searchresult types, 'no more results' variant
girst [Sat, 29 Aug 2020 07:10:16 +0000 (09:10 +0200)]
new searchresult types, 'no more results' variant

3 years agoadd /results as alias for /search
girst [Wed, 19 Aug 2020 21:51:42 +0000 (23:51 +0200)]
add /results as alias for /search

youtube-url compat

3 years agoadd final / to /channel/ urls in templates
girst [Wed, 19 Aug 2020 17:22:26 +0000 (19:22 +0200)]
add final / to /channel/ urls in templates

TECHDEBT: this should just use url_for!

3 years agomore innertube renderers
girst [Wed, 19 Aug 2020 17:14:35 +0000 (19:14 +0200)]
more innertube renderers

3 years agouse getpass() instead of input()
girst [Wed, 19 Aug 2020 15:53:23 +0000 (17:53 +0200)]
use getpass() instead of input()

input() writes prompt to stdout, so using it in scripts breaks. (WTF)

3 years agoimplement password change
girst [Wed, 19 Aug 2020 15:32:10 +0000 (17:32 +0200)]
implement password change

3 years agofix learning playlists
girst [Tue, 18 Aug 2020 20:05:43 +0000 (22:05 +0200)]
fix learning playlists

3 years agodon't need to patch youtubedown any more
girst [Mon, 17 Aug 2020 19:24:01 +0000 (21:24 +0200)]
don't need to patch youtubedown any more

as of somewhere between Aug 15 00:52 (last unpatched version downloaded)
and Mon, 17 Aug 2020 19:07:08 GMT (HTTP Last-Modified), it is no longer
necessary to modify youtubedown, as jwz has accepted my patch regarding
caller(). The %ciphers hash has an entry of 13 Aug 2020, so that's
probably the date he applied it locally.

3 years agodon't rely on calc(max()) css to get video to display
girst [Mon, 17 Aug 2020 19:08:39 +0000 (21:08 +0200)]
don't rely on calc(max()) css to get video to display

couldn't watch on my firefox-android 68 (but can now :D)

3 years agoraise exception on webhooks errors
girst [Mon, 17 Aug 2020 16:51:17 +0000 (18:51 +0200)]
raise exception on webhooks errors

logs the traceback.

3 years agoclean up v1/v2 channel protobuf handling
girst [Mon, 17 Aug 2020 16:50:21 +0000 (18:50 +0200)]
clean up v1/v2 channel protobuf handling

3 years agofix channel-playlists
girst [Mon, 17 Aug 2020 16:49:59 +0000 (18:49 +0200)]
fix channel-playlists

has no page number

3 years agofix "learning playlist" and playlists in general, more search result types
girst [Mon, 17 Aug 2020 16:48:15 +0000 (18:48 +0200)]
fix "learning playlist" and playlists in general, more search result types

3 years agohandle absent streamingData.formats/adaptiveFormats
girst [Mon, 17 Aug 2020 15:22:20 +0000 (17:22 +0200)]
handle absent streamingData.formats/adaptiveFormats

e.g. on (announced) livestreams/premiere videos

3 years agopaper over exception on dangerous.search
girst [Mon, 17 Aug 2020 14:52:40 +0000 (16:52 +0200)]
paper over exception on dangerous.search

wasn't able to reproduce this.

[2020-08-17 16:47:53,157] ERROR in app: Exception on /search [GET]
Traceback (most recent call last):
  File "/opt/yt/venv/lib64/python3.6/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/opt/yt/venv/lib64/python3.6/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/yt/venv/lib64/python3.6/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/opt/yt/venv/lib64/python3.6/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/opt/yt/venv/lib64/python3.6/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/yt/venv/lib64/python3.6/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/opt/yt/app/dangerous/__init__.py", line 31, in search
    results, extras = prepare_searchresults(yt_results)
  File "/opt/yt/app/common/innertube.py", line 26, in prepare_searchresults
    return parse_result_items(contents)
  File "/opt/yt/app/common/innertube.py", line 169, in parse_result_items
    r, e = parse_result_items(content['content']['verticalListRenderer']['items'])
  File "/opt/yt/app/common/innertube.py", line 136, in parse_result_items
    listget(content.get('viewCountText',{}).get('runs'),0,{}).get('text')), # "1,234 watching"
  File "/opt/yt/app/common/innertube.py", line 12, in listget
    return next(iter(obj[index:]), fallback)
TypeError: 'NoneType' object is not subscriptable

Imprint / Impressum