mirror of
https://codeberg.org/polarisfm/youtube-dl
synced 2024-11-26 18:34:32 +01:00
Merge branch 'master' of https://github.com/rg3/youtube-dl
This commit is contained in:
commit
fd7e0c58ca
@ -7,7 +7,7 @@ from ..utils import ExtractorError
|
|||||||
|
|
||||||
|
|
||||||
class ChaturbateIE(InfoExtractor):
|
class ChaturbateIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:[^/]+\.)?chaturbate\.com/(?P<id>[^/?#]+)'
|
_VALID_URL = r'https?://(?:[^/]+\.)?chaturbate\.com/(?:fullvideo/?\?.*?\bb=)?(?P<id>[^/?&#]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://www.chaturbate.com/siswet19/',
|
'url': 'https://www.chaturbate.com/siswet19/',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
@ -21,6 +21,9 @@ class ChaturbateIE(InfoExtractor):
|
|||||||
'skip_download': True,
|
'skip_download': True,
|
||||||
},
|
},
|
||||||
'skip': 'Room is offline',
|
'skip': 'Room is offline',
|
||||||
|
}, {
|
||||||
|
'url': 'https://chaturbate.com/fullvideo/?b=caylin',
|
||||||
|
'only_matching': True,
|
||||||
}, {
|
}, {
|
||||||
'url': 'https://en.chaturbate.com/siswet19/',
|
'url': 'https://en.chaturbate.com/siswet19/',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
@ -32,7 +35,8 @@ class ChaturbateIE(InfoExtractor):
|
|||||||
video_id = self._match_id(url)
|
video_id = self._match_id(url)
|
||||||
|
|
||||||
webpage = self._download_webpage(
|
webpage = self._download_webpage(
|
||||||
url, video_id, headers=self.geo_verification_headers())
|
'https://chaturbate.com/%s/' % video_id, video_id,
|
||||||
|
headers=self.geo_verification_headers())
|
||||||
|
|
||||||
m3u8_urls = []
|
m3u8_urls = []
|
||||||
|
|
||||||
|
@ -1129,6 +1129,7 @@ from .telegraaf import TelegraafIE
|
|||||||
from .telemb import TeleMBIE
|
from .telemb import TeleMBIE
|
||||||
from .telequebec import (
|
from .telequebec import (
|
||||||
TeleQuebecIE,
|
TeleQuebecIE,
|
||||||
|
TeleQuebecSquatIE,
|
||||||
TeleQuebecEmissionIE,
|
TeleQuebecEmissionIE,
|
||||||
TeleQuebecLiveIE,
|
TeleQuebecLiveIE,
|
||||||
)
|
)
|
||||||
@ -1413,7 +1414,6 @@ from .weibo import (
|
|||||||
WeiboMobileIE
|
WeiboMobileIE
|
||||||
)
|
)
|
||||||
from .weiqitv import WeiqiTVIE
|
from .weiqitv import WeiqiTVIE
|
||||||
from .wimp import WimpIE
|
|
||||||
from .wistia import WistiaIE
|
from .wistia import WistiaIE
|
||||||
from .worldstarhiphop import WorldStarHipHopIE
|
from .worldstarhiphop import WorldStarHipHopIE
|
||||||
from .wsj import (
|
from .wsj import (
|
||||||
|
@ -11,7 +11,7 @@ from ..utils import (
|
|||||||
|
|
||||||
|
|
||||||
class GfycatIE(InfoExtractor):
|
class GfycatIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www\.)?gfycat\.com/(?:ru/|ifr/|gifs/detail/)?(?P<id>[^-/?#]+)'
|
_VALID_URL = r'https?://(?:(?:www|giant|thumbs)\.)?gfycat\.com/(?:ru/|ifr/|gifs/detail/)?(?P<id>[^-/?#\.]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'http://gfycat.com/DeadlyDecisiveGermanpinscher',
|
'url': 'http://gfycat.com/DeadlyDecisiveGermanpinscher',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
@ -53,6 +53,12 @@ class GfycatIE(InfoExtractor):
|
|||||||
}, {
|
}, {
|
||||||
'url': 'https://gfycat.com/acceptablehappygoluckyharborporpoise-baseball',
|
'url': 'https://gfycat.com/acceptablehappygoluckyharborporpoise-baseball',
|
||||||
'only_matching': True
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'https://thumbs.gfycat.com/acceptablehappygoluckyharborporpoise-size_restricted.gif',
|
||||||
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'https://giant.gfycat.com/acceptablehappygoluckyharborporpoise.mp4',
|
||||||
|
'only_matching': True
|
||||||
}]
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
|
@ -406,7 +406,7 @@ class NRKTVSerieBaseIE(InfoExtractor):
|
|||||||
def _extract_series(self, webpage, display_id, fatal=True):
|
def _extract_series(self, webpage, display_id, fatal=True):
|
||||||
config = self._parse_json(
|
config = self._parse_json(
|
||||||
self._search_regex(
|
self._search_regex(
|
||||||
(r'INITIAL_DATA_*\s*=\s*({.+?})\s*;',
|
(r'INITIAL_DATA(?:_V\d)?_*\s*=\s*({.+?})\s*;',
|
||||||
r'({.+?})\s*,\s*"[^"]+"\s*\)\s*</script>'),
|
r'({.+?})\s*,\s*"[^"]+"\s*\)\s*</script>'),
|
||||||
webpage, 'config', default='{}' if not fatal else NO_DEFAULT),
|
webpage, 'config', default='{}' if not fatal else NO_DEFAULT),
|
||||||
display_id, fatal=False)
|
display_id, fatal=False)
|
||||||
|
@ -246,7 +246,7 @@ class OpenloadIE(InfoExtractor):
|
|||||||
_DOMAINS = r'''
|
_DOMAINS = r'''
|
||||||
(?:
|
(?:
|
||||||
openload\.(?:co|io|link|pw)|
|
openload\.(?:co|io|link|pw)|
|
||||||
oload\.(?:tv|best|biz|stream|site|xyz|win|download|cloud|cc|icu|fun|club|info|online|press|pw|life|live|space|services|website|vip)|
|
oload\.(?:tv|best|biz|stream|site|xyz|win|download|cloud|cc|icu|fun|club|info|online|monster|press|pw|life|live|space|services|website|vip)|
|
||||||
oladblock\.(?:services|xyz|me)|openloed\.co
|
oladblock\.(?:services|xyz|me)|openloed\.co
|
||||||
)
|
)
|
||||||
'''
|
'''
|
||||||
@ -365,6 +365,9 @@ class OpenloadIE(InfoExtractor):
|
|||||||
}, {
|
}, {
|
||||||
'url': 'https://oload.online/f/W8o2UfN1vNY/',
|
'url': 'https://oload.online/f/W8o2UfN1vNY/',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
|
}, {
|
||||||
|
'url': 'https://oload.monster/f/W8o2UfN1vNY/',
|
||||||
|
'only_matching': True,
|
||||||
}, {
|
}, {
|
||||||
'url': 'https://oload.press/embed/drTBl1aOTvk/',
|
'url': 'https://oload.press/embed/drTBl1aOTvk/',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
|
@ -18,81 +18,385 @@ from ..utils import (
|
|||||||
class PeerTubeIE(InfoExtractor):
|
class PeerTubeIE(InfoExtractor):
|
||||||
_INSTANCES_RE = r'''(?:
|
_INSTANCES_RE = r'''(?:
|
||||||
# Taken from https://instances.joinpeertube.org/instances
|
# Taken from https://instances.joinpeertube.org/instances
|
||||||
|
peertube\.rainbowswingers\.net|
|
||||||
|
tube\.stanisic\.nl|
|
||||||
|
peer\.suiri\.us|
|
||||||
|
medias\.libox\.fr|
|
||||||
|
videomensoif\.ynh\.fr|
|
||||||
|
peertube\.travelpandas\.eu|
|
||||||
|
peertube\.rachetjay\.fr|
|
||||||
|
peertube\.montecsys\.fr|
|
||||||
|
tube\.eskuero\.me|
|
||||||
|
peer\.tube|
|
||||||
|
peertube\.umeahackerspace\.se|
|
||||||
|
tube\.nx-pod\.de|
|
||||||
|
video\.monsieurbidouille\.fr|
|
||||||
tube\.openalgeria\.org|
|
tube\.openalgeria\.org|
|
||||||
peertube\.pointsecu\.fr|
|
vid\.lelux\.fi|
|
||||||
|
video\.anormallostpod\.ovh|
|
||||||
|
tube\.crapaud-fou\.org|
|
||||||
|
peertube\.stemy\.me|
|
||||||
|
lostpod\.space|
|
||||||
|
exode\.me|
|
||||||
|
peertube\.snargol\.com|
|
||||||
|
vis\.ion\.ovh|
|
||||||
|
videosdulib\.re|
|
||||||
|
v\.mbius\.io|
|
||||||
|
videos\.judrey\.eu|
|
||||||
|
peertube\.osureplayviewer\.xyz|
|
||||||
|
peertube\.mathieufamily\.ovh|
|
||||||
|
www\.videos-libr\.es|
|
||||||
|
fightforinfo\.com|
|
||||||
|
peertube\.fediverse\.ru|
|
||||||
|
peertube\.oiseauroch\.fr|
|
||||||
|
video\.nesven\.eu|
|
||||||
|
v\.bearvideo\.win|
|
||||||
|
video\.qoto\.org|
|
||||||
|
justporn\.cc|
|
||||||
|
video\.vny\.fr|
|
||||||
|
peervideo\.club|
|
||||||
|
tube\.taker\.fr|
|
||||||
|
peertube\.chantierlibre\.org|
|
||||||
|
tube\.ipfixe\.info|
|
||||||
|
tube\.kicou\.info|
|
||||||
|
tube\.dodsorf\.as|
|
||||||
|
videobit\.cc|
|
||||||
|
video\.yukari\.moe|
|
||||||
|
videos\.elbinario\.net|
|
||||||
|
hkvideo\.live|
|
||||||
|
pt\.tux\.tf|
|
||||||
|
www\.hkvideo\.live|
|
||||||
|
FIGHTFORINFO\.com|
|
||||||
|
pt\.765racing\.com|
|
||||||
|
peertube\.gnumeria\.eu\.org|
|
||||||
|
nordenmedia\.com|
|
||||||
|
peertube\.co\.uk|
|
||||||
|
tube\.darfweb\.eu|
|
||||||
|
tube\.kalah-france\.org|
|
||||||
|
0ch\.in|
|
||||||
|
vod\.mochi\.academy|
|
||||||
|
film\.node9\.org|
|
||||||
|
peertube\.hatthieves\.es|
|
||||||
|
video\.fitchfamily\.org|
|
||||||
|
peertube\.ddns\.net|
|
||||||
|
video\.ifuncle\.kr|
|
||||||
|
video\.fdlibre\.eu|
|
||||||
|
tube\.22decembre\.eu|
|
||||||
|
peertube\.harmoniescreatives\.com|
|
||||||
|
tube\.fabrigli\.fr|
|
||||||
|
video\.thedwyers\.co|
|
||||||
|
video\.bruitbruit\.com|
|
||||||
|
peertube\.foxfam\.club|
|
||||||
|
peer\.philoxweb\.be|
|
||||||
|
videos\.bugs\.social|
|
||||||
|
peertube\.malbert\.xyz|
|
||||||
|
peertube\.bilange\.ca|
|
||||||
|
libretube\.net|
|
||||||
|
diytelevision\.com|
|
||||||
|
peertube\.fedilab\.app|
|
||||||
|
libre\.video|
|
||||||
|
video\.mstddntfdn\.online|
|
||||||
|
us\.tv|
|
||||||
|
peertube\.sl-network\.fr|
|
||||||
|
peertube\.dynlinux\.io|
|
||||||
|
peertube\.david\.durieux\.family|
|
||||||
|
peertube\.linuxrocks\.online|
|
||||||
|
peerwatch\.xyz|
|
||||||
|
v\.kretschmann\.social|
|
||||||
|
tube\.otter\.sh|
|
||||||
|
yt\.is\.nota\.live|
|
||||||
|
tube\.dragonpsi\.xyz|
|
||||||
|
peertube\.boneheadmedia\.com|
|
||||||
|
videos\.funkwhale\.audio|
|
||||||
|
watch\.44con\.com|
|
||||||
|
peertube\.gcaillaut\.fr|
|
||||||
|
peertube\.icu|
|
||||||
|
pony\.tube|
|
||||||
|
spacepub\.space|
|
||||||
|
tube\.stbr\.io|
|
||||||
|
v\.mom-gay\.faith|
|
||||||
|
tube\.port0\.xyz|
|
||||||
|
peertube\.simounet\.net|
|
||||||
|
play\.jergefelt\.se|
|
||||||
|
peertube\.zeteo\.me|
|
||||||
|
tube\.danq\.me|
|
||||||
|
peertube\.kerenon\.com|
|
||||||
|
tube\.fab-l3\.org|
|
||||||
|
tube\.calculate\.social|
|
||||||
|
peertube\.mckillop\.org|
|
||||||
|
tube\.netzspielplatz\.de|
|
||||||
|
vod\.ksite\.de|
|
||||||
|
peertube\.laas\.fr|
|
||||||
|
tube\.govital\.net|
|
||||||
|
peertube\.stephenson\.cc|
|
||||||
|
bistule\.nohost\.me|
|
||||||
|
peertube\.kajalinifi\.de|
|
||||||
|
video\.ploud\.jp|
|
||||||
|
video\.omniatv\.com|
|
||||||
|
peertube\.ffs2play\.fr|
|
||||||
|
peertube\.leboulaire\.ovh|
|
||||||
|
peertube\.tronic-studio\.com|
|
||||||
|
peertube\.public\.cat|
|
||||||
|
peertube\.metalbanana\.net|
|
||||||
|
video\.1000i100\.fr|
|
||||||
|
peertube\.alter-nativ-voll\.de|
|
||||||
|
tube\.pasa\.tf|
|
||||||
|
tube\.worldofhauru\.xyz|
|
||||||
|
pt\.kamp\.site|
|
||||||
|
peertube\.teleassist\.fr|
|
||||||
|
videos\.mleduc\.xyz|
|
||||||
|
conf\.tube|
|
||||||
|
media\.privacyinternational\.org|
|
||||||
|
pt\.forty-two\.nl|
|
||||||
|
video\.halle-leaks\.de|
|
||||||
|
video\.grosskopfgames\.de|
|
||||||
|
peertube\.schaeferit\.de|
|
||||||
|
peertube\.jackbot\.fr|
|
||||||
|
tube\.extinctionrebellion\.fr|
|
||||||
|
peertube\.f-si\.org|
|
||||||
|
video\.subak\.ovh|
|
||||||
|
videos\.koweb\.fr|
|
||||||
|
peertube\.zergy\.net|
|
||||||
|
peertube\.roflcopter\.fr|
|
||||||
|
peertube\.floss-marketing-school\.com|
|
||||||
|
vloggers\.social|
|
||||||
|
peertube\.iriseden\.eu|
|
||||||
|
videos\.ubuntu-paris\.org|
|
||||||
|
peertube\.mastodon\.host|
|
||||||
|
armstube\.com|
|
||||||
|
peertube\.s2s\.video|
|
||||||
|
peertube\.lol|
|
||||||
|
tube\.open-plug\.eu|
|
||||||
|
open\.tube|
|
||||||
|
peertube\.ch|
|
||||||
|
peertube\.normandie-libre\.fr|
|
||||||
|
peertube\.slat\.org|
|
||||||
|
video\.lacaveatonton\.ovh|
|
||||||
|
peertube\.uno|
|
||||||
|
peertube\.servebeer\.com|
|
||||||
|
peertube\.fedi\.quebec|
|
||||||
|
tube\.h3z\.jp|
|
||||||
|
tube\.plus200\.com|
|
||||||
|
peertube\.eric\.ovh|
|
||||||
|
tube\.metadocs\.cc|
|
||||||
|
tube\.unmondemeilleur\.eu|
|
||||||
|
gouttedeau\.space|
|
||||||
|
video\.antirep\.net|
|
||||||
|
nrop\.cant\.at|
|
||||||
|
tube\.ksl-bmx\.de|
|
||||||
|
tube\.plaf\.fr|
|
||||||
|
tube\.tchncs\.de|
|
||||||
|
video\.devinberg\.com|
|
||||||
|
hitchtube\.fr|
|
||||||
|
peertube\.kosebamse\.com|
|
||||||
|
yunopeertube\.myddns\.me|
|
||||||
|
peertube\.varney\.fr|
|
||||||
|
peertube\.anon-kenkai\.com|
|
||||||
|
tube\.maiti\.info|
|
||||||
|
tubee\.fr|
|
||||||
|
videos\.dinofly\.com|
|
||||||
|
toobnix\.org|
|
||||||
|
videotape\.me|
|
||||||
|
voca\.tube|
|
||||||
|
video\.heromuster\.com|
|
||||||
|
video\.lemediatv\.fr|
|
||||||
|
video\.up\.edu\.ph|
|
||||||
|
balafon\.video|
|
||||||
|
video\.ivel\.fr|
|
||||||
|
thickrips\.cloud|
|
||||||
|
pt\.laurentkruger\.fr|
|
||||||
|
video\.monarch-pass\.net|
|
||||||
|
peertube\.artica\.center|
|
||||||
|
video\.alternanet\.fr|
|
||||||
|
indymotion\.fr|
|
||||||
|
fanvid\.stopthatimp\.net|
|
||||||
|
video\.farci\.org|
|
||||||
|
v\.lesterpig\.com|
|
||||||
|
video\.okaris\.de|
|
||||||
|
tube\.pawelko\.net|
|
||||||
|
peertube\.mablr\.org|
|
||||||
|
tube\.fede\.re|
|
||||||
|
pytu\.be|
|
||||||
|
evertron\.tv|
|
||||||
|
devtube\.dev-wiki\.de|
|
||||||
|
raptube\.antipub\.org|
|
||||||
|
video\.selea\.se|
|
||||||
|
peertube\.mygaia\.org|
|
||||||
|
video\.oh14\.de|
|
||||||
|
peertube\.livingutopia\.org|
|
||||||
|
peertube\.the-penguin\.de|
|
||||||
|
tube\.thechangebook\.org|
|
||||||
|
tube\.anjara\.eu|
|
||||||
|
pt\.pube\.tk|
|
||||||
|
video\.samedi\.pm|
|
||||||
|
mplayer\.demouliere\.eu|
|
||||||
|
widemus\.de|
|
||||||
|
peertube\.me|
|
||||||
|
peertube\.zapashcanon\.fr|
|
||||||
|
video\.latavernedejohnjohn\.fr|
|
||||||
|
peertube\.pcservice46\.fr|
|
||||||
|
peertube\.mazzonetto\.eu|
|
||||||
|
video\.irem\.univ-paris-diderot\.fr|
|
||||||
|
video\.livecchi\.cloud|
|
||||||
|
alttube\.fr|
|
||||||
|
video\.coop\.tools|
|
||||||
|
video\.cabane-libre\.org|
|
||||||
|
peertube\.openstreetmap\.fr|
|
||||||
|
videos\.alolise\.org|
|
||||||
|
irrsinn\.video|
|
||||||
|
video\.antopie\.org|
|
||||||
|
scitech\.video|
|
||||||
|
tube2\.nemsia\.org|
|
||||||
|
video\.amic37\.fr|
|
||||||
|
peertube\.freeforge\.eu|
|
||||||
|
video\.arbitrarion\.com|
|
||||||
|
video\.datsemultimedia\.com|
|
||||||
|
stoptrackingus\.tv|
|
||||||
|
peertube\.ricostrongxxx\.com|
|
||||||
|
docker\.videos\.lecygnenoir\.info|
|
||||||
|
peertube\.togart\.de|
|
||||||
|
tube\.postblue\.info|
|
||||||
|
videos\.domainepublic\.net|
|
||||||
|
peertube\.cyber-tribal\.com|
|
||||||
|
video\.gresille\.org|
|
||||||
|
peertube\.dsmouse\.net|
|
||||||
|
cinema\.yunohost\.support|
|
||||||
|
tube\.theocevaer\.fr|
|
||||||
|
repro\.video|
|
||||||
|
tube\.4aem\.com|
|
||||||
|
quaziinc\.com|
|
||||||
|
peertube\.metawurst\.space|
|
||||||
|
videos\.wakapo\.com|
|
||||||
|
video\.ploud\.fr|
|
||||||
|
video\.freeradical\.zone|
|
||||||
|
tube\.valinor\.fr|
|
||||||
|
refuznik\.video|
|
||||||
|
pt\.kircheneuenburg\.de|
|
||||||
|
peertube\.asrun\.eu|
|
||||||
|
peertube\.lagob\.fr|
|
||||||
|
videos\.side-ways\.net|
|
||||||
|
91video\.online|
|
||||||
|
video\.valme\.io|
|
||||||
|
video\.taboulisme\.com|
|
||||||
|
videos-libr\.es|
|
||||||
|
tv\.mooh\.fr|
|
||||||
|
nuage\.acostey\.fr|
|
||||||
|
video\.monsieur-a\.fr|
|
||||||
|
peertube\.librelois\.fr|
|
||||||
|
videos\.pair2jeux\.tube|
|
||||||
|
videos\.pueseso\.club|
|
||||||
|
peer\.mathdacloud\.ovh|
|
||||||
|
media\.assassinate-you\.net|
|
||||||
|
vidcommons\.org|
|
||||||
|
ptube\.rousset\.nom\.fr|
|
||||||
|
tube\.cyano\.at|
|
||||||
|
videos\.squat\.net|
|
||||||
|
video\.iphodase\.fr|
|
||||||
|
peertube\.makotoworkshop\.org|
|
||||||
|
peertube\.serveur\.slv-valbonne\.fr|
|
||||||
|
vault\.mle\.party|
|
||||||
|
hostyour\.tv|
|
||||||
|
videos\.hack2g2\.fr|
|
||||||
|
libre\.tube|
|
||||||
|
pire\.artisanlogiciel\.net|
|
||||||
|
videos\.numerique-en-commun\.fr|
|
||||||
|
video\.netsyms\.com|
|
||||||
|
video\.die-partei\.social|
|
||||||
|
video\.writeas\.org|
|
||||||
|
peertube\.swarm\.solvingmaz\.es|
|
||||||
|
tube\.pericoloso\.ovh|
|
||||||
|
watching\.cypherpunk\.observer|
|
||||||
|
videos\.adhocmusic\.com|
|
||||||
|
tube\.rfc1149\.net|
|
||||||
|
peertube\.librelabucm\.org|
|
||||||
|
videos\.numericoop\.fr|
|
||||||
|
peertube\.koehn\.com|
|
||||||
|
peertube\.anarchmusicall\.net|
|
||||||
|
tube\.kampftoast\.de|
|
||||||
|
vid\.y-y\.li|
|
||||||
|
peertube\.xtenz\.xyz|
|
||||||
|
diode\.zone|
|
||||||
|
tube\.egf\.mn|
|
||||||
|
peertube\.nomagic\.uk|
|
||||||
|
visionon\.tv|
|
||||||
|
videos\.koumoul\.com|
|
||||||
|
video\.rastapuls\.com|
|
||||||
|
video\.mantlepro\.com|
|
||||||
|
video\.deadsuperhero\.com|
|
||||||
|
peertube\.musicstudio\.pro|
|
||||||
|
peertube\.we-keys\.fr|
|
||||||
|
artitube\.artifaille\.fr|
|
||||||
|
peertube\.ethernia\.net|
|
||||||
|
tube\.midov\.pl|
|
||||||
|
peertube\.fr|
|
||||||
|
watch\.snoot\.tube|
|
||||||
|
peertube\.donnadieu\.fr|
|
||||||
|
argos\.aquilenet\.fr|
|
||||||
|
tube\.nemsia\.org|
|
||||||
|
tube\.bruniau\.net|
|
||||||
|
videos\.darckoune\.moe|
|
||||||
|
tube\.traydent\.info|
|
||||||
|
dev\.videos\.lecygnenoir\.info|
|
||||||
|
peertube\.nayya\.org|
|
||||||
|
peertube\.live|
|
||||||
|
peertube\.mofgao\.space|
|
||||||
|
video\.lequerrec\.eu|
|
||||||
|
peertube\.amicale\.net|
|
||||||
|
aperi\.tube|
|
||||||
|
tube\.ac-lyon\.fr|
|
||||||
|
video\.lw1\.at|
|
||||||
|
www\.yiny\.org|
|
||||||
|
videos\.pofilo\.fr|
|
||||||
|
tube\.lou\.lt|
|
||||||
|
choob\.h\.etbus\.ch|
|
||||||
|
tube\.hoga\.fr|
|
||||||
|
peertube\.heberge\.fr|
|
||||||
|
video\.obermui\.de|
|
||||||
|
videos\.cloudfrancois\.fr|
|
||||||
|
betamax\.video|
|
||||||
|
video\.typica\.us|
|
||||||
|
tube\.piweb\.be|
|
||||||
|
video\.blender\.org|
|
||||||
|
peertube\.cat|
|
||||||
|
tube\.kdy\.ch|
|
||||||
|
pe\.ertu\.be|
|
||||||
|
peertube\.social|
|
||||||
|
videos\.lescommuns\.org|
|
||||||
|
tv\.datamol\.org|
|
||||||
|
videonaute\.fr|
|
||||||
|
dialup\.express|
|
||||||
peertube\.nogafa\.org|
|
peertube\.nogafa\.org|
|
||||||
peertube\.pl|
|
|
||||||
megatube\.lilomoino\.fr|
|
megatube\.lilomoino\.fr|
|
||||||
peertube\.tamanoir\.foucry\.net|
|
peertube\.tamanoir\.foucry\.net|
|
||||||
peertube\.inapurna\.org|
|
|
||||||
peertube\.netzspielplatz\.de|
|
|
||||||
video\.deadsuperhero\.com|
|
|
||||||
peertube\.devosi\.org|
|
peertube\.devosi\.org|
|
||||||
peertube\.1312\.media|
|
peertube\.1312\.media|
|
||||||
tube\.worldofhauru\.xyz|
|
|
||||||
tube\.bootlicker\.party|
|
tube\.bootlicker\.party|
|
||||||
skeptikon\.fr|
|
skeptikon\.fr|
|
||||||
peertube\.geekshell\.fr|
|
|
||||||
tube\.opportunis\.me|
|
|
||||||
peertube\.peshane\.net|
|
|
||||||
video\.blueline\.mg|
|
video\.blueline\.mg|
|
||||||
tube\.homecomputing\.fr|
|
tube\.homecomputing\.fr|
|
||||||
videos\.cloudfrancois\.fr|
|
|
||||||
peertube\.viviers-fibre\.net|
|
|
||||||
tube\.ouahpiti\.info|
|
tube\.ouahpiti\.info|
|
||||||
video\.tedomum\.net|
|
video\.tedomum\.net|
|
||||||
video\.g3l\.org|
|
video\.g3l\.org|
|
||||||
fontube\.fr|
|
fontube\.fr|
|
||||||
peertube\.gaialabs\.ch|
|
peertube\.gaialabs\.ch|
|
||||||
peertube\.extremely\.online|
|
|
||||||
peertube\.public-infrastructure\.eu|
|
|
||||||
tube\.kher\.nl|
|
tube\.kher\.nl|
|
||||||
peertube\.qtg\.fr|
|
peertube\.qtg\.fr|
|
||||||
tube\.22decembre\.eu|
|
|
||||||
facegirl\.me|
|
|
||||||
video\.migennes\.net|
|
video\.migennes\.net|
|
||||||
janny\.moe|
|
|
||||||
tube\.p2p\.legal|
|
tube\.p2p\.legal|
|
||||||
video\.atlanti\.se|
|
|
||||||
troll\.tv|
|
troll\.tv|
|
||||||
peertube\.geekael\.fr|
|
|
||||||
vid\.leotindall\.com|
|
|
||||||
video\.anormallostpod\.ovh|
|
|
||||||
p-tube\.h3z\.jp|
|
|
||||||
tube\.darfweb\.eu|
|
|
||||||
videos\.iut-orsay\.fr|
|
videos\.iut-orsay\.fr|
|
||||||
peertube\.solidev\.net|
|
peertube\.solidev\.net|
|
||||||
videos\.symphonie-of-code\.fr|
|
|
||||||
testtube\.ortg\.de|
|
|
||||||
videos\.cemea\.org|
|
videos\.cemea\.org|
|
||||||
peertube\.gwendalavir\.eu|
|
|
||||||
video\.passageenseine\.fr|
|
video\.passageenseine\.fr|
|
||||||
videos\.festivalparminous\.org|
|
videos\.festivalparminous\.org|
|
||||||
peertube\.touhoppai\.moe|
|
peertube\.touhoppai\.moe|
|
||||||
peertube\.duckdns\.org|
|
|
||||||
sikke\.fi|
|
sikke\.fi|
|
||||||
peertube\.mastodon\.host|
|
|
||||||
firedragonvideos\.com|
|
|
||||||
vidz\.dou\.bet|
|
|
||||||
peertube\.koehn\.com|
|
|
||||||
peer\.hostux\.social|
|
peer\.hostux\.social|
|
||||||
share\.tube|
|
share\.tube|
|
||||||
peertube\.walkingmountains\.fr|
|
peertube\.walkingmountains\.fr|
|
||||||
medias\.libox\.fr|
|
|
||||||
peertube\.moe|
|
|
||||||
peertube\.xyz|
|
|
||||||
jp\.peertube\.network|
|
|
||||||
videos\.benpro\.fr|
|
videos\.benpro\.fr|
|
||||||
tube\.otter\.sh|
|
|
||||||
peertube\.angristan\.xyz|
|
|
||||||
peertube\.parleur\.net|
|
peertube\.parleur\.net|
|
||||||
peer\.ecutsa\.fr|
|
|
||||||
peertube\.heraut\.eu|
|
peertube\.heraut\.eu|
|
||||||
peertube\.tifox\.fr|
|
|
||||||
peertube\.maly\.io|
|
|
||||||
vod\.mochi\.academy|
|
|
||||||
exode\.me|
|
|
||||||
coste\.video|
|
|
||||||
tube\.aquilenet\.fr|
|
tube\.aquilenet\.fr|
|
||||||
peertube\.gegeweb\.eu|
|
peertube\.gegeweb\.eu|
|
||||||
framatube\.org|
|
framatube\.org|
|
||||||
@ -100,18 +404,11 @@ class PeerTubeIE(InfoExtractor):
|
|||||||
tube\.conferences-gesticulees\.net|
|
tube\.conferences-gesticulees\.net|
|
||||||
peertube\.datagueule\.tv|
|
peertube\.datagueule\.tv|
|
||||||
video\.lqdn\.fr|
|
video\.lqdn\.fr|
|
||||||
meilleurtube\.delire\.party|
|
|
||||||
tube\.mochi\.academy|
|
tube\.mochi\.academy|
|
||||||
peertube\.dav\.li|
|
|
||||||
media\.zat\.im|
|
media\.zat\.im|
|
||||||
pytu\.be|
|
|
||||||
peertube\.valvin\.fr|
|
|
||||||
peertube\.nsa\.ovh|
|
|
||||||
video\.colibris-outilslibres\.org|
|
video\.colibris-outilslibres\.org|
|
||||||
video\.hispagatos\.org|
|
|
||||||
tube\.svnet\.fr|
|
tube\.svnet\.fr|
|
||||||
peertube\.video|
|
peertube\.video|
|
||||||
videos\.lecygnenoir\.info|
|
|
||||||
peertube3\.cpy\.re|
|
peertube3\.cpy\.re|
|
||||||
peertube2\.cpy\.re|
|
peertube2\.cpy\.re|
|
||||||
videos\.tcit\.fr|
|
videos\.tcit\.fr|
|
||||||
@ -126,7 +423,7 @@ class PeerTubeIE(InfoExtractor):
|
|||||||
(?P<id>%s)
|
(?P<id>%s)
|
||||||
''' % (_INSTANCES_RE, _UUID_RE)
|
''' % (_INSTANCES_RE, _UUID_RE)
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'https://peertube.moe/videos/watch/2790feb0-8120-4e63-9af3-c943c69f5e6c',
|
'url': 'https://peertube.cpy.re/videos/watch/2790feb0-8120-4e63-9af3-c943c69f5e6c',
|
||||||
'md5': '80f24ff364cc9d333529506a263e7feb',
|
'md5': '80f24ff364cc9d333529506a263e7feb',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': '2790feb0-8120-4e63-9af3-c943c69f5e6c',
|
'id': '2790feb0-8120-4e63-9af3-c943c69f5e6c',
|
||||||
|
@ -403,6 +403,15 @@ class PornHubUserIE(PornHubPlaylistBaseIE):
|
|||||||
|
|
||||||
|
|
||||||
class PornHubPagedPlaylistBaseIE(PornHubPlaylistBaseIE):
|
class PornHubPagedPlaylistBaseIE(PornHubPlaylistBaseIE):
|
||||||
|
@staticmethod
|
||||||
|
def _has_more(webpage):
|
||||||
|
return re.search(
|
||||||
|
r'''(?x)
|
||||||
|
<li[^>]+\bclass=["\']page_next|
|
||||||
|
<link[^>]+\brel=["\']next|
|
||||||
|
<button[^>]+\bid=["\']moreDataBtn
|
||||||
|
''', webpage) is not None
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
mobj = re.match(self._VALID_URL, url)
|
mobj = re.match(self._VALID_URL, url)
|
||||||
host = mobj.group('host')
|
host = mobj.group('host')
|
||||||
@ -411,13 +420,11 @@ class PornHubPagedPlaylistBaseIE(PornHubPlaylistBaseIE):
|
|||||||
page = int_or_none(self._search_regex(
|
page = int_or_none(self._search_regex(
|
||||||
r'\bpage=(\d+)', url, 'page', default=None))
|
r'\bpage=(\d+)', url, 'page', default=None))
|
||||||
|
|
||||||
page_url = self._make_page_url(url)
|
|
||||||
|
|
||||||
entries = []
|
entries = []
|
||||||
for page_num in (page, ) if page is not None else itertools.count(1):
|
for page_num in (page, ) if page is not None else itertools.count(1):
|
||||||
try:
|
try:
|
||||||
webpage = self._download_webpage(
|
webpage = self._download_webpage(
|
||||||
page_url, item_id, 'Downloading page %d' % page_num,
|
url, item_id, 'Downloading page %d' % page_num,
|
||||||
query={'page': page_num})
|
query={'page': page_num})
|
||||||
except ExtractorError as e:
|
except ExtractorError as e:
|
||||||
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 404:
|
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 404:
|
||||||
@ -547,18 +554,6 @@ class PornHubPagedVideoListIE(PornHubPagedPlaylistBaseIE):
|
|||||||
if PornHubIE.suitable(url) or PornHubUserIE.suitable(url) or PornHubUserVideosUploadIE.suitable(url)
|
if PornHubIE.suitable(url) or PornHubUserIE.suitable(url) or PornHubUserVideosUploadIE.suitable(url)
|
||||||
else super(PornHubPagedVideoListIE, cls).suitable(url))
|
else super(PornHubPagedVideoListIE, cls).suitable(url))
|
||||||
|
|
||||||
def _make_page_url(self, url):
|
|
||||||
return url
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _has_more(webpage):
|
|
||||||
return re.search(
|
|
||||||
r'''(?x)
|
|
||||||
<li[^>]+\bclass=["\']page_next|
|
|
||||||
<link[^>]+\brel=["\']next|
|
|
||||||
<button[^>]+\bid=["\']moreDataBtn
|
|
||||||
''', webpage) is not None
|
|
||||||
|
|
||||||
|
|
||||||
class PornHubUserVideosUploadIE(PornHubPagedPlaylistBaseIE):
|
class PornHubUserVideosUploadIE(PornHubPagedPlaylistBaseIE):
|
||||||
_VALID_URL = r'(?P<url>https?://(?:[^/]+\.)?(?P<host>pornhub\.(?:com|net))/(?:(?:user|channel)s|model|pornstar)/(?P<id>[^/]+)/videos/upload)'
|
_VALID_URL = r'(?P<url>https?://(?:[^/]+\.)?(?P<host>pornhub\.(?:com|net))/(?:(?:user|channel)s|model|pornstar)/(?P<id>[^/]+)/videos/upload)'
|
||||||
@ -572,11 +567,3 @@ class PornHubUserVideosUploadIE(PornHubPagedPlaylistBaseIE):
|
|||||||
'url': 'https://www.pornhub.com/model/zoe_ph/videos/upload',
|
'url': 'https://www.pornhub.com/model/zoe_ph/videos/upload',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
}]
|
}]
|
||||||
|
|
||||||
def _make_page_url(self, url):
|
|
||||||
mobj = re.match(self._VALID_URL, url)
|
|
||||||
return '%s/ajax' % mobj.group('url')
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _has_more(webpage):
|
|
||||||
return True
|
|
||||||
|
@ -6,6 +6,7 @@ from .common import InfoExtractor
|
|||||||
from ..utils import (
|
from ..utils import (
|
||||||
ExtractorError,
|
ExtractorError,
|
||||||
int_or_none,
|
int_or_none,
|
||||||
|
merge_dicts,
|
||||||
str_to_int,
|
str_to_int,
|
||||||
unified_strdate,
|
unified_strdate,
|
||||||
url_or_none,
|
url_or_none,
|
||||||
@ -45,7 +46,10 @@ class RedTubeIE(InfoExtractor):
|
|||||||
if any(s in webpage for s in ['video-deleted-info', '>This video has been removed']):
|
if any(s in webpage for s in ['video-deleted-info', '>This video has been removed']):
|
||||||
raise ExtractorError('Video %s has been removed' % video_id, expected=True)
|
raise ExtractorError('Video %s has been removed' % video_id, expected=True)
|
||||||
|
|
||||||
title = self._html_search_regex(
|
info = self._search_json_ld(webpage, video_id, default={})
|
||||||
|
|
||||||
|
if not info.get('title'):
|
||||||
|
info['title'] = self._html_search_regex(
|
||||||
(r'<h(\d)[^>]+class="(?:video_title_text|videoTitle)[^"]*">(?P<title>(?:(?!\1).)+)</h\1>',
|
(r'<h(\d)[^>]+class="(?:video_title_text|videoTitle)[^"]*">(?P<title>(?:(?!\1).)+)</h\1>',
|
||||||
r'(?:videoTitle|title)\s*:\s*(["\'])(?P<title>(?:(?!\1).)+)\1',),
|
r'(?:videoTitle|title)\s*:\s*(["\'])(?P<title>(?:(?!\1).)+)\1',),
|
||||||
webpage, 'title', group='title',
|
webpage, 'title', group='title',
|
||||||
@ -88,28 +92,28 @@ class RedTubeIE(InfoExtractor):
|
|||||||
|
|
||||||
thumbnail = self._og_search_thumbnail(webpage)
|
thumbnail = self._og_search_thumbnail(webpage)
|
||||||
upload_date = unified_strdate(self._search_regex(
|
upload_date = unified_strdate(self._search_regex(
|
||||||
r'<span[^>]+>ADDED ([^<]+)<',
|
r'<span[^>]+>(?:ADDED|Published on) ([^<]+)<',
|
||||||
webpage, 'upload date', fatal=False))
|
webpage, 'upload date', default=None))
|
||||||
duration = int_or_none(self._og_search_property(
|
duration = int_or_none(self._og_search_property(
|
||||||
'video:duration', webpage, default=None) or self._search_regex(
|
'video:duration', webpage, default=None) or self._search_regex(
|
||||||
r'videoDuration\s*:\s*(\d+)', webpage, 'duration', default=None))
|
r'videoDuration\s*:\s*(\d+)', webpage, 'duration', default=None))
|
||||||
view_count = str_to_int(self._search_regex(
|
view_count = str_to_int(self._search_regex(
|
||||||
(r'<div[^>]*>Views</div>\s*<div[^>]*>\s*([\d,.]+)',
|
(r'<div[^>]*>Views</div>\s*<div[^>]*>\s*([\d,.]+)',
|
||||||
r'<span[^>]*>VIEWS</span>\s*</td>\s*<td>\s*([\d,.]+)'),
|
r'<span[^>]*>VIEWS</span>\s*</td>\s*<td>\s*([\d,.]+)',
|
||||||
webpage, 'view count', fatal=False))
|
r'<span[^>]+\bclass=["\']video_view_count[^>]*>\s*([\d,.]+)'),
|
||||||
|
webpage, 'view count', default=None))
|
||||||
|
|
||||||
# No self-labeling, but they describe themselves as
|
# No self-labeling, but they describe themselves as
|
||||||
# "Home of Videos Porno"
|
# "Home of Videos Porno"
|
||||||
age_limit = 18
|
age_limit = 18
|
||||||
|
|
||||||
return {
|
return merge_dicts(info, {
|
||||||
'id': video_id,
|
'id': video_id,
|
||||||
'ext': 'mp4',
|
'ext': 'mp4',
|
||||||
'title': title,
|
|
||||||
'thumbnail': thumbnail,
|
'thumbnail': thumbnail,
|
||||||
'upload_date': upload_date,
|
'upload_date': upload_date,
|
||||||
'duration': duration,
|
'duration': duration,
|
||||||
'view_count': view_count,
|
'view_count': view_count,
|
||||||
'age_limit': age_limit,
|
'age_limit': age_limit,
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
}
|
})
|
||||||
|
@ -7,6 +7,7 @@ from ..utils import (
|
|||||||
int_or_none,
|
int_or_none,
|
||||||
smuggle_url,
|
smuggle_url,
|
||||||
try_get,
|
try_get,
|
||||||
|
unified_timestamp,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -22,7 +23,13 @@ class TeleQuebecBaseIE(InfoExtractor):
|
|||||||
|
|
||||||
|
|
||||||
class TeleQuebecIE(TeleQuebecBaseIE):
|
class TeleQuebecIE(TeleQuebecBaseIE):
|
||||||
_VALID_URL = r'https?://zonevideo\.telequebec\.tv/media/(?P<id>\d+)'
|
_VALID_URL = r'''(?x)
|
||||||
|
https?://
|
||||||
|
(?:
|
||||||
|
zonevideo\.telequebec\.tv/media|
|
||||||
|
coucou\.telequebec\.tv/videos
|
||||||
|
)/(?P<id>\d+)
|
||||||
|
'''
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
# available till 01.01.2023
|
# available till 01.01.2023
|
||||||
'url': 'http://zonevideo.telequebec.tv/media/37578/un-petit-choc-et-puis-repart/un-chef-a-la-cabane',
|
'url': 'http://zonevideo.telequebec.tv/media/37578/un-petit-choc-et-puis-repart/un-chef-a-la-cabane',
|
||||||
@ -41,6 +48,9 @@ class TeleQuebecIE(TeleQuebecBaseIE):
|
|||||||
# no description
|
# no description
|
||||||
'url': 'http://zonevideo.telequebec.tv/media/30261',
|
'url': 'http://zonevideo.telequebec.tv/media/30261',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
|
}, {
|
||||||
|
'url': 'https://coucou.telequebec.tv/videos/41788/idee-de-genie/l-heure-du-bain',
|
||||||
|
'only_matching': True,
|
||||||
}]
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
@ -61,6 +71,52 @@ class TeleQuebecIE(TeleQuebecBaseIE):
|
|||||||
return info
|
return info
|
||||||
|
|
||||||
|
|
||||||
|
class TeleQuebecSquatIE(InfoExtractor):
|
||||||
|
_VALID_URL = r'https://squat\.telequebec\.tv/videos/(?P<id>\d+)'
|
||||||
|
_TESTS = [{
|
||||||
|
'url': 'https://squat.telequebec.tv/videos/9314',
|
||||||
|
'info_dict': {
|
||||||
|
'id': 'd59ae78112d542e793d83cc9d3a5b530',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'title': 'Poupeflekta',
|
||||||
|
'description': 'md5:2f0718f8d2f8fece1646ee25fb7bce75',
|
||||||
|
'duration': 1351,
|
||||||
|
'timestamp': 1569057600,
|
||||||
|
'upload_date': '20190921',
|
||||||
|
'series': 'Miraculous : Les Aventures de Ladybug et Chat Noir',
|
||||||
|
'season': 'Saison 3',
|
||||||
|
'season_number': 3,
|
||||||
|
'episode_number': 57,
|
||||||
|
},
|
||||||
|
'params': {
|
||||||
|
'skip_download': True,
|
||||||
|
},
|
||||||
|
}]
|
||||||
|
|
||||||
|
def _real_extract(self, url):
|
||||||
|
video_id = self._match_id(url)
|
||||||
|
|
||||||
|
video = self._download_json(
|
||||||
|
'https://squat.api.telequebec.tv/v1/videos/%s' % video_id,
|
||||||
|
video_id)
|
||||||
|
|
||||||
|
media_id = video['sourceId']
|
||||||
|
|
||||||
|
return {
|
||||||
|
'_type': 'url_transparent',
|
||||||
|
'url': 'http://zonevideo.telequebec.tv/media/%s' % media_id,
|
||||||
|
'ie_key': TeleQuebecIE.ie_key(),
|
||||||
|
'id': media_id,
|
||||||
|
'title': video.get('titre'),
|
||||||
|
'description': video.get('description'),
|
||||||
|
'timestamp': unified_timestamp(video.get('datePublication')),
|
||||||
|
'series': video.get('container'),
|
||||||
|
'season': video.get('saison'),
|
||||||
|
'season_number': int_or_none(video.get('noSaison')),
|
||||||
|
'episode_number': int_or_none(video.get('episode')),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class TeleQuebecEmissionIE(TeleQuebecBaseIE):
|
class TeleQuebecEmissionIE(TeleQuebecBaseIE):
|
||||||
_VALID_URL = r'''(?x)
|
_VALID_URL = r'''(?x)
|
||||||
https?://
|
https?://
|
||||||
|
@ -1,54 +0,0 @@
|
|||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from .common import InfoExtractor
|
|
||||||
from .youtube import YoutubeIE
|
|
||||||
|
|
||||||
|
|
||||||
class WimpIE(InfoExtractor):
|
|
||||||
_VALID_URL = r'https?://(?:www\.)?wimp\.com/(?P<id>[^/]+)'
|
|
||||||
_TESTS = [{
|
|
||||||
'url': 'http://www.wimp.com/maru-is-exhausted/',
|
|
||||||
'md5': 'ee21217ffd66d058e8b16be340b74883',
|
|
||||||
'info_dict': {
|
|
||||||
'id': 'maru-is-exhausted',
|
|
||||||
'ext': 'mp4',
|
|
||||||
'title': 'Maru is exhausted.',
|
|
||||||
'description': 'md5:57e099e857c0a4ea312542b684a869b8',
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
'url': 'http://www.wimp.com/clowncar/',
|
|
||||||
'md5': '5c31ad862a90dc5b1f023956faec13fe',
|
|
||||||
'info_dict': {
|
|
||||||
'id': 'cG4CEr2aiSg',
|
|
||||||
'ext': 'webm',
|
|
||||||
'title': 'Basset hound clown car...incredible!',
|
|
||||||
'description': '5 of my Bassets crawled in this dog loo! www.bellinghambassets.com\n\nFor licensing/usage please contact: licensing(at)jukinmediadotcom',
|
|
||||||
'upload_date': '20140303',
|
|
||||||
'uploader': 'Gretchen Hoey',
|
|
||||||
'uploader_id': 'gretchenandjeff1',
|
|
||||||
},
|
|
||||||
'add_ie': ['Youtube'],
|
|
||||||
}]
|
|
||||||
|
|
||||||
def _real_extract(self, url):
|
|
||||||
video_id = self._match_id(url)
|
|
||||||
|
|
||||||
webpage = self._download_webpage(url, video_id)
|
|
||||||
|
|
||||||
youtube_id = self._search_regex(
|
|
||||||
(r"videoId\s*:\s*[\"']([0-9A-Za-z_-]{11})[\"']",
|
|
||||||
r'data-id=["\']([0-9A-Za-z_-]{11})'),
|
|
||||||
webpage, 'video URL', default=None)
|
|
||||||
if youtube_id:
|
|
||||||
return self.url_result(youtube_id, YoutubeIE.ie_key())
|
|
||||||
|
|
||||||
info_dict = self._extract_jwplayer_data(
|
|
||||||
webpage, video_id, require_title=False)
|
|
||||||
|
|
||||||
info_dict.update({
|
|
||||||
'id': video_id,
|
|
||||||
'title': self._og_search_title(webpage),
|
|
||||||
'description': self._og_search_description(webpage),
|
|
||||||
})
|
|
||||||
|
|
||||||
return info_dict
|
|
@ -17,7 +17,8 @@ class XVideosIE(InfoExtractor):
|
|||||||
_VALID_URL = r'''(?x)
|
_VALID_URL = r'''(?x)
|
||||||
https?://
|
https?://
|
||||||
(?:
|
(?:
|
||||||
(?:www\.)?xvideos\.com/video|
|
(?:[^/]+\.)?xvideos2?\.com/video|
|
||||||
|
(?:www\.)?xvideos\.es/video|
|
||||||
flashservice\.xvideos\.com/embedframe/|
|
flashservice\.xvideos\.com/embedframe/|
|
||||||
static-hw\.xvideos\.com/swf/xv-player\.swf\?.*?\bid_video=
|
static-hw\.xvideos\.com/swf/xv-player\.swf\?.*?\bid_video=
|
||||||
)
|
)
|
||||||
@ -39,6 +40,42 @@ class XVideosIE(InfoExtractor):
|
|||||||
}, {
|
}, {
|
||||||
'url': 'http://static-hw.xvideos.com/swf/xv-player.swf?id_video=4588838',
|
'url': 'http://static-hw.xvideos.com/swf/xv-player.swf?id_video=4588838',
|
||||||
'only_matching': True,
|
'only_matching': True,
|
||||||
|
}, {
|
||||||
|
'url': 'http://xvideos.com/video4588838/biker_takes_his_girl',
|
||||||
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'https://xvideos.com/video4588838/biker_takes_his_girl',
|
||||||
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'https://xvideos.es/video4588838/biker_takes_his_girl',
|
||||||
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'https://www.xvideos.es/video4588838/biker_takes_his_girl',
|
||||||
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'http://xvideos.es/video4588838/biker_takes_his_girl',
|
||||||
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'http://www.xvideos.es/video4588838/biker_takes_his_girl',
|
||||||
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'http://fr.xvideos.com/video4588838/biker_takes_his_girl',
|
||||||
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'https://fr.xvideos.com/video4588838/biker_takes_his_girl',
|
||||||
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'http://it.xvideos.com/video4588838/biker_takes_his_girl',
|
||||||
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'https://it.xvideos.com/video4588838/biker_takes_his_girl',
|
||||||
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'http://de.xvideos.com/video4588838/biker_takes_his_girl',
|
||||||
|
'only_matching': True
|
||||||
|
}, {
|
||||||
|
'url': 'https://de.xvideos.com/video4588838/biker_takes_his_girl',
|
||||||
|
'only_matching': True
|
||||||
}]
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
|
@ -383,7 +383,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|||||||
(?:(?:www|no)\.)?invidiou\.sh/|
|
(?:(?:www|no)\.)?invidiou\.sh/|
|
||||||
(?:(?:www|fi|de)\.)?invidious\.snopyta\.org/|
|
(?:(?:www|fi|de)\.)?invidious\.snopyta\.org/|
|
||||||
(?:www\.)?invidious\.kabi\.tk/|
|
(?:www\.)?invidious\.kabi\.tk/|
|
||||||
(?:www\.)?invidious\.enkirton\.net/|
|
|
||||||
(?:www\.)?invidious\.13ad\.de/|
|
(?:www\.)?invidious\.13ad\.de/|
|
||||||
(?:www\.)?invidious\.mastodon\.host/|
|
(?:www\.)?invidious\.mastodon\.host/|
|
||||||
(?:www\.)?invidious\.nixnet\.xyz/|
|
(?:www\.)?invidious\.nixnet\.xyz/|
|
||||||
@ -391,6 +390,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|||||||
(?:www\.)?tube\.poal\.co/|
|
(?:www\.)?tube\.poal\.co/|
|
||||||
(?:www\.)?vid\.wxzm\.sx/|
|
(?:www\.)?vid\.wxzm\.sx/|
|
||||||
(?:www\.)?yt\.elukerio\.org/|
|
(?:www\.)?yt\.elukerio\.org/|
|
||||||
|
(?:www\.)?yt\.lelux\.fi/|
|
||||||
(?:www\.)?kgg2m7yk5aybusll\.onion/|
|
(?:www\.)?kgg2m7yk5aybusll\.onion/|
|
||||||
(?:www\.)?qklhadlycap4cnod\.onion/|
|
(?:www\.)?qklhadlycap4cnod\.onion/|
|
||||||
(?:www\.)?axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid\.onion/|
|
(?:www\.)?axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid\.onion/|
|
||||||
|
Loading…
Reference in New Issue
Block a user