Skip to content

Commit 7df07a3

Browse files
authored
[dplay] Add extractors for site changes (yt-dlp#2401)
Closes yt-dlp#2438 Authored by: Sipherdrakon
1 parent 2d49720 commit 7df07a3

File tree

2 files changed

+289
-5
lines changed

2 files changed

+289
-5
lines changed

yt_dlp/extractor/dplay.py

Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,222 @@ def _real_extract(self, url):
369369
return self._get_disco_api_info(url, self._match_id(url), **self._DISCO_API_PARAMS)
370370

371371

372+
class GoDiscoveryIE(DiscoveryPlusBaseIE):
373+
_VALID_URL = r'https?://(?:go\.)?discovery\.com/video' + DPlayBaseIE._PATH_REGEX
374+
_TESTS = [{
375+
'url': 'https://go.discovery.com/video/dirty-jobs-discovery-atve-us/rodbuster-galvanizer',
376+
'info_dict': {
377+
'id': '4164906',
378+
'display_id': 'dirty-jobs-discovery-atve-us/rodbuster-galvanizer',
379+
'ext': 'mp4',
380+
'title': 'Rodbuster / Galvanizer',
381+
'description': 'Mike installs rebar with a team of rodbusters, then he galvanizes steel.',
382+
'season_number': 9,
383+
'episode_number': 1,
384+
},
385+
'skip': 'Available for Premium users',
386+
}, {
387+
'url': 'https://discovery.com/video/dirty-jobs-discovery-atve-us/rodbuster-galvanizer',
388+
'only_matching': True,
389+
}]
390+
391+
_PRODUCT = 'dsc'
392+
_DISCO_API_PARAMS = {
393+
'disco_host': 'us1-prod-direct.go.discovery.com',
394+
'realm': 'go',
395+
'country': 'us',
396+
}
397+
398+
399+
class TravelChannelIE(DiscoveryPlusBaseIE):
400+
_VALID_URL = r'https?://(?:watch\.)?travelchannel\.com/video' + DPlayBaseIE._PATH_REGEX
401+
_TESTS = [{
402+
'url': 'https://watch.travelchannel.com/video/ghost-adventures-travel-channel/ghost-train-of-ely',
403+
'info_dict': {
404+
'id': '2220256',
405+
'display_id': 'ghost-adventures-travel-channel/ghost-train-of-ely',
406+
'ext': 'mp4',
407+
'title': 'Ghost Train of Ely',
408+
'description': 'The crew investigates the dark history of the Nevada Northern Railway.',
409+
'season_number': 24,
410+
'episode_number': 1,
411+
},
412+
'skip': 'Available for Premium users',
413+
}, {
414+
'url': 'https://watch.travelchannel.com/video/ghost-adventures-travel-channel/ghost-train-of-ely',
415+
'only_matching': True,
416+
}]
417+
418+
_PRODUCT = 'trav'
419+
_DISCO_API_PARAMS = {
420+
'disco_host': 'us1-prod-direct.watch.travelchannel.com',
421+
'realm': 'go',
422+
'country': 'us',
423+
}
424+
425+
426+
class CookingChannelIE(DiscoveryPlusBaseIE):
427+
_VALID_URL = r'https?://(?:watch\.)?cookingchanneltv\.com/video' + DPlayBaseIE._PATH_REGEX
428+
_TESTS = [{
429+
'url': 'https://watch.cookingchanneltv.com/video/carnival-eats-cooking-channel/the-postman-always-brings-rice-2348634',
430+
'info_dict': {
431+
'id': '2348634',
432+
'display_id': 'carnival-eats-cooking-channel/the-postman-always-brings-rice-2348634',
433+
'ext': 'mp4',
434+
'title': 'The Postman Always Brings Rice',
435+
'description': 'Noah visits the Maui Fair and the Aurora Winter Festival in Vancouver.',
436+
'season_number': 9,
437+
'episode_number': 1,
438+
},
439+
'skip': 'Available for Premium users',
440+
}, {
441+
'url': 'https://watch.cookingchanneltv.com/video/carnival-eats-cooking-channel/the-postman-always-brings-rice-2348634',
442+
'only_matching': True,
443+
}]
444+
445+
_PRODUCT = 'cook'
446+
_DISCO_API_PARAMS = {
447+
'disco_host': 'us1-prod-direct.watch.cookingchanneltv.com',
448+
'realm': 'go',
449+
'country': 'us',
450+
}
451+
452+
453+
class HGTVUsaIE(DiscoveryPlusBaseIE):
454+
_VALID_URL = r'https?://(?:watch\.)?hgtv\.com/video' + DPlayBaseIE._PATH_REGEX
455+
_TESTS = [{
456+
'url': 'https://watch.hgtv.com/video/home-inspector-joe-hgtv-atve-us/this-mold-house',
457+
'info_dict': {
458+
'id': '4289736',
459+
'display_id': 'home-inspector-joe-hgtv-atve-us/this-mold-house',
460+
'ext': 'mp4',
461+
'title': 'This Mold House',
462+
'description': 'Joe and Noel help take a familys dream home from hazardous to fabulous.',
463+
'season_number': 1,
464+
'episode_number': 1,
465+
},
466+
'skip': 'Available for Premium users',
467+
}, {
468+
'url': 'https://watch.hgtv.com/video/home-inspector-joe-hgtv-atve-us/this-mold-house',
469+
'only_matching': True,
470+
}]
471+
472+
_PRODUCT = 'hgtv'
473+
_DISCO_API_PARAMS = {
474+
'disco_host': 'us1-prod-direct.watch.hgtv.com',
475+
'realm': 'go',
476+
'country': 'us',
477+
}
478+
479+
480+
class FoodNetworkIE(DiscoveryPlusBaseIE):
481+
_VALID_URL = r'https?://(?:watch\.)?foodnetwork\.com/video' + DPlayBaseIE._PATH_REGEX
482+
_TESTS = [{
483+
'url': 'https://watch.foodnetwork.com/video/kids-baking-championship-food-network/float-like-a-butterfly',
484+
'info_dict': {
485+
'id': '4116449',
486+
'display_id': 'kids-baking-championship-food-network/float-like-a-butterfly',
487+
'ext': 'mp4',
488+
'title': 'Float Like a Butterfly',
489+
'description': 'The 12 kid bakers create colorful carved butterfly cakes.',
490+
'season_number': 10,
491+
'episode_number': 1,
492+
},
493+
'skip': 'Available for Premium users',
494+
}, {
495+
'url': 'https://watch.foodnetwork.com/video/kids-baking-championship-food-network/float-like-a-butterfly',
496+
'only_matching': True,
497+
}]
498+
499+
_PRODUCT = 'food'
500+
_DISCO_API_PARAMS = {
501+
'disco_host': 'us1-prod-direct.watch.foodnetwork.com',
502+
'realm': 'go',
503+
'country': 'us',
504+
}
505+
506+
507+
class DestinationAmericaIE(DiscoveryPlusBaseIE):
508+
_VALID_URL = r'https?://(?:www\.)?destinationamerica\.com/video' + DPlayBaseIE._PATH_REGEX
509+
_TESTS = [{
510+
'url': 'https://www.destinationamerica.com/video/alaska-monsters-destination-america-atve-us/central-alaskas-bigfoot',
511+
'info_dict': {
512+
'id': '4210904',
513+
'display_id': 'alaska-monsters-destination-america-atve-us/central-alaskas-bigfoot',
514+
'ext': 'mp4',
515+
'title': 'Central Alaskas Bigfoot',
516+
'description': 'A team heads to central Alaska to investigate an aggressive Bigfoot.',
517+
'season_number': 1,
518+
'episode_number': 1,
519+
},
520+
'skip': 'Available for Premium users',
521+
}, {
522+
'url': 'https://www.destinationamerica.com/video/alaska-monsters-destination-america-atve-us/central-alaskas-bigfoot',
523+
'only_matching': True,
524+
}]
525+
526+
_PRODUCT = 'dam'
527+
_DISCO_API_PARAMS = {
528+
'disco_host': 'us1-prod-direct.destinationamerica.com',
529+
'realm': 'go',
530+
'country': 'us',
531+
}
532+
533+
534+
class InvestigationDiscoveryIE(DiscoveryPlusBaseIE):
535+
_VALID_URL = r'https?://(?:www\.)?investigationdiscovery\.com/video' + DPlayBaseIE._PATH_REGEX
536+
_TESTS = [{
537+
'url': 'https://www.investigationdiscovery.com/video/unmasked-investigation-discovery/the-killer-clown',
538+
'info_dict': {
539+
'id': '2139409',
540+
'display_id': 'unmasked-investigation-discovery/the-killer-clown',
541+
'ext': 'mp4',
542+
'title': 'The Killer Clown',
543+
'description': 'A wealthy Florida woman is fatally shot in the face by a clown at her door.',
544+
'season_number': 1,
545+
'episode_number': 1,
546+
},
547+
'skip': 'Available for Premium users',
548+
}, {
549+
'url': 'https://www.investigationdiscovery.com/video/unmasked-investigation-discovery/the-killer-clown',
550+
'only_matching': True,
551+
}]
552+
553+
_PRODUCT = 'ids'
554+
_DISCO_API_PARAMS = {
555+
'disco_host': 'us1-prod-direct.investigationdiscovery.com',
556+
'realm': 'go',
557+
'country': 'us',
558+
}
559+
560+
561+
class AmHistoryChannelIE(DiscoveryPlusBaseIE):
562+
_VALID_URL = r'https?://(?:www\.)?ahctv\.com/video' + DPlayBaseIE._PATH_REGEX
563+
_TESTS = [{
564+
'url': 'https://www.ahctv.com/video/modern-sniper-ahc/army',
565+
'info_dict': {
566+
'id': '2309730',
567+
'display_id': 'modern-sniper-ahc/army',
568+
'ext': 'mp4',
569+
'title': 'Army',
570+
'description': 'Snipers today face challenges their predecessors couldve only dreamed of.',
571+
'season_number': 1,
572+
'episode_number': 1,
573+
},
574+
'skip': 'Available for Premium users',
575+
}, {
576+
'url': 'https://www.ahctv.com/video/modern-sniper-ahc/army',
577+
'only_matching': True,
578+
}]
579+
580+
_PRODUCT = 'ahc'
581+
_DISCO_API_PARAMS = {
582+
'disco_host': 'us1-prod-direct.ahctv.com',
583+
'realm': 'go',
584+
'country': 'us',
585+
}
586+
587+
372588
class ScienceChannelIE(DiscoveryPlusBaseIE):
373589
_VALID_URL = r'https?://(?:www\.)?sciencechannel\.com/video' + DPlayBaseIE._PATH_REGEX
374590
_TESTS = [{
@@ -383,6 +599,9 @@ class ScienceChannelIE(DiscoveryPlusBaseIE):
383599
'episode_number': 1,
384600
},
385601
'skip': 'Available for Premium users',
602+
}, {
603+
'url': 'https://www.sciencechannel.com/video/strangest-things-science-atve-us/nazi-mystery-machine',
604+
'only_matching': True,
386605
}]
387606

