diff options
-rw-r--r-- | youtube/shared.css | 30 | ||||
-rw-r--r-- | youtube/watch.py | 1 | ||||
-rw-r--r-- | youtube_dl/extractor/youtube.py | 8 | ||||
-rw-r--r-- | yt_watch_template.html | 1 |
4 files changed, 29 insertions, 11 deletions
diff --git a/youtube/shared.css b/youtube/shared.css index 151111d..a96fa9b 100644 --- a/youtube/shared.css +++ b/youtube/shared.css @@ -111,7 +111,7 @@ address{ display:grid; grid-template-columns:40px auto auto auto 1fr; grid-template-rows: 1fr; - width: 550px; + width: 540px; } #playlist-edit{ display:contents; @@ -192,30 +192,40 @@ address{ grid-row:2; min-width: 0; } + .full-item .is-unlisted{ + background-color: #d0d0d0; + justify-self:start; + padding-left:2px; + padding-right:2px; + } .full-item address{ grid-column: 1; - grid-row: 3; + grid-row: 4; justify-self: start; } .full-item .views{ grid-column: 2; - grid-row: 3; + grid-row: 4; justify-self:end; } .full-item time{ grid-column: 1; - grid-row: 4; + grid-row: 5; justify-self:start; } .full-item .likes-dislikes{ grid-column: 2; - grid-row: 4; + grid-row: 5; justify-self:end; } + .full-item .download-dropdown{ + grid-column:1; + grid-row: 6; + } .full-item .checkbox{ justify-self:end; - grid-row: 5; + grid-row: 6; grid-column: 2; } .full-item .description{ @@ -225,17 +235,17 @@ address{ min-width: 0; grid-column: 1 / span 2; - grid-row: 6; + grid-row: 7; } .full-item .music-list{ - grid-row:7; + grid-row:8; grid-column: 1 / span 2; } .full-item .comments{ - grid-row: 8; + grid-row: 9; } .full-item .more-comments{ - grid-row: 9; + grid-row: 10; } .medium-item-box{ diff --git a/youtube/watch.py b/youtube/watch.py index ea9ef4c..d98cd3f 100644 --- a/youtube/watch.py +++ b/youtube/watch.py @@ -414,5 +414,6 @@ def get_watch_page(query_string): comments = comments_html, more_comments_button = more_comments_button, music_list = music_list_html, + is_unlisted = '<span class="is-unlisted">Unlisted</span>' if info['unlisted'] else '', ) return page
\ No newline at end of file diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 5531f74..3d910a4 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -1530,6 +1530,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor): def extract_view_count(v_info): return int_or_none(try_get(v_info, lambda x: x['view_count'][0])) + # Is it unlisted? + unlisted = (self._search_regex('''<meta itemprop="unlisted" content="(\w*)">''', video_webpage, 'is_unlisted', default='False') == "True") # Related videos related_vid_info = self._search_regex(r"""'RELATED_PLAYER_ARGS':\s*(\{.*?\})""", video_webpage, "related_player_args", default='') @@ -1679,6 +1681,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor): if 'token' not in video_info: if 'reason' in video_info: + print(video_info['reason']) if 'The uploader has not made this video available in your country.' in video_info['reason']: regions_allowed = self._html_search_meta( 'regionsAllowed', video_webpage, default=None) @@ -1936,8 +1939,10 @@ class YoutubeIE(YoutubeBaseInfoExtractor): formats.append(a_format) else: error_message = extract_unavailable_message() + alt_error_message = clean_html(video_info.get('reason', [None])[0]) + print(alt_error_message) if not error_message: - error_message = clean_html(video_info.get('reason', [None])[0]) + error_message = alt_error_message if error_message: raise YoutubeError(error_message) raise ExtractorError('no conn, hlsvp or url_encoded_fmt_stream_map information found in video info') @@ -2163,6 +2168,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor): 'artist': artist, 'related_vids': related_vids, 'music_list': music_list, + 'unlisted': unlisted, } diff --git a/yt_watch_template.html b/yt_watch_template.html index 44e5892..e34066f 100644 --- a/yt_watch_template.html +++ b/yt_watch_template.html @@ -105,6 +105,7 @@ $video_sources </video> <h2 class="title">$video_title</h2> +$is_unlisted <address>Uploaded by <a href="$uploader_channel_url">$uploader</a></address> <span class="views">$views views</span> |