]>
git.gir.st - subscriptionfeed.git/log
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/
girst [Fri, 2 Oct 2020 09:52:39 +0000 (11:52 +0200)]
prevent iter_content from raising ChunkedEncodingError when yt aborts connection
girst [Mon, 28 Sep 2020 22:13:32 +0000 (00:13 +0200)]
add &t= to redirect-to-watch
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 /
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)
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
girst [Thu, 24 Sep 2020 17:47:18 +0000 (19:47 +0200)]
add sponsor segments debug info
girst [Wed, 23 Sep 2020 21:02:51 +0000 (23:02 +0200)]
make title in video cards selectable
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
girst [Tue, 22 Sep 2020 12:11:22 +0000 (14:11 +0200)]
remove superfluous title text
girst [Mon, 21 Sep 2020 09:30:33 +0000 (11:30 +0200)]
video age: use 'm' for months, 'min' for minutes
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.
girst [Sat, 19 Sep 2020 23:11:04 +0000 (01:11 +0200)]
add display flags to /c/*; dedup flag retrieval code
girst [Sat, 19 Sep 2020 18:54:15 +0000 (20:54 +0200)]
remove 'return "foo", 400' style error responses (browse/)
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.
girst [Sat, 19 Sep 2020 18:11:04 +0000 (20:11 +0200)]
(re)add subscribe button to channel page
girst [Sat, 19 Sep 2020 18:05:22 +0000 (20:05 +0200)]
redirect youtube.com/<username>, fix /c/ trailing slash
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*).
girst [Sat, 19 Sep 2020 14:57:06 +0000 (16:57 +0200)]
clean up dead protobuf structures
girst [Sat, 19 Sep 2020 13:56:52 +0000 (15:56 +0200)]
fix exception in pagination code on &foo=<emptystring>
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 []?)
girst [Sat, 19 Sep 2020 13:50:13 +0000 (15:50 +0200)]
document perl installation
girst [Sat, 19 Sep 2020 13:49:09 +0000 (15:49 +0200)]
redirect /c/<ucid> to /channel/<ucid>
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
girst [Sat, 19 Sep 2020 13:25:55 +0000 (15:25 +0200)]
store length when pinning videos
girst [Thu, 17 Sep 2020 11:03:47 +0000 (13:03 +0200)]
add link to source code
girst [Thu, 17 Sep 2020 11:03:26 +0000 (13:03 +0200)]
fix pinning the first (oldest) subscription
girst [Wed, 16 Sep 2020 14:24:56 +0000 (16:24 +0200)]
Use new k-anonymity SponsorBlock API; enable by default
girst [Wed, 16 Sep 2020 13:42:46 +0000 (15:42 +0200)]
implement /watch video start offset
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
girst [Fri, 4 Sep 2020 18:27:51 +0000 (20:27 +0200)]
link to snopyta's invidous instance
girst [Sat, 29 Aug 2020 17:35:55 +0000 (19:35 +0200)]
fix error on playlist that doesn't even work on youtube.com
girst [Sat, 29 Aug 2020 16:22:23 +0000 (18:22 +0200)]
I AM SO SMART -- S-M-R-T!
girst [Sat, 29 Aug 2020 10:03:58 +0000 (12:03 +0200)]
fixup 'blockable'
girst [Sat, 29 Aug 2020 09:56:16 +0000 (11:56 +0200)]
fix aspect clamping yet again
girst [Sat, 29 Aug 2020 09:52:07 +0000 (11:52 +0200)]
use new card.live property in typed_card
girst [Sat, 29 Aug 2020 09:43:46 +0000 (11:43 +0200)]
fix unavailable endcard
test id: WYjgHLFZMa0
girst [Sat, 29 Aug 2020 09:23:41 +0000 (11:23 +0200)]
comment UU* (user uploads) playlists
girst [Sat, 29 Aug 2020 09:18:59 +0000 (11:18 +0200)]
more lenient channel redirection, catch not existing channels
girst [Sat, 29 Aug 2020 09:16:38 +0000 (11:16 +0200)]
we're blockable :(
girst [Sat, 29 Aug 2020 09:14:05 +0000 (11:14 +0200)]
convert all search result types to use pipe framework
girst [Sat, 29 Aug 2020 08:30:58 +0000 (10:30 +0200)]
make |G() take multiple keys
girst [Sat, 29 Aug 2020 08:20:34 +0000 (10:20 +0200)]
implement 'pipe' framework and test on VIDEO searchresults
girst [Sat, 29 Aug 2020 07:10:16 +0000 (09:10 +0200)]
new searchresult types, 'no more results' variant
girst [Wed, 19 Aug 2020 21:51:42 +0000 (23:51 +0200)]
add /results as alias for /search
youtube-url compat
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!
girst [Wed, 19 Aug 2020 17:14:35 +0000 (19:14 +0200)]
more innertube renderers
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)
girst [Wed, 19 Aug 2020 15:32:10 +0000 (17:32 +0200)]
implement password change
girst [Tue, 18 Aug 2020 20:05:43 +0000 (22:05 +0200)]
fix learning playlists
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.
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)
girst [Mon, 17 Aug 2020 16:51:17 +0000 (18:51 +0200)]
raise exception on webhooks errors
logs the traceback.
girst [Mon, 17 Aug 2020 16:50:21 +0000 (18:50 +0200)]
clean up v1/v2 channel protobuf handling
girst [Mon, 17 Aug 2020 16:49:59 +0000 (18:49 +0200)]
fix channel-playlists
has no page number
girst [Mon, 17 Aug 2020 16:48:15 +0000 (18:48 +0200)]
fix "learning playlist" and playlists in general, more search result types
girst [Mon, 17 Aug 2020 15:22:20 +0000 (17:22 +0200)]
handle absent streamingData.formats/adaptiveFormats
e.g. on (announced) livestreams/premiere videos
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
girst [Sun, 16 Aug 2020 15:17:42 +0000 (17:17 +0200)]
ignore more advertisements
girst [Sun, 16 Aug 2020 12:45:14 +0000 (14:45 +0200)]
hacky way to get v1 and v2 channel responses (needs cleanup!)
girst [Sat, 15 Aug 2020 21:27:39 +0000 (23:27 +0200)]
don't crash cipher util when youtubedown can't decode cipher
girst [Sat, 15 Aug 2020 20:38:19 +0000 (22:38 +0200)]
fix dummy-card 1px offset
old style removed the border, shifting the last row 1px to the right.
girst [Sat, 15 Aug 2020 20:14:20 +0000 (22:14 +0200)]
README: add note regarding new channel protobuf
girst [Sat, 15 Aug 2020 19:57:00 +0000 (21:57 +0200)]
fallback from dangerous/channel (must fix browse_ajax)
girst [Sat, 15 Aug 2020 19:54:35 +0000 (21:54 +0200)]
make xmlfeed catch all channel subpages
needed for proper invidious/invidition redirect and fallback_route.
girst [Sat, 15 Aug 2020 19:18:13 +0000 (21:18 +0200)]
make csrf verification use http.parser instead of regexp
finally removes the unecessary csrf field from GET forms
girst [Sat, 15 Aug 2020 12:25:43 +0000 (14:25 +0200)]
document why we aren't deleting videos, clean up logging
girst [Fri, 14 Aug 2020 16:20:55 +0000 (18:20 +0200)]
sometimes videoDetails.lengthSeconds=="0"
microformat.playerMicroformatRenderer.lengthSeconds might still be good
then. seen on 'premiere' videos.
girst [Sun, 9 Aug 2020 10:21:40 +0000 (12:21 +0200)]
make view count thousand seperator a bit larger
girst [Sun, 9 Aug 2020 10:21:01 +0000 (12:21 +0200)]
found new innertube edge case
girst [Sun, 9 Aug 2020 10:19:15 +0000 (12:19 +0200)]
Revert "secondary channel format"
useless if it doesn't work all the time
This reverts commit
4e3b56b967570b9498651cf758a5ca3c56640689 .
girst [Sun, 9 Aug 2020 10:17:38 +0000 (12:17 +0200)]
secondary channel format
reversed by omarroth on #invidious. his message:
The channel you sent me uses a different format. YouTube uses:
```json
{
"
80226972 :0:embedded": {
"2:0:string": "UC6Om9kAkl32dWlDSNlDS9Iw",
"3:1:base64": {
"2:0:string": "videos",
"3:1:varint": 3,
"4:2:varint": 0,
"6:3:varint": 1,
"7:4:varint": 1,
"61:5:base64": {
"1:0:embedded": {
"2:1:embedded": {
"1:0:base64": {
"1:0:varint": 120
}
}
}
}
}
}
}
```
where `"1:0:varint": 120` is the offset into the channel.
girst [Sat, 8 Aug 2020 21:37:18 +0000 (23:37 +0200)]
show LIVE badge on subscription feed
girst [Sat, 8 Aug 2020 21:13:35 +0000 (23:13 +0200)]
add livestream detection for subscriptions
note that we usually fetch get_video_info so fast that even for
unannounced live streams, isLive will be false (with isUpcoming true).
girst [Sat, 8 Aug 2020 18:54:00 +0000 (20:54 +0200)]
make version closer to youtube
don't think it makes a difference compat-wise (invidious only has
"2.<hardcoded-date>")
girst [Sat, 8 Aug 2020 16:45:21 +0000 (18:45 +0200)]
remove stray end tag
girst [Sat, 8 Aug 2020 16:40:02 +0000 (18:40 +0200)]
move search css into a stylesheet
girst [Sat, 8 Aug 2020 16:17:39 +0000 (18:17 +0200)]
fix card macro behavriour w.r.t empty channel_id
girst [Fri, 7 Aug 2020 19:40:25 +0000 (21:40 +0200)]
fix writing youtubedown (unicode chars)
the cron job runs in LANG=C, so python defaults to ASCII encoding. also
redownload youtubedown if the on-disk size if 0 (e.g. due to this bug)
girst [Fri, 7 Aug 2020 19:22:20 +0000 (21:22 +0200)]
correct statement about idempotency of cronjobs
girst [Fri, 7 Aug 2020 19:21:28 +0000 (21:21 +0200)]
display length on /feed/subscriptions and use new infocard renderer
girst [Fri, 7 Aug 2020 19:20:44 +0000 (21:20 +0200)]
remove broken logging statement
girst [Fri, 7 Aug 2020 19:19:19 +0000 (21:19 +0200)]
fetch length for new subscription videos
in the future, we'll also detect whether it's a livestream
girst [Fri, 7 Aug 2020 16:23:53 +0000 (18:23 +0200)]
implement video badge (for length)
girst [Fri, 7 Aug 2020 15:59:57 +0000 (17:59 +0200)]
more innertube variants
girst [Fri, 7 Aug 2020 15:27:25 +0000 (17:27 +0200)]
support playlist end-of-list
girst [Fri, 7 Aug 2020 15:11:38 +0000 (17:11 +0200)]
add playlist metadata
girst [Fri, 7 Aug 2020 14:54:51 +0000 (16:54 +0200)]
Revert "useless youtube.com cargoculting"
This reverts commit
d3b80d96aec748b19f08e8757ae847ce66b4df68 .
girst [Fri, 7 Aug 2020 14:54:23 +0000 (16:54 +0200)]
useless youtube.com cargoculting
tried to reduce error ajax responses, but has no effect.
girst [Fri, 7 Aug 2020 14:53:32 +0000 (16:53 +0200)]
tone down channel search
girst [Fri, 7 Aug 2020 14:52:48 +0000 (16:52 +0200)]
add /user and /c redirects for dangerous blueprint
girst [Fri, 7 Aug 2020 11:19:35 +0000 (13:19 +0200)]
add /c/<username> route (alias for /user/)
girst [Fri, 7 Aug 2020 11:15:38 +0000 (13:15 +0200)]
implement channel search
girst [Fri, 7 Aug 2020 10:57:04 +0000 (12:57 +0200)]
retry browse_ajax twice on error
girst [Fri, 7 Aug 2020 10:49:29 +0000 (12:49 +0200)]
add has_more, cleanup, test for error-alerts
girst [Thu, 6 Aug 2020 21:02:12 +0000 (23:02 +0200)]
dangerous.channel/playlist: parse extra messages
girst [Thu, 6 Aug 2020 20:59:14 +0000 (22:59 +0200)]
move innertube stuff out of dangerous
girst [Thu, 6 Aug 2020 20:38:33 +0000 (22:38 +0200)]
search results: fix channel without subscriber count, add spelling info
girst [Thu, 6 Aug 2020 20:01:36 +0000 (22:01 +0200)]
implement channel and playlist endpoints using innertube
ZERO testing regarding whether this can get us banned!
girst [Tue, 4 Aug 2020 22:58:59 +0000 (00:58 +0200)]
implement search params
sadly, pure-protobuf is a small 3rd-party dependency :(