Commit Graph

662 Commits (55c727a547a3873396c75b62d55393da79ce0fc9)

Author SHA1 Message Date
remitamine 8ff648e4f9 [youtube] use _extract_mpd_formats 9 years ago
Yen Chi Hsuan 08411970d5 Merge pull request #8374 from yan12125/facebook-dash
Facebook DASH formats
9 years ago
Jaime Marquínez Ferrándiz 3ccb0655c1 [youtube] Use 'orderedSet' instead of 'set' to preserve the order 9 years ago
Sergey M․ 9acd33094d [youtube] Filter duplicates in playlists base extractor 9 years ago
Sergey M․ 8e7aad2075 [youtube] Use authentication for entry list base extractor (Closes #8380) 9 years ago
Yen Chi Hsuan 2d2fa82d17 [common] Add _extract_dash_manifest_formats 9 years ago
Yen Chi Hsuan c94678957f [common] Remove unused arguments 9 years ago
Yen Chi Hsuan 16f38a699f [common] Rename to namespace
For consistency with _parse_smil_*
9 years ago
Yen Chi Hsuan a6c2c24479 [youtube] Remove '(v|a)codec': 'none' entries
Not used anymore
9 years ago
Yen Chi Hsuan 5d2c0fd9ba [youtube] Pass self._formats to _parse_dash_manifest 9 years ago
Yen Chi Hsuan 17b598d30c [common] _parse_dash_manifest() from youtube.py 9 years ago
Yen Chi Hsuan 05d0d131a7 [youtube] Move decrypt_sig out of _parse_dash_manifest 9 years ago
Jaime Marquínez Ferrándiz 70029bc348 [youtube:user] Require 'https?://' in the url (fixes #8356)
It was matching www.youtube.com/embed/WpfukLMe1TM.
The generic extractor automatically adds http:// if it's missing.
9 years ago
Yen Chi Hsuan e9bd0f772b Merge pull request #8130 from dyn888/master
[youtube] added vcodec/acodec/abr for multiple itags
9 years ago
Yen Chi Hsuan 94278f7202 [youtube] Prefer info from YouTube than _formats (#8293) 9 years ago
Sergey M․ 51290d8457 [youtube] Simplify automatic captions URL check (Closes #8287) 9 years ago
Dimitre Liotev 582f4f834e Fix issue #8109 (error when downloading automatic captions) 9 years ago
Sergey M․ e323cf3ff3 [youtube] Skip test 9 years ago
Sergey M․ 8ceabd4df3 [youtube] Capture and output unavailable message 9 years ago
Sergey M․ a8776b107b [youtube] Clarify test_Youtube_18 9 years ago
Sergey M․ 096b533982 [youtube] Fix URL expansion in video description
Fixes test_Youtube_18
9 years ago
Yen Chi Hsuan cc28492d31 [youtube] Fix acodec and vcodec order
In RFC6381, there's no rule stating that the first part of codecs should
be video and the second part should be audio, while it seems the case
for data reported by YouTube.
9 years ago
Sergey M․ 23f13e9754 [youtube] Support expanding alternative format of links in description (Closes #8164) 9 years ago
dyn888 e1a0bfdffe [youtube] added vcodec/acodec/abr for multiple itags
Should make downloading with filters more precise and easier, ie. bestvideo[vcodec=h264]. By default a lot of codecs are specified as avc1.xxxxxx and unique for each format, which makes them unusable for bestvideo selection.
9 years ago
Sergey M․ e462474e1d [youtube] Generalize playlists extractor 9 years ago
Sergey M․ 9b9c5355e4 Rename error_to_str to error_to_compat_str 9 years ago
Sergey M․ 7f8b271465 Properly convert errors to strings 9 years ago
Sergey M․ 0cb58b0259 [youtube] Extract alt_title and creator for music videos (Closes #7862) 9 years ago
Sergey M․ 4c6b4764f0 [youtube] Clarify itag 272 possible resolutions (#7699) 9 years ago
Sergey M․ 2e1b928540 [youtube:playlist] Extend _VALID_URL 9 years ago
Sergey M․ 040ac68679 [youtube] Extend _VALID_URL (Closes #7694) 9 years ago
Yen Chi Hsuan 049d71d874 [youtube] Simplify and make sure header values are strings 9 years ago
Yen Chi Hsuan ac5a69af45 [youtube] Disable compression for live streams 9 years ago
Sergey M․ 5faf9fed7e [youtube] Clarify rationale for yt:stretch validation 9 years ago
Lukáš Lalinský 41f24c321d [youtube] Use the existing `w` and `h` variables 9 years ago
Lukáš Lalinský 313dfc45f5 [youtube] Ignore yt:stretch with zero width/height 9 years ago
Sergey M? 5c2266df4b Switch codebase to use sanitized_Request instead of
compat_urllib_request.Request

[downloader/dash] Use sanitized_Request

[downloader/http] Use sanitized_Request

[atresplayer] Use sanitized_Request

[bambuser] Use sanitized_Request

[bliptv] Use sanitized_Request

[brightcove] Use sanitized_Request

[cbs] Use sanitized_Request

[ceskatelevize] Use sanitized_Request

[collegerama] Use sanitized_Request

[extractor/common] Use sanitized_Request

[crunchyroll] Use sanitized_Request

[dailymotion] Use sanitized_Request

[dcn] Use sanitized_Request

[dramafever] Use sanitized_Request

[dumpert] Use sanitized_Request

[eitb] Use sanitized_Request

[escapist] Use sanitized_Request

[everyonesmixtape] Use sanitized_Request

[extremetube] Use sanitized_Request

[facebook] Use sanitized_Request

[fc2] Use sanitized_Request

[flickr] Use sanitized_Request

[4tube] Use sanitized_Request

[gdcvault] Use sanitized_Request

[extractor/generic] Use sanitized_Request

[hearthisat] Use sanitized_Request

[hotnewhiphop] Use sanitized_Request

[hypem] Use sanitized_Request

[iprima] Use sanitized_Request

[ivi] Use sanitized_Request

[keezmovies] Use sanitized_Request

[letv] Use sanitized_Request

[lynda] Use sanitized_Request

[metacafe] Use sanitized_Request

[minhateca] Use sanitized_Request

[miomio] Use sanitized_Request

[meovideo] Use sanitized_Request

[mofosex] Use sanitized_Request

[moniker] Use sanitized_Request

[mooshare] Use sanitized_Request

[movieclips] Use sanitized_Request

[mtv] Use sanitized_Request

[myvideo] Use sanitized_Request

[neteasemusic] Use sanitized_Request

[nfb] Use sanitized_Request

[niconico] Use sanitized_Request

[noco] Use sanitized_Request

[nosvideo] Use sanitized_Request

[novamov] Use sanitized_Request

[nowness] Use sanitized_Request

[nuvid] Use sanitized_Request

[played] Use sanitized_Request

[pluralsight] Use sanitized_Request

[pornhub] Use sanitized_Request

[pornotube] Use sanitized_Request

[primesharetv] Use sanitized_Request

[promptfile] Use sanitized_Request

[qqmusic] Use sanitized_Request

[rtve] Use sanitized_Request

[safari] Use sanitized_Request

[sandia] Use sanitized_Request

[shared] Use sanitized_Request

[sharesix] Use sanitized_Request

[sina] Use sanitized_Request

[smotri] Use sanitized_Request

[sohu] Use sanitized_Request

[spankwire] Use sanitized_Request

[sportdeutschland] Use sanitized_Request

[streamcloud] Use sanitized_Request

[streamcz] Use sanitized_Request

[tapely] Use sanitized_Request

[tube8] Use sanitized_Request

[tubitv] Use sanitized_Request

[twitch] Use sanitized_Request

[twitter] Use sanitized_Request

[udemy] Use sanitized_Request

[vbox7] Use sanitized_Request

[veoh] Use sanitized_Request

[vessel] Use sanitized_Request

[vevo] Use sanitized_Request

[viddler] Use sanitized_Request

[videomega] Use sanitized_Request

[viewvster] Use sanitized_Request

[viki] Use sanitized_Request

[vk] Use sanitized_Request

[vodlocker] Use sanitized_Request

[voicerepublic] Use sanitized_Request

[wistia] Use sanitized_Request

[xfileshare] Use sanitized_Request

[xtube] Use sanitized_Request

[xvideos] Use sanitized_Request

[yandexmusic] Use sanitized_Request

[youku] Use sanitized_Request

[youporn] Use sanitized_Request

[youtube] Use sanitized_Request

[patreon] Use sanitized_Request

[extractor/common] Remove unused import

[nfb] PEP 8
9 years ago
Sergey M․ 9022726446 [youtube] Fix test 9 years ago
Sergey M․ 94bfcd23b7 [youtube] Fix test 9 years ago
Sergey M․ 526b3b0716 [youtube] Clarify ytplayer.config extraction rationale 9 years ago
Sergey M․ 61f92af1cf [youtube] Add test with '};' in tags 9 years ago
Sergey M․ a72778d364 [youtube] Improve ytplayer.config extraction 9 years ago
Sergey M 5ae17037a3 Merge pull request #7599 from lalinsky/fix-youtube
[youtube] More explicit player config JSON extraction (fixes #7468)
9 years ago
Lukáš Lalinský b41631c4e6 [youtube] Send the list of patterns directly to _search_regex 9 years ago
Lukáš Lalinský 0e49d9a6b0 [youtube] Fall back to the original regex for ytplayer.config 9 years ago
Lukáš Lalinský 3cfd000849 [youtube] More explicit player config JSON extraction (fixes #7468) 9 years ago
Sergey M․ e568c2233e [youtube] Add test for multi page list of playlists 9 years ago
Sergey M․ 061a75edd6 [youtube] Extract base for entry list extractors and support multi page lists of playlists 9 years ago
Sergey M․ 136dadde95 [youtube:show] Rework in terms of playlists base extractor 9 years ago
Sergey M․ 0c14841585 [youtube:user:playlists] Add extractor (Closes #3817) 9 years ago
Jaime Marquínez Ferrándiz 63b4295d20 [youtube:playlist] fix title extraction (fixes #7544 and #7545) 9 years ago
Yen Chi Hsuan 50f84a9ae1 [youtube] Support new base.js html5 player 9 years ago
Sergey M․ 89ea063eeb [youtube] Clarify rationale for preferring a video info with token (#7362) 9 years ago
Sergey M․ 44b2264fea [youtube] Prefer video_info with token available 9 years ago
Jaime Marquínez Ferrándiz 5c43afd40f [youtube:channel] Support age restricted channels (fixes #7277) 9 years ago
Jaime Marquínez Ferrándiz 9170ca5b16 [youtube:channel] Fix test 9 years ago
Sergey M․ 648e6a1ffe [youtube] Generalize playlist entries extraction (Closes #6699, closes #6992) 9 years ago
Philipp Hagemeister 2b3c254678 [youtube:channel] Correct 404 handling
Previously, when we encountered a 404 - such as youtube-dl https://www.youtube.com/ohJeiboh8oorehai - we crashed with a regexp error. Instead, make sure to go on and eventually report a 404.
9 years ago
Philipp Hagemeister 287be8c615 [youtube:truncated_url] Add ?t=
Sometimes found in links - ?t=123&v=ABCD starts the video at position 123.
9 years ago
Jaime Marquínez Ferrándiz 4003bd82b0 [youtube:shows] Use https 9 years ago
remitamine 8801255d7d [youtube] fix show extraction (fixes #4841)
Closes #6782)
9 years ago
Sergey M․ 515fc8776f [youtube] Use encode_dict 9 years ago
Sergey M․ aabc2be693 [youtube] Simplify and extract more metadata from url_encoded_fmt_stream_map (Closes #5993) 9 years ago
Anssi Hannula c9afb51cea [youtube] Fix missing format details for 60fps DASH formats
60fps DASH formats do not appear in the DASH manifest, but the non-DASH
video info page does contain additional parameters for DASH formats that
we can parse.

Use those when they exist.

This fixes "bestvideo" not selecting 60fps formats over similar 30fps
formats just because the file size is unknown.
9 years ago
Jaime Marquínez Ferrándiz 4bc8eec4eb [youtube] Adapt player version regex to handle urls ending in '/html5player-new.js'
It was always extracting 'new' as the version, breaking the cache system.
9 years ago
Sergey M․ cbaed4bb5e [youtube] Expand _VALID_URL to support vid.plus 10 years ago
Sergey M․ f74a7348f6 [youtube:search_url] Fix extraction (Closes #6578) 10 years ago
Sergey M․ 041bc3adc5 [youtube] Simplify two-factor authentication 10 years ago
reddraggone9 9303ce3e69 [youtube] Fix two-factor authentication 10 years ago
Sergey M․ f57b7835e2 [youtube] Update tests 10 years ago
Sergey M․ 34952f09e1 [youtube] Add age limit to tests 10 years ago
Sergey M․ 34a7de2970 [youtube] Skip download for multiple v= test 10 years ago
Puck Meerburg 11b5605815 [youtube] Use the first v= argument in the URL
This is according to how youtube handles multiple v= values in one URL.
Before this, it was possible to make a single URL show up differently
 on youtube itself, and if you downloaded/viewed it with youtube-dl/mpv
10 years ago
Jaime Marquínez Ferrándiz 34866b4836 Merge remote-tracking branch 'dstftw/multifeed-videos' (closes #6360) 10 years ago
Sergey M․ 5e1eddb939 [youtube] Show info message for multifeed videos according to noplaylist option 10 years ago
Sergey M․ 000b6b5ae5 [youtube] Improve tags extraction and add test 10 years ago
Purdea Andrei a6f774e901 [youtube]: tags key in info jason is now a list 10 years ago
Purdea Andrei f171bc8b59 [youtube] save keywords in info jason when --write-info-json is used 10 years ago
Jaime Marquínez Ferrándiz 4c6bd5b5b6 [youtube] Use 'vp8' and 'vp9' in lowercase (fixes #6358)
That's how YouTube reports them in their DASH manifest.
10 years ago
Sergey M․ d8f0a9ecea [youtube] Respect noplaylist for multifeed videos 10 years ago
Sergey M․ cf7e015f25 [youtube] Add support for multifeed videos 10 years ago
Sergey M․ 678e436f2e [youtube] Handle empty allowed regions (Closes #6351) 10 years ago
Sergey M. cdad742700 Merge pull request #6306 from jaimeMF/extract_start_time
[youtube] Extract start_time
10 years ago
Jaime Marquínez Ferrándiz 2929fa0e79 [youtube] Also look into the 'start' field for start_time 10 years ago
Jaime Marquínez Ferrándiz 297a564bee [youtube] Extract end_time 10 years ago
Jaime Marquínez Ferrándiz 87dc451108 [youtube] Don't use the DASH manifest from 'get_video_info' if 'use_cipher_signature' is True (#5118)
Currently they give a 403 Forbidden error.
10 years ago
Jaime Marquínez Ferrándiz 7c80519cbf [youtube] Extract start_time
From the 't=*' in the url.
Currently youtube-dl doesn't use the value, but it was requested for the mpv plugin.
10 years ago
Jaime Marquínez Ferrándiz 2fe1ff8582 [youtube] Set 'is_live' 10 years ago
Jaime Marquínez Ferrándiz 17ee98e1a5 [youtube] Fix upload_date in test 10 years ago
Jaime Marquínez Ferrándiz 2ee8f5d80f Merge remote-tracking branch 'yan12125/download-dash-segments' (#5886) 10 years ago
Sergey M․ 7fd002c006 [youtube] Use compat_urllib_parse_unquote and compat_urllib_parse_unquote_plus 10 years ago
Sergey M․ 77c6fb5b24 [youtube] Make further DASH manifests not fatal after succeeded one 10 years ago
Sergey M․ 9d0b581fea [youtube] Prefer meta for upload date and modernize 10 years ago
Sergey M․ f0714c9f86 [youtube] Speed up upload date regex (#6125) 10 years ago
Sergey M. dc2bd20e55 Merge pull request #6098 from dstftw/use-codecs-from-dash-manifest
[youtube] Pick up codecs info from DASH manifest when not set explicitly
10 years ago
Sergey M. c608ee491f Merge pull request #6097 from dstftw/union-itags-from-multiple-dashmpd
[youtube] Extract formats from multiple DASH manifests (Closes #6093)
10 years ago
Sergey M․ c93d53f5e3 [youtube] Fix likes/dislike extraction 10 years ago
Sergey M․ da77d856a1 [youtube] Add test for #6093 10 years ago
Sergey M․ 0a3cf9ad3d [youtube] Skip get_video_info requests when --youtube-skip-dash-manifest is specified 10 years ago
Sergey M․ bc93bdb5bb [youtube] Fix reference before assignment for video_info 10 years ago
Yen Chi Hsuan af214c3a79 [youtube] More useful messages for georestricted videos (#5716) 10 years ago
Sergey M․ d80265ccd6 [youtube] Simplify non-DASH formats exclusion 10 years ago
Sergey M․ 1b5a1ae257 [youtube] Pick up codecs info from DASH manifest when not set explicitly 10 years ago
Sergey M․ d8d24a922a [youtube] Extract formats from multiple DASH manifests (Closes #6093)
DASH manifest pointed by dashmpd from the video webpage and one pointed by get_video_info may
be different (namely different itag set) - some itags are missing from DASH manifest pointed by
webpage's dashmpd, some - from DASH manifest pointed by get_video_info's dashmpd).
The general idea is to take a union of itags of both DASH manifests (for example video with such
'manifest behavior' see https://github.com/rg3/youtube-dl/issues/6093).
10 years ago
Sergey M․ c9bebed294 [youtube] Add itag 59 and 78 (Closes #5979) 10 years ago
Sergey M․ 02175a7986 [youtube:search] Fix search query (Closes #5988) 10 years ago
Yen Chi Hsuan 8a1a26ce4c [youtube] Add a test for the DASH segment downloader 10 years ago
Yen Chi Hsuan 0c8662d2b6 [youtube] Fix a TypeError caused by 4da31bd566 10 years ago
Jaime Marquínez Ferrándiz 70219b0f43 [youtube:playlist] Use an iterator for the entries (closes #5935)
So that '--playlist-end' downloads only the required pages.
10 years ago
Yen Chi Hsuan e1b9322b09 [youtube] Restricter DASH signature pattern
A problematic DASH url is:
https://manifest.googlevideo.com/api/manifest/dash/mm/35/key/yt5/ip/140.112.247.145/ms/pm/mv/s/mt/1433794435/id/o-AD2Od_dsOlAUYPu03ZsVWKSbGEbCJJrMp9vnXGhnyRhd/mn/sn-aigllm7r/sparams/as%2Chfr%2Cid%2Cip%2Cipbits%2Citag%2Cmm%2Cmn%2Cms%2Cmv%2Cnh%2Cpl%2Cplayback_host%2Crequiressl%2Csource%2Cexpire/fexp/9406009%2C9406821%2C9407575%2C9408142%2C9408420%2C9408710%2C9409121%2C9409208%2C9412514%2C9412780%2C9413208%2C9413426%2C9413476%2C9413503%2C9415304%2C9415753/upn/viDQrs8SnmE/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm_sd_hd_clear%2Cwebm2_sd_hd_clear/playback_host/r4---sn-aigllm7r.googlevideo.com/ipbits/0/requiressl/yes/pl/20/itag/0/source/youtube/expire/1433824806/nh/EAQ/signature/81ABE6391E351BA495F5B041B00FF1257A353318.1A6E48ABB74E8F4AE73CA2CB1F963FC34E33DEE7/sver/3/hfr/1
10 years ago
Yen Chi Hsuan 4da31bd566 [youtube] Fix a FutureWarning from xml.etree.ElementTree 10 years ago
Sergey M․ 3d8e9573a4 [youtube:channel] Improve channel id extraction (#5904) 10 years ago
Yen Chi Hsuan 423d2be5f8 [downloader/dash] Rename the protocol
'http_dash_segments' looks more like a protocol name than
'dash_segments'
10 years ago
Yen Chi Hsuan b9258c6178 [YoutubeDL] Change how DashSegmentsFD is selected 10 years ago
Yen Chi Hsuan 6800d3372f [YoutubeDL] Support DASH manifest downloading 10 years ago
Ivan Kozik d2a9de78df [youtube] Construct a playlist URL in case the page is missing one
This fixes jumping from user/channel -> playlist for some users like
https://www.youtube.com/user/BitcoinFoundation

This also removes the superfluous log message
"add --no-playlist to just download video VIDEOID"
when downloading a user/channel.
10 years ago
Sergey M․ 386bdfa698 [youtube:user] Workaround 35 pages limitation (Closes #5778) 10 years ago
Jaime Marquínez Ferrándiz 04b3b3df05 [youtube] Remove the nondash formats (fixes #5774)
Since we use fixed values for some fields like width and height they can be wrong, and would get picked by some formats filters.
For example for https://www.youtube.com/watch?v=EQCrhbBxsjA the biggest height is 720 and for nondash formats it's set to 1440, so -f 'bestvideo[height>=1200]+bestaudio' would incorrectly pick the nondash format, instead it should report that the requested format is not available.
10 years ago
Sergey M․ 62c95fd5fc [youtube:feed] Check each 'load more' portion for unique video ids 10 years ago
Sergey M․ 25f14e9f93 [youtube] Separate feed extractor 10 years ago
Jaime Marquínez Ferrándiz 2bc4330303 [youtube:history] Fix extraction (fixes #5702)
It uses the same method as YoutubeSubscriptionsIE, if other feed starts using it we should consider using base class.
10 years ago
Yen Chi Hsuan 39b62db116 [youtube] Catch more alert messages (closes #5074) 10 years ago
Sergey M․ 9dd8e46a2d [youtube:search] Cancel out _TESTS 10 years ago
Jaime Marquínez Ferrándiz b4c0806963 [youtube:ytsearch] Use the same system as the search webpage (fixes #5483)
The gdata api V2 was deprecated and according to http://youtube-eng.blogspot.com.es/2014/03/committing-to-youtube-data-api-v3_4.html remains available until April 20, 2015.
10 years ago
Sergey M․ cc38fa6cfb [youtube] Remove unused import 10 years ago
Sergey M․ 6de5dbafee [youtube:channel] Make `extract_videos_from_page` static 10 years ago
Sergey M․ 60bf45c80d [youtube:channel] Specify first page download message 10 years ago
Sergey M․ eb0f3e7ec0 [youtube:user] Extract in terms of `load_more_widget_html` 10 years ago
Sergey M․ ed553379df [youtube:ytsearch] Temporary workaround (#5483) 10 years ago
Sergey M․ 8f02ad4f12 [youtube] Simplify 10 years ago
Sergey M․ 7bd930368c [youtube] Remove unused variable 10 years ago
Sergey M․ fb69240ca0 [youtube] Extract video titles for channel playlist if possible (Closes #4971) 10 years ago
Yen Chi Hsuan de5c545648 [youtube] Skip WebVTT in DASH manifest (#5297) 10 years ago
Sergey M․ e40bd5f06b [youtube] Simplify url_encoded_fmt_stream_map check 10 years ago
Sergey M․ 06b491eb7b [youtube] Add test for #5361 10 years ago
Yen Chi Hsuan 3a9fadd6df [youtube] Enhance url_encoded_fmt_stream_map checking (fix #5361) 10 years ago
Jaime Marquínez Ferrándiz 157e9e5aa5 [youtube:watchlater] Remove unused properties and fix tests 10 years ago
Sergey M․ 7e17ec8c71 [youtube] Clarify some IE_NAMEs 10 years ago
Sergey M․ 448830ce7b [youtube:watchlater] Extract watchlater as playlist (Closes #5280) 10 years ago
Sergey M․ 98998cded6 [youtube:search_url] Fix extraction (Closes #5155) 10 years ago
Sergey M․ 99209c2916 [youtube] Extract UL playlists as mixes (Closes #5040) 10 years ago
Jaime Marquínez Ferrándiz bfc993cc91 Merge branch 'subtitles-rework'
(Closes PR #4964)
10 years ago
Philipp Hagemeister 785521bf4f [youtube] Remove useless if 10 years ago
Philipp Hagemeister 6d1a55a521 [youtube] Show entire player URL when -v is given 10 years ago
Jaime Marquínez Ferrándiz 360e1ca5cc [youtube] Convert to new subtitles system
The automatic captions are stored in the 'automactic_captions' field, which is used if no normal subtitles are found for an specific language.
10 years ago
Jaime Marquínez Ferrándiz 2d30521ab9 [youtube] Extract average rating (closes #2362) 10 years ago
Jaime Marquínez Ferrándiz ba61796458 [youtube] Don't override format info from the dash manifest (fixes #4911) 10 years ago
Philipp Hagemeister acf757f42e [youtube] Complete test definition 10 years ago
Philipp Hagemeister 70fca8d694 [youtube] Remove unused import 10 years ago
Philipp Hagemeister 6449cd807e [youtube] Fall back to embed webpage when content is blocked on main (Fixes #4717) 10 years ago