388607
_PRODUCT = 'sci'
@@ -407,6 +626,9 @@ class DIYNetworkIE(DiscoveryPlusBaseIE):
407626
'episode_number': 2,
408627
},
409628
'skip': 'Available for Premium users',
629+
}, {
630+
'url': 'https://watch.diynetwork.com/video/pool-kings-diy-network/bringing-beach-life-to-texas',
631+
'only_matching': True,
410632
}]
411633

412634
_PRODUCT = 'diy'
@@ -417,6 +639,33 @@ class DIYNetworkIE(DiscoveryPlusBaseIE):
417639
}
418640

419641

642+
class DiscoveryLifeIE(DiscoveryPlusBaseIE):
643+
_VALID_URL = r'https?://(?:www\.)?discoverylife\.com/video' + DPlayBaseIE._PATH_REGEX
644+
_TESTS = [{
645+
'url': 'https://www.discoverylife.com/video/surviving-death-discovery-life-atve-us/bodily-trauma',
646+
'info_dict': {
647+
'id': '2218238',
648+
'display_id': 'surviving-death-discovery-life-atve-us/bodily-trauma',
649+
'ext': 'mp4',
650+
'title': 'Bodily Trauma',
651+
'description': 'Meet three people who tested the limits of the human body.',
652+
'season_number': 1,
653+
'episode_number': 2,
654+
},
655+
'skip': 'Available for Premium users',
656+
}, {
657+
'url': 'https://www.discoverylife.com/video/surviving-death-discovery-life-atve-us/bodily-trauma',
658+
'only_matching': True,
659+
}]
660+
661+
_PRODUCT = 'dlf'
662+
_DISCO_API_PARAMS = {
663+
'disco_host': 'us1-prod-direct.discoverylife.com',
664+
'realm': 'go',
665+
'country': 'us',
666+
}
667+
668+
420669
class AnimalPlanetIE(DiscoveryPlusBaseIE):
421670
_VALID_URL = r'https?://(?:www\.)?animalplanet\.com/video' + DPlayBaseIE._PATH_REGEX
422671
_TESTS = [{
@@ -431,6 +680,9 @@ class AnimalPlanetIE(DiscoveryPlusBaseIE):
431680
'episode_number': 11,
432681
},
433682
'skip': 'Available for Premium users',
683+
}, {
684+
'url': 'https://www.animalplanet.com/video/north-woods-law-animal-planet/squirrel-showdown',
685+
'only_matching': True,
434686
}]
435687

