mirror of
https://github.com/yt-dlp/yt-dlp
synced 2024-12-26 21:59:08 +01:00
parent
2acd1d555e
commit
b634ba742d
27 changed files with 40 additions and 41 deletions
|
@ -89,7 +89,6 @@ yt-dlp is a [youtube-dl](https://github.com/ytdl-org/youtube-dl) fork based on t
|
||||||
* Fix for [n-sig based throttling](https://github.com/ytdl-org/youtube-dl/issues/29326) **\***
|
* Fix for [n-sig based throttling](https://github.com/ytdl-org/youtube-dl/issues/29326) **\***
|
||||||
* Supports some (but not all) age-gated content without cookies
|
* Supports some (but not all) age-gated content without cookies
|
||||||
* Download livestreams from the start using `--live-from-start` (*experimental*)
|
* Download livestreams from the start using `--live-from-start` (*experimental*)
|
||||||
* `255kbps` audio is extracted (if available) from YouTube Music when premium cookies are given
|
|
||||||
* Channel URLs download all uploads of the channel, including shorts and live
|
* Channel URLs download all uploads of the channel, including shorts and live
|
||||||
|
|
||||||
* **Cookies from browser**: Cookies can be automatically extracted from all major web browsers using `--cookies-from-browser BROWSER[+KEYRING][:PROFILE][::CONTAINER]`
|
* **Cookies from browser**: Cookies can be automatically extracted from all major web browsers using `--cookies-from-browser BROWSER[+KEYRING][:PROFILE][::CONTAINER]`
|
||||||
|
@ -913,7 +912,7 @@ If you fork the project on GitHub, you can run your fork's [build workflow](.git
|
||||||
Defaults to ~/.netrc
|
Defaults to ~/.netrc
|
||||||
--netrc-cmd NETRC_CMD Command to execute to get the credentials
|
--netrc-cmd NETRC_CMD Command to execute to get the credentials
|
||||||
for an extractor.
|
for an extractor.
|
||||||
--video-password PASSWORD Video password (vimeo, youku)
|
--video-password PASSWORD Video-specific password
|
||||||
--ap-mso MSO Adobe Pass multiple-system operator (TV
|
--ap-mso MSO Adobe Pass multiple-system operator (TV
|
||||||
provider) identifier, use --ap-list-mso for
|
provider) identifier, use --ap-list-mso for
|
||||||
a list of available MSOs
|
a list of available MSOs
|
||||||
|
|
|
@ -31,7 +31,7 @@ class BanByeBaseIE(InfoExtractor):
|
||||||
|
|
||||||
|
|
||||||
class BanByeIE(BanByeBaseIE):
|
class BanByeIE(BanByeBaseIE):
|
||||||
_VALID_URL = r'https?://(?:www\.)?banbye.com/(?:en/)?watch/(?P<id>[\w-]+)'
|
_VALID_URL = r'https?://(?:www\.)?banbye\.com/(?:en/)?watch/(?P<id>[\w-]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://banbye.com/watch/v_ytfmvkVYLE8T',
|
'url': 'https://banbye.com/watch/v_ytfmvkVYLE8T',
|
||||||
'md5': '2f4ea15c5ca259a73d909b2cfd558eb5',
|
'md5': '2f4ea15c5ca259a73d909b2cfd558eb5',
|
||||||
|
@ -120,7 +120,7 @@ class BanByeIE(BanByeBaseIE):
|
||||||
|
|
||||||
|
|
||||||
class BanByeChannelIE(BanByeBaseIE):
|
class BanByeChannelIE(BanByeBaseIE):
|
||||||
_VALID_URL = r'https?://(?:www\.)?banbye.com/(?:en/)?channel/(?P<id>\w+)'
|
_VALID_URL = r'https?://(?:www\.)?banbye\.com/(?:en/)?channel/(?P<id>\w+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://banbye.com/channel/ch_wrealu24',
|
'url': 'https://banbye.com/channel/ch_wrealu24',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
|
|
@ -2,7 +2,7 @@ from .common import InfoExtractor
|
||||||
|
|
||||||
|
|
||||||
class BreitBartIE(InfoExtractor):
|
class BreitBartIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?:\/\/(?:www\.)breitbart.com/videos/v/(?P<id>[^/]+)'
|
_VALID_URL = r'https?://(?:www\.)?breitbart\.com/videos/v/(?P<id>[^/?#]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://www.breitbart.com/videos/v/5cOz1yup/?pl=Ij6NDOji',
|
'url': 'https://www.breitbart.com/videos/v/5cOz1yup/?pl=Ij6NDOji',
|
||||||
'md5': '0aa6d1d6e183ac5ca09207fe49f17ade',
|
'md5': '0aa6d1d6e183ac5ca09207fe49f17ade',
|
||||||
|
|
|
@ -10,7 +10,7 @@ from ..utils import (
|
||||||
|
|
||||||
|
|
||||||
class CraftsyIE(InfoExtractor):
|
class CraftsyIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://www.craftsy.com/class/(?P<id>[a-z0-9_-]+)/'
|
_VALID_URL = r'https?://www\.craftsy\.com/class/(?P<id>[\w-]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://www.craftsy.com/class/the-midnight-quilt-show-season-5/',
|
'url': 'https://www.craftsy.com/class/the-midnight-quilt-show-season-5/',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
|
|
@ -45,7 +45,7 @@ class CybraryBaseIE(InfoExtractor):
|
||||||
|
|
||||||
|
|
||||||
class CybraryIE(CybraryBaseIE):
|
class CybraryIE(CybraryBaseIE):
|
||||||
_VALID_URL = r'https?://app.cybrary.it/immersive/(?P<enrollment>[0-9]+)/activity/(?P<id>[0-9]+)'
|
_VALID_URL = r'https?://app\.cybrary\.it/immersive/(?P<enrollment>[0-9]+)/activity/(?P<id>[0-9]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://app.cybrary.it/immersive/12487950/activity/63102',
|
'url': 'https://app.cybrary.it/immersive/12487950/activity/63102',
|
||||||
'md5': '9ae12d37e555cb2ed554223a71a701d0',
|
'md5': '9ae12d37e555cb2ed554223a71a701d0',
|
||||||
|
@ -110,7 +110,7 @@ class CybraryIE(CybraryBaseIE):
|
||||||
|
|
||||||
|
|
||||||
class CybraryCourseIE(CybraryBaseIE):
|
class CybraryCourseIE(CybraryBaseIE):
|
||||||
_VALID_URL = r'https://app.cybrary.it/browse/course/(?P<id>[\w-]+)/?(?:$|[#?])'
|
_VALID_URL = r'https://app\.cybrary\.it/browse/course/(?P<id>[\w-]+)/?(?:$|[#?])'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://app.cybrary.it/browse/course/az-500-microsoft-azure-security-technologies',
|
'url': 'https://app.cybrary.it/browse/course/az-500-microsoft-azure-security-technologies',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
|
|
@ -8,7 +8,7 @@ from ..utils import (
|
||||||
|
|
||||||
|
|
||||||
class FifaIE(InfoExtractor):
|
class FifaIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://www.fifa.com/fifaplus/(?P<locale>\w{2})/watch/([^#?]+/)?(?P<id>\w+)'
|
_VALID_URL = r'https?://www\.fifa\.com/fifaplus/(?P<locale>\w{2})/watch/([^#?]+/)?(?P<id>\w+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://www.fifa.com/fifaplus/en/watch/7on10qPcnyLajDDU3ntg6y',
|
'url': 'https://www.fifa.com/fifaplus/en/watch/7on10qPcnyLajDDU3ntg6y',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
|
|
@ -3,7 +3,7 @@ from ..utils import int_or_none
|
||||||
|
|
||||||
|
|
||||||
class FilmmoduIE(InfoExtractor):
|
class FilmmoduIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www.)?filmmodu.org/(?P<id>[^/]+-(?:turkce-dublaj-izle|altyazili-izle))'
|
_VALID_URL = r'https?://(?:www\.)?filmmodu\.org/(?P<id>[^/]+-(?:turkce-dublaj-izle|altyazili-izle))'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://www.filmmodu.org/f9-altyazili-izle',
|
'url': 'https://www.filmmodu.org/f9-altyazili-izle',
|
||||||
'md5': 'aeefd955c2a508a5bdaa3bcec8eeb0d4',
|
'md5': 'aeefd955c2a508a5bdaa3bcec8eeb0d4',
|
||||||
|
|
|
@ -31,7 +31,7 @@ class ITProTVBaseIE(InfoExtractor):
|
||||||
|
|
||||||
|
|
||||||
class ITProTVIE(ITProTVBaseIE):
|
class ITProTVIE(ITProTVBaseIE):
|
||||||
_VALID_URL = r'https://app.itpro.tv/course/(?P<course>[\w-]+)/(?P<id>[\w-]+)'
|
_VALID_URL = r'https://app\.itpro\.tv/course/(?P<course>[\w-]+)/(?P<id>[\w-]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://app.itpro.tv/course/guided-tour/introductionitprotv',
|
'url': 'https://app.itpro.tv/course/guided-tour/introductionitprotv',
|
||||||
'md5': 'bca4a28c2667fd1a63052e71a94bb88c',
|
'md5': 'bca4a28c2667fd1a63052e71a94bb88c',
|
||||||
|
@ -102,7 +102,7 @@ class ITProTVIE(ITProTVBaseIE):
|
||||||
|
|
||||||
|
|
||||||
class ITProTVCourseIE(ITProTVBaseIE):
|
class ITProTVCourseIE(ITProTVBaseIE):
|
||||||
_VALID_URL = r'https?://app.itpro.tv/course/(?P<id>[\w-]+)/?(?:$|[#?])'
|
_VALID_URL = r'https?://app\.itpro\.tv/course/(?P<id>[\w-]+)/?(?:$|[#?])'
|
||||||
_TESTS = [
|
_TESTS = [
|
||||||
{
|
{
|
||||||
'url': 'https://app.itpro.tv/course/guided-tour',
|
'url': 'https://app.itpro.tv/course/guided-tour',
|
||||||
|
|
|
@ -10,7 +10,7 @@ from ..utils import (
|
||||||
|
|
||||||
|
|
||||||
class JableIE(InfoExtractor):
|
class JableIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www\.)?jable.tv/videos/(?P<id>[\w-]+)'
|
_VALID_URL = r'https?://(?:www\.)?jable\.tv/videos/(?P<id>[\w-]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://jable.tv/videos/pppd-812/',
|
'url': 'https://jable.tv/videos/pppd-812/',
|
||||||
'md5': 'f1537283a9bc073c31ff86ca35d9b2a6',
|
'md5': 'f1537283a9bc073c31ff86ca35d9b2a6',
|
||||||
|
@ -64,7 +64,7 @@ class JableIE(InfoExtractor):
|
||||||
|
|
||||||
|
|
||||||
class JablePlaylistIE(InfoExtractor):
|
class JablePlaylistIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www\.)?jable.tv/(?:categories|models|tags)/(?P<id>[\w-]+)'
|
_VALID_URL = r'https?://(?:www\.)?jable\.tv/(?:categories|models|tags)/(?P<id>[\w-]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://jable.tv/models/kaede-karen/',
|
'url': 'https://jable.tv/models/kaede-karen/',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
|
|
@ -3,7 +3,7 @@ from ..utils import update_url
|
||||||
|
|
||||||
|
|
||||||
class KommunetvIE(InfoExtractor):
|
class KommunetvIE(InfoExtractor):
|
||||||
_VALID_URL = r'https://(\w+).kommunetv.no/archive/(?P<id>\w+)'
|
_VALID_URL = r'https://\w+\.kommunetv\.no/archive/(?P<id>\w+)'
|
||||||
_TEST = {
|
_TEST = {
|
||||||
'url': 'https://oslo.kommunetv.no/archive/921',
|
'url': 'https://oslo.kommunetv.no/archive/921',
|
||||||
'md5': '5f102be308ee759be1e12b63d5da4bbc',
|
'md5': '5f102be308ee759be1e12b63d5da4bbc',
|
||||||
|
|
|
@ -13,7 +13,7 @@ from ..utils import (
|
||||||
|
|
||||||
|
|
||||||
class MainStreamingIE(InfoExtractor):
|
class MainStreamingIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:webtools-?)?(?P<host>[A-Za-z0-9-]*\.msvdn.net)/(?:embed|amp_embed|content)/(?P<id>\w+)'
|
_VALID_URL = r'https?://(?:webtools-?)?(?P<host>[A-Za-z0-9-]*\.msvdn\.net)/(?:embed|amp_embed|content)/(?P<id>\w+)'
|
||||||
_EMBED_REGEX = [rf'<iframe[^>]+?src=["\']?(?P<url>{_VALID_URL})["\']?']
|
_EMBED_REGEX = [rf'<iframe[^>]+?src=["\']?(?P<url>{_VALID_URL})["\']?']
|
||||||
IE_DESC = 'MainStreaming Player'
|
IE_DESC = 'MainStreaming Player'
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ from .common import InfoExtractor
|
||||||
|
|
||||||
|
|
||||||
class MediaiteIE(InfoExtractor):
|
class MediaiteIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www\.)?mediaite.com(?!/category)(?:/[\w-]+){2}'
|
_VALID_URL = r'https?://(?:www\.)?mediaite\.com(?!/category)(?:/[\w-]+){2}'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://www.mediaite.com/sports/bill-burr-roasts-nfl-for-promoting-black-lives-matter-while-scheduling-more-games-after-all-the-sht-they-know-about-cte/',
|
'url': 'https://www.mediaite.com/sports/bill-burr-roasts-nfl-for-promoting-black-lives-matter-while-scheduling-more-games-after-all-the-sht-they-know-about-cte/',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
|
|
@ -3,7 +3,7 @@ from ..utils import int_or_none, traverse_obj
|
||||||
|
|
||||||
|
|
||||||
class MochaVideoIE(InfoExtractor):
|
class MochaVideoIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://video.mocha.com.vn/(?P<video_slug>[\w-]+)'
|
_VALID_URL = r'https?://video\.mocha\.com\.vn/(?P<video_slug>[\w-]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'http://video.mocha.com.vn/chuyen-meo-gia-su-tu-thong-diep-cuoc-song-v18694039',
|
'url': 'http://video.mocha.com.vn/chuyen-meo-gia-su-tu-thong-diep-cuoc-song-v18694039',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
|
|
@ -247,7 +247,7 @@ class NFLArticleIE(NFLBaseIE):
|
||||||
|
|
||||||
class NFLPlusReplayIE(NFLBaseIE):
|
class NFLPlusReplayIE(NFLBaseIE):
|
||||||
IE_NAME = 'nfl.com:plus:replay'
|
IE_NAME = 'nfl.com:plus:replay'
|
||||||
_VALID_URL = r'https?://(?:www\.)?nfl.com/plus/games/(?P<slug>[\w-]+)(?:/(?P<id>\d+))?'
|
_VALID_URL = r'https?://(?:www\.)?nfl\.com/plus/games/(?P<slug>[\w-]+)(?:/(?P<id>\d+))?'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://www.nfl.com/plus/games/giants-at-vikings-2022-post-1/1572108',
|
'url': 'https://www.nfl.com/plus/games/giants-at-vikings-2022-post-1/1572108',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
@ -342,7 +342,7 @@ class NFLPlusReplayIE(NFLBaseIE):
|
||||||
|
|
||||||
class NFLPlusEpisodeIE(NFLBaseIE):
|
class NFLPlusEpisodeIE(NFLBaseIE):
|
||||||
IE_NAME = 'nfl.com:plus:episode'
|
IE_NAME = 'nfl.com:plus:episode'
|
||||||
_VALID_URL = r'https?://(?:www\.)?nfl.com/plus/episodes/(?P<id>[\w-]+)'
|
_VALID_URL = r'https?://(?:www\.)?nfl\.com/plus/episodes/(?P<id>[\w-]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'note': 'Subscription required',
|
'note': 'Subscription required',
|
||||||
'url': 'https://www.nfl.com/plus/episodes/kurt-s-qb-insider-conference-championships',
|
'url': 'https://www.nfl.com/plus/episodes/kurt-s-qb-insider-conference-championships',
|
||||||
|
|
|
@ -3,7 +3,7 @@ from ..utils import int_or_none, parse_duration, parse_iso8601
|
||||||
|
|
||||||
|
|
||||||
class NovaPlayIE(InfoExtractor):
|
class NovaPlayIE(InfoExtractor):
|
||||||
_VALID_URL = r'https://play.nova\.bg/video/.*/(?P<id>\d+)'
|
_VALID_URL = r'https://play\.nova\.bg/video/[^?#]+/(?P<id>\d+)'
|
||||||
_TESTS = [
|
_TESTS = [
|
||||||
{
|
{
|
||||||
'url': 'https://play.nova.bg/video/ochakvaite/season-0/ochakvaite-2022-07-22-sybudi-se-sat/606627',
|
'url': 'https://play.nova.bg/video/ochakvaite/season-0/ochakvaite-2022-07-22-sybudi-se-sat/606627',
|
||||||
|
|
|
@ -19,7 +19,7 @@ from ..utils import (
|
||||||
class NubilesPornIE(InfoExtractor):
|
class NubilesPornIE(InfoExtractor):
|
||||||
_NETRC_MACHINE = 'nubiles-porn'
|
_NETRC_MACHINE = 'nubiles-porn'
|
||||||
_VALID_URL = r'''(?x)
|
_VALID_URL = r'''(?x)
|
||||||
https://members.nubiles-porn.com/video/watch/(?P<id>\d+)
|
https://members\.nubiles-porn\.com/video/watch/(?P<id>\d+)
|
||||||
(?:/(?P<display_id>[\w\-]+-s(?P<season>\d+)e(?P<episode>\d+)))?
|
(?:/(?P<display_id>[\w\-]+-s(?P<season>\d+)e(?P<episode>\d+)))?
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ from ..utils import traverse_obj
|
||||||
|
|
||||||
|
|
||||||
class OfTVIE(InfoExtractor):
|
class OfTVIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www\.)?of.tv/video/(?P<id>\w+)'
|
_VALID_URL = r'https?://(?:www\.)?of\.tv/video/(?P<id>\w+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://of.tv/video/627d7d95b353db0001dadd1a',
|
'url': 'https://of.tv/video/627d7d95b353db0001dadd1a',
|
||||||
'md5': 'cb9cd5db3bb9ee0d32bfd7e373d6ef0a',
|
'md5': 'cb9cd5db3bb9ee0d32bfd7e373d6ef0a',
|
||||||
|
@ -34,7 +34,7 @@ class OfTVIE(InfoExtractor):
|
||||||
|
|
||||||
|
|
||||||
class OfTVPlaylistIE(InfoExtractor):
|
class OfTVPlaylistIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www\.)?of.tv/creators/(?P<id>[a-zA-Z0-9-]+)/.?'
|
_VALID_URL = r'https?://(?:www\.)?of\.tv/creators/(?P<id>[a-zA-Z0-9-]+)/?(?:$|[?#])'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://of.tv/creators/this-is-fire/',
|
'url': 'https://of.tv/creators/this-is-fire/',
|
||||||
'playlist_count': 8,
|
'playlist_count': 8,
|
||||||
|
|
|
@ -11,7 +11,7 @@ from ..utils import (
|
||||||
|
|
||||||
|
|
||||||
class SinaIE(InfoExtractor):
|
class SinaIE(InfoExtractor):
|
||||||
_VALID_URL = r'''(?x)https?://(?:.*?\.)?video\.sina\.com\.cn/
|
_VALID_URL = r'''(?x)https?://(?:[^/?#]+\.)?video\.sina\.com\.cn/
|
||||||
(?:
|
(?:
|
||||||
(?:view/|.*\#)(?P<id>\d+)|
|
(?:view/|.*\#)(?P<id>\d+)|
|
||||||
.+?/(?P<pseudo_id>[^/?#]+)(?:\.s?html)|
|
.+?/(?P<pseudo_id>[^/?#]+)(?:\.s?html)|
|
||||||
|
|
|
@ -1741,7 +1741,7 @@ class TwitterSpacesIE(TwitterBaseIE):
|
||||||
|
|
||||||
class TwitterShortenerIE(TwitterBaseIE):
|
class TwitterShortenerIE(TwitterBaseIE):
|
||||||
IE_NAME = 'twitter:shortener'
|
IE_NAME = 'twitter:shortener'
|
||||||
_VALID_URL = r'https?://t.co/(?P<id>[^?]+)|tco:(?P<eid>[^?]+)'
|
_VALID_URL = r'https?://t\.co/(?P<id>[^?#]+)|tco:(?P<eid>[^?#]+)'
|
||||||
_BASE_URL = 'https://t.co/'
|
_BASE_URL = 'https://t.co/'
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
|
|
|
@ -10,7 +10,7 @@ from ..utils import (
|
||||||
|
|
||||||
|
|
||||||
class UtreonIE(InfoExtractor):
|
class UtreonIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www\.)?utreon.com/v/(?P<id>[a-zA-Z0-9_-]+)'
|
_VALID_URL = r'https?://(?:www\.)?utreon\.com/v/(?P<id>[\w-]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://utreon.com/v/z_I7ikQbuDw',
|
'url': 'https://utreon.com/v/z_I7ikQbuDw',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
|
|
@ -97,12 +97,12 @@ class VKIE(VKBaseIE):
|
||||||
(?:
|
(?:
|
||||||
(?:
|
(?:
|
||||||
(?:(?:m|new)\.)?vk\.com/video_|
|
(?:(?:m|new)\.)?vk\.com/video_|
|
||||||
(?:www\.)?daxab.com/
|
(?:www\.)?daxab\.com/
|
||||||
)
|
)
|
||||||
ext\.php\?(?P<embed_query>.*?\boid=(?P<oid>-?\d+).*?\bid=(?P<id>\d+).*)|
|
ext\.php\?(?P<embed_query>.*?\boid=(?P<oid>-?\d+).*?\bid=(?P<id>\d+).*)|
|
||||||
(?:
|
(?:
|
||||||
(?:(?:m|new)\.)?vk\.com/(?:.+?\?.*?z=)?(?:video|clip)|
|
(?:(?:m|new)\.)?vk\.com/(?:.+?\?.*?z=)?(?:video|clip)|
|
||||||
(?:www\.)?daxab.com/embed/
|
(?:www\.)?daxab\.com/embed/
|
||||||
)
|
)
|
||||||
(?P<videoid>-?\d+_\d+)(?:.*\blist=(?P<list_id>([\da-f]+)|(ln-[\da-zA-Z]+)))?
|
(?P<videoid>-?\d+_\d+)(?:.*\blist=(?P<list_id>([\da-f]+)|(ln-[\da-zA-Z]+)))?
|
||||||
)
|
)
|
||||||
|
|
|
@ -182,7 +182,7 @@ class WeverseBaseIE(InfoExtractor):
|
||||||
|
|
||||||
|
|
||||||
class WeverseIE(WeverseBaseIE):
|
class WeverseIE(WeverseBaseIE):
|
||||||
_VALID_URL = r'https?://(?:www\.|m\.)?weverse.io/(?P<artist>[^/?#]+)/live/(?P<id>[\d-]+)'
|
_VALID_URL = r'https?://(?:www\.|m\.)?weverse\.io/(?P<artist>[^/?#]+)/live/(?P<id>[\d-]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://weverse.io/billlie/live/0-107323480',
|
'url': 'https://weverse.io/billlie/live/0-107323480',
|
||||||
'md5': '1fa849f00181eef9100d3c8254c47979',
|
'md5': '1fa849f00181eef9100d3c8254c47979',
|
||||||
|
@ -344,7 +344,7 @@ class WeverseIE(WeverseBaseIE):
|
||||||
|
|
||||||
|
|
||||||
class WeverseMediaIE(WeverseBaseIE):
|
class WeverseMediaIE(WeverseBaseIE):
|
||||||
_VALID_URL = r'https?://(?:www\.|m\.)?weverse.io/(?P<artist>[^/?#]+)/media/(?P<id>[\d-]+)'
|
_VALID_URL = r'https?://(?:www\.|m\.)?weverse\.io/(?P<artist>[^/?#]+)/media/(?P<id>[\d-]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://weverse.io/billlie/media/4-116372884',
|
'url': 'https://weverse.io/billlie/media/4-116372884',
|
||||||
'md5': '8efc9cfd61b2f25209eb1a5326314d28',
|
'md5': '8efc9cfd61b2f25209eb1a5326314d28',
|
||||||
|
@ -420,7 +420,7 @@ class WeverseMediaIE(WeverseBaseIE):
|
||||||
|
|
||||||
|
|
||||||
class WeverseMomentIE(WeverseBaseIE):
|
class WeverseMomentIE(WeverseBaseIE):
|
||||||
_VALID_URL = r'https?://(?:www\.|m\.)?weverse.io/(?P<artist>[^/?#]+)/moment/(?P<uid>[\da-f]+)/post/(?P<id>[\d-]+)'
|
_VALID_URL = r'https?://(?:www\.|m\.)?weverse\.io/(?P<artist>[^/?#]+)/moment/(?P<uid>[\da-f]+)/post/(?P<id>[\d-]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://weverse.io/secretnumber/moment/66a07e164b56a696ee71c99315ffe27b/post/1-117229444',
|
'url': 'https://weverse.io/secretnumber/moment/66a07e164b56a696ee71c99315ffe27b/post/1-117229444',
|
||||||
'md5': '87733ac19a54081b7dfc2442036d282b',
|
'md5': '87733ac19a54081b7dfc2442036d282b',
|
||||||
|
@ -516,7 +516,7 @@ class WeverseTabBaseIE(WeverseBaseIE):
|
||||||
|
|
||||||
|
|
||||||
class WeverseLiveTabIE(WeverseTabBaseIE):
|
class WeverseLiveTabIE(WeverseTabBaseIE):
|
||||||
_VALID_URL = r'https?://(?:www\.|m\.)?weverse.io/(?P<id>[^/?#]+)/live/?(?:[?#]|$)'
|
_VALID_URL = r'https?://(?:www\.|m\.)?weverse\.io/(?P<id>[^/?#]+)/live/?(?:[?#]|$)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://weverse.io/billlie/live/',
|
'url': 'https://weverse.io/billlie/live/',
|
||||||
'playlist_mincount': 55,
|
'playlist_mincount': 55,
|
||||||
|
@ -534,7 +534,7 @@ class WeverseLiveTabIE(WeverseTabBaseIE):
|
||||||
|
|
||||||
|
|
||||||
class WeverseMediaTabIE(WeverseTabBaseIE):
|
class WeverseMediaTabIE(WeverseTabBaseIE):
|
||||||
_VALID_URL = r'https?://(?:www\.|m\.)?weverse.io/(?P<id>[^/?#]+)/media(?:/|/all|/new)?(?:[?#]|$)'
|
_VALID_URL = r'https?://(?:www\.|m\.)?weverse\.io/(?P<id>[^/?#]+)/media(?:/|/all|/new)?(?:[?#]|$)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://weverse.io/billlie/media/',
|
'url': 'https://weverse.io/billlie/media/',
|
||||||
'playlist_mincount': 231,
|
'playlist_mincount': 231,
|
||||||
|
@ -558,7 +558,7 @@ class WeverseMediaTabIE(WeverseTabBaseIE):
|
||||||
|
|
||||||
|
|
||||||
class WeverseLiveIE(WeverseBaseIE):
|
class WeverseLiveIE(WeverseBaseIE):
|
||||||
_VALID_URL = r'https?://(?:www\.|m\.)?weverse.io/(?P<id>[^/?#]+)/?(?:[?#]|$)'
|
_VALID_URL = r'https?://(?:www\.|m\.)?weverse\.io/(?P<id>[^/?#]+)/?(?:[?#]|$)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://weverse.io/purplekiss',
|
'url': 'https://weverse.io/purplekiss',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
|
|
@ -11,7 +11,7 @@ class WimTVIE(InfoExtractor):
|
||||||
_player = None
|
_player = None
|
||||||
_UUID_RE = r'[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}'
|
_UUID_RE = r'[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}'
|
||||||
_VALID_URL = r'''(?x:
|
_VALID_URL = r'''(?x:
|
||||||
https?://platform.wim.tv/
|
https?://platform\.wim\.tv/
|
||||||
(?:
|
(?:
|
||||||
(?:embed/)?\?
|
(?:embed/)?\?
|
||||||
|\#/webtv/.+?/
|
|\#/webtv/.+?/
|
||||||
|
|
|
@ -24,7 +24,7 @@ class XHamsterIE(InfoExtractor):
|
||||||
_DOMAINS = r'(?:xhamster\.(?:com|one|desi)|xhms\.pro|xhamster\d+\.com|xhday\.com|xhvid\.com)'
|
_DOMAINS = r'(?:xhamster\.(?:com|one|desi)|xhms\.pro|xhamster\d+\.com|xhday\.com|xhvid\.com)'
|
||||||
_VALID_URL = r'''(?x)
|
_VALID_URL = r'''(?x)
|
||||||
https?://
|
https?://
|
||||||
(?:.+?\.)?%s/
|
(?:[^/?#]+\.)?%s/
|
||||||
(?:
|
(?:
|
||||||
movies/(?P<id>[\dA-Za-z]+)/(?P<display_id>[^/]*)\.html|
|
movies/(?P<id>[\dA-Za-z]+)/(?P<display_id>[^/]*)\.html|
|
||||||
videos/(?P<display_id_2>[^/]*)-(?P<id_2>[\dA-Za-z]+)
|
videos/(?P<display_id_2>[^/]*)-(?P<id_2>[\dA-Za-z]+)
|
||||||
|
@ -372,7 +372,7 @@ class XHamsterIE(InfoExtractor):
|
||||||
|
|
||||||
|
|
||||||
class XHamsterEmbedIE(InfoExtractor):
|
class XHamsterEmbedIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:.+?\.)?%s/xembed\.php\?video=(?P<id>\d+)' % XHamsterIE._DOMAINS
|
_VALID_URL = r'https?://(?:[^/?#]+\.)?%s/xembed\.php\?video=(?P<id>\d+)' % XHamsterIE._DOMAINS
|
||||||
_EMBED_REGEX = [r'<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//(?:www\.)?xhamster\.com/xembed\.php\?video=\d+)\1']
|
_EMBED_REGEX = [r'<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//(?:www\.)?xhamster\.com/xembed\.php\?video=\d+)\1']
|
||||||
_TEST = {
|
_TEST = {
|
||||||
'url': 'http://xhamster.com/xembed.php?video=3328539',
|
'url': 'http://xhamster.com/xembed.php?video=3328539',
|
||||||
|
|
|
@ -949,7 +949,7 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
|
||||||
main_rm = next(main_retries)
|
main_rm = next(main_retries)
|
||||||
# Manual retry loop for multiple RetryManagers
|
# Manual retry loop for multiple RetryManagers
|
||||||
# The proper RetryManager MUST be advanced after an error
|
# The proper RetryManager MUST be advanced after an error
|
||||||
# and it's result MUST be checked if the manager is non fatal
|
# and its result MUST be checked if the manager is non fatal
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
response = self._call_api(
|
response = self._call_api(
|
||||||
|
|
|
@ -13,7 +13,7 @@ from ..utils import (
|
||||||
|
|
||||||
class ZoomIE(InfoExtractor):
|
class ZoomIE(InfoExtractor):
|
||||||
IE_NAME = 'zoom'
|
IE_NAME = 'zoom'
|
||||||
_VALID_URL = r'(?P<base_url>https?://(?:[^.]+\.)?zoom.us/)rec(?:ording)?/(?P<type>play|share)/(?P<id>[A-Za-z0-9_.-]+)'
|
_VALID_URL = r'(?P<base_url>https?://(?:[^.]+\.)?zoom\.us/)rec(?:ording)?/(?P<type>play|share)/(?P<id>[\w.-]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://economist.zoom.us/rec/play/dUk_CNBETmZ5VA2BwEl-jjakPpJ3M1pcfVYAPRsoIbEByGsLjUZtaa4yCATQuOL3der8BlTwxQePl_j0.EImBkXzTIaPvdZO5',
|
'url': 'https://economist.zoom.us/rec/play/dUk_CNBETmZ5VA2BwEl-jjakPpJ3M1pcfVYAPRsoIbEByGsLjUZtaa4yCATQuOL3der8BlTwxQePl_j0.EImBkXzTIaPvdZO5',
|
||||||
'md5': 'ab445e8c911fddc4f9adc842c2c5d434',
|
'md5': 'ab445e8c911fddc4f9adc842c2c5d434',
|
||||||
|
|
|
@ -727,7 +727,7 @@ def create_parser():
|
||||||
authentication.add_option(
|
authentication.add_option(
|
||||||
'--video-password',
|
'--video-password',
|
||||||
dest='videopassword', metavar='PASSWORD',
|
dest='videopassword', metavar='PASSWORD',
|
||||||
help='Video password (vimeo, youku)')
|
help='Video-specific password')
|
||||||
authentication.add_option(
|
authentication.add_option(
|
||||||
'--ap-mso',
|
'--ap-mso',
|
||||||
dest='ap_mso', metavar='MSO',
|
dest='ap_mso', metavar='MSO',
|
||||||
|
|
Loading…
Reference in a new issue