aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Do not hide comments if false determination of disabled commentsJames Taylor2020-04-101-0/+9
| | | | | | | | If the extraction from watch page determines that they are disabled, but the separate request for the comments found comments, then change that determination, with a warning (since that would be a bug). And set the comment count to None as a dirty way to make such a bug noticeable.
* Fix related video extraction sometimes failingJames Taylor2020-04-101-2/+10
| | | | Youtube added some pointless variation in variable names
* Fix exception due to missing 'playlist' key in extracted infoJames Taylor2020-04-051-0/+3
| | | | | | Happens when there's an error on the page and there was no visible stuff on the page. 'playlist' wasn't set to None in that case.
* Fix parameters being ignored in youtu.be linksJames Taylor2020-04-051-1/+4
| | | | The parameters weren't passed to the underlying function
* Fix error when there's a video format with mimetype class of 'text'James Taylor2020-04-041-1/+1
|
* Add playlist sidebar for videos in playlist, including autoplayJames Taylor2020-04-046-30/+299
|
* Fix regression: local playlist form not shown on channel videos pageJames Taylor2020-03-291-0/+1
|
* Prevent long titles with no spaces overflowing item containersJames Taylor2020-03-201-1/+8
|
* Correctly start and stop subscriptions autochecker when it isJames Taylor2020-03-082-41/+71
| | | | disabled/enabled in settings.
* Fix failure to parse comments when there's one from deleted channelJames Taylor2020-03-082-12/+32
| | | | | | Specifically, fix failures when any of the fields from the parsed comment are None, such as author, author_url, etc. (failure due to string concatenation when building urls).
* Correct malformed query strings: change ? to & so flaskJames Taylor2020-03-081-0/+3
| | | | | | | | parses it correctly. Otherwise, parameters starting with ? will be included in the video id, which messes up the comments since the extraneous data is passed into the the ctoken.
* Fix subscriptions new video count when there are deleted videosJames Taylor2020-02-271-16/+13
| | | | | | It would be 30 since the old method looked to see where the latest video in the database is in the new batch of videos. New method finds the first video in the new batch which is in the database.
* Fix subscription checking breaking due to workers crashingJames Taylor2020-02-231-0/+2
| | | | | | | The try statement was missing an except clause. So if there was an exception such as the tor browser being closed or getting a 429 error during the request, the workers would crash until there were none left to handle checking.
* Specify default font for consistency between operating systemsJames Taylor2020-02-221-3/+7
| | | | | | | | On debian for instance, the default font DejaVu Sans is bigger than the default calibri/times on Windows, messing up the layout in some places. The font size in video items was adjusted slightly to accomodate the change to liberation sans for the default.
* Change px values to rem values in font-size declarationsJames Taylor2020-02-224-7/+7
|
* Ensure urllib3 and python version not leaked during video file checkJames Taylor2020-02-181-1/+2
| | | | | This is likely not a big deal since it is already assumed that video file server logs are not plugged into Google's tracking infrastructure, but it doesn't hurt to give less info.
* Subscriptions auto-checking: Better console error message for 429 errorsJames Taylor2020-02-181-3/+23
| | | | Display a descriptive error message instead of a traceback
* Fix MaxRetryError when checking for video URL accessJames Taylor2020-02-182-4/+22
| | | | | | | | The default urllib3 max redirect amount was set to 3. Change it to 10 and do not fail if there is a problem with checking for URL access. Just print the error to the console and proceed. Also add an unrelated remark about the bcptr=9999999999 parameter in watch.py
* yt_data_extract: fix missing variables in info for unavailable videosJames Taylor2020-02-171-2/+3
| | | | | 'ip_address' was not set when no formats are available 'allowed_countries' was set to None rather than [] in extract_desktop_info which it turns out is the function that gets used in these cases
* Fix FileNotFound error when trying to download search plugin when the ↵James Taylor2020-02-062-1/+3
| | | | working directory is not the directory of the program
* Readme: clarify redirector usageJames Taylor2020-02-041-1/+1
|
* Update readmeJames Taylor2020-02-041-9/+10
|
* Invidious fallback: Use original format info and just substitute invidious urlsJames Taylor2020-02-041-23/+13
| | | | Because the invidious formats don't have all the information
* Watch page: add info box with allowed countries and tor exit nodeJames Taylor2020-02-013-0/+41
| | | | Should help with debugging various content blocks
* Adjust 429 error message. A Tor Browser restart is not required.James Taylor2020-02-011-2/+2
| | | | The New Identity button suffices to get the socks proxy to use a new exit node.
* Check for 403 errors and fallback on InvidiousJames Taylor2020-02-013-1/+63
| | | | 403 errors on the video urls happen typically when a video has copyrighted content or was livestreamed originally. They appear to not happen (or at least happen less frequently) if the Tor exit node used ipv6, however.
* yt_data_extract: parse mimeType field for codecsJames Taylor2020-02-011-0/+27
| | | | the youtube-dl formats table doesn't have all the necessary information
* Give a proper error message for 429 errorsJames Taylor2020-01-316-3/+49
| | | | | | These occur when too many requests are coming from a Tor exit node. Before, there would be an error page with an exception instructing users to report the issue. But this is an expected and persistent issue.
* run.bat: Allow command line usage from any directoryJames Taylor2020-01-301-0/+9
| | | | | Set the youtube-local directory as the working directory, and use setlocal so it doesn't affect the shell the command is being run from.
* Add full visual c runtime to fix missing dll errors on fresh windows installsJames Taylor2020-01-303-21/+33
| | | | | | | On fresh installs, when no programs have been installed which install visual c runtime as a dependency, the dlls are not present and brotli fails to load. Bundle them in releases and make sure brotli sees them by adding their location to the path (in run.bat)
* Fix signature decryption.James Taylor2020-01-241-1/+1
| | | | | | | | The function body regex was capturing some unrelated new code before the actual function body. Example: `function(a){a=a.split("");var b=[function(c,d){d=(d%c.length+c.length)%c.length;c.splice(-d).reverse().forEach(function(e){return c.unshift(e)}` If you look closely, the closing bracket doesn't match the opening one. I have added `{` to the `[^\}]+` part to make sure it only captures matching brackets. Additionally, I've added `return a\.join\(""\)` to the end for good measure.
* local playlists: Display error message if no videos are selected or no ↵James Taylor2020-01-191-0/+10
| | | | | | playlist is chosen when using "add to playlist" See #4
* Fix display of movie thumbnails in related videosJames Taylor2020-01-101-0/+1
|
* Fix playlist id extraction for radio renderersJames Taylor2019-12-311-1/+1
|
* Extraction: Correctly extract view_count for vids with 0 views.James Taylor2019-12-301-1/+9
| | | | Also change superfluous use of multi_get to item.get nearby
* extract_items: allow extracting items that are normally dug into for moreJames Taylor2019-12-261-5/+5
| | | | | By checking first if it's in item_types rather than checking if it can be dug into first. For example: this allows extracting things like sectionListRenderer
* yt_data_extract: Split up extract_items so renderer extraction works ↵James Taylor2019-12-261-47/+48
| | | | | | independently extract_items_from_renderer will extract given just a renderer rather than a response
* yt_data_extract.common: Simplify usage of get functions and remove dead codeJames Taylor2019-12-261-18/+11
| | | | | | | Change usage of multi_deep_get to multi_get where possible Remove checking of type from calls to get functions (because it's very unlikely Youtube suddenly changes the type without changing the name of the variable or anything, and it takes up unnecessary space) Remove all default=None arguments from get functions, since those are superflous. Remove list_types constant since it's no longer in use.
* yt_data_extract: Simplify extract_items so it needs only 1 while loopJames Taylor2019-12-261-32/+31
|
* items: commatize channel video count and playlist video countJames Taylor2019-12-241-2/+2
|
* extract_item_info: Don't extract author, author_id, etc. for channel itemsJames Taylor2019-12-241-7/+8
| | | | Philosophically, a channel doesn't create itself.
* Fix extract_approx_int not working for non-approx ints, make extract_int ↵James Taylor2019-12-241-2/+2
| | | | | | | | more robust For example, "354 subscribers" wasn't being extracted correctly be extract_approx_int. Make extract_approx_int and extract_int only extract integers that are words. So e.g. 342 will not be extracted from internetuser342
* Channel searching: indicate if there's no resultsJames Taylor2019-12-231-1/+5
|
* Regression: Fix channel extraction 'items' key not present when there's no ↵James Taylor2019-12-231-2/+3
| | | | | | items. Examples: Empty channels, no search results
* Channel: Change search results to use next and previous page buttonsJames Taylor2019-12-235-39/+83
| | | | Because youtube doesn't give the number of search results, so previous behavior would give an error if a page number out of range was selected.
* Subscriptions: Cleaner error message when checking terminated channelsJames Taylor2019-12-221-1/+3
| | | | Don't display a nasty traceback in that case.
* Subscriptions: Make uploader name clickable, with link to channelJames Taylor2019-12-221-2/+4
|
* Finally fix video count on channels accessed through general urls, rather ↵James Taylor2019-12-222-19/+35
| | | | | | | | | | | | | than just channel id. It was set to a fake value of 1000 previously in order to ensure there would be enough page buttons. This was because two sequential requests are necessary (one to get the channel id corresponding to the custom url, another to get the number of videos from the "all uploaded videos" playlist, the url for which can be generated from the channel id). Since Tor has a high latency, I thought at the time that this would be too slow, but in practice it's not too big of a deal. Introduces cachetools dependency in order to cache the function which gets the number of videos. The get_channel_id function has also been fixed since the ajax api seems to have been removed.
* channel.py: Refactor channel_id route logic into general channel url logic.James Taylor2019-12-221-53/+21
| | | | | Deduplicates the code. channel_id logic was previously separate because of the need to get the number of videos and different page numbers Also makes search work for general urls, not just channel_id urls
* Rewrite channel extraction with proper error handling and new extraction ↵James Taylor2019-12-213-47/+48
| | | | | | names. Extract subscriber_count correctly. Don't just shove english strings into info['stats']. Actually give semantic names for the stats.