436688
_PRODUCT = 'apl'
@@ -441,6 +693,33 @@ class AnimalPlanetIE(DiscoveryPlusBaseIE):
441693
}
442694

443695

696+
class TLCIE(DiscoveryPlusBaseIE):
697+
_VALID_URL = r'https?://(?:go\.)?tlc\.com/video' + DPlayBaseIE._PATH_REGEX
698+
_TESTS = [{
699+
'url': 'https://go.tlc.com/video/my-600-lb-life-tlc/melissas-story-part-1',
700+
'info_dict': {
701+
'id': '2206540',
702+
'display_id': 'my-600-lb-life-tlc/melissas-story-part-1',
703+
'ext': 'mp4',
704+
'title': 'Melissas Story (Part 1)',
705+
'description': 'At 650 lbs, Melissa is ready to begin her seven-year weight loss journey.',
706+
'season_number': 1,
707+
'episode_number': 1,
708+
},
709+
'skip': 'Available for Premium users',
710+
}, {
711+
'url': 'https://go.tlc.com/video/my-600-lb-life-tlc/melissas-story-part-1',
712+
'only_matching': True,
713+
}]
714+
715+
_PRODUCT = 'tlc'
716+
_DISCO_API_PARAMS = {
717+
'disco_host': 'us1-prod-direct.tlc.com',
718+
'realm': 'go',
719+
'country': 'us',
720+
}
721+
722+
444723
class DiscoveryPlusIE(DiscoveryPlusBaseIE):
445724
_VALID_URL = r'https?://(?:www\.)?discoveryplus\.com/(?!it/)(?:\w{2}/)?video' + DPlayBaseIE._PATH_REGEX
446725
_TESTS = [{

yt_dlp/extractor/extractors.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -361,9 +361,19 @@
361361
DPlayIE,
362362
DiscoveryPlusIE,
363363
HGTVDeIE,
364+
GoDiscoveryIE,
365+
TravelChannelIE,
366+
CookingChannelIE,
367+
HGTVUsaIE,
368+
FoodNetworkIE,
369+
InvestigationDiscoveryIE,
370+
DestinationAmericaIE,
371+
AmHistoryChannelIE,
364372
ScienceChannelIE,
365373
DIYNetworkIE,
374+
DiscoveryLifeIE,
366375
AnimalPlanetIE,
376+
TLCIE,
367377
DiscoveryPlusIndiaIE,
368378
DiscoveryNetworksDeIE,
369379
DiscoveryPlusItalyIE,
@@ -387,11 +397,6 @@
387397
from .defense import DefenseGouvFrIE
388398
from .digitalconcerthall import DigitalConcertHallIE
389399
from .discovery import DiscoveryIE
390-
from .discoverygo import (
391-
DiscoveryGoIE,
392-
DiscoveryGoPlaylistIE,
393-
)
394-
from .discoveryvr import DiscoveryVRIE
395400
from .disney import DisneyIE
396401
from .dispeak import DigitallySpeakingIE
397402
from .doodstream import DoodStreamIE

0 commit comments

Comments
 (0)