]>
jfr.im git - yt-dlp.git/blob - yt_dlp/extractor/nfl.py
3 from .common
import InfoExtractor
11 class NFLBaseIE(InfoExtractor
):
12 _VALID_URL_BASE
= r
'''(?x)
30 (?:titansonline|tennesseetitans)|
38 (?:redskins|washingtonfootball)|
56 _VIDEO_CONFIG_REGEX
= r
'<script[^>]+id="[^"]*video-config-[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}[^"]*"[^>]*>\s*({.+});?\s*</script>'
58 def _parse_video_config(self
, video_config
, display_id
):
59 video_config
= self
._parse
_json
(video_config
, display_id
)
60 item
= video_config
['playlist'][0]
61 mcp_id
= item
.get('mcpID')
63 info
= self
.url_result(
64 'anvato:GXvEgwyJeWem8KCYXfeoHWknwP48Mboj:' + mcp_id
,
67 media_id
= item
.get('id') or item
['entityId']
68 title
= item
.get('title')
69 item_url
= item
['url']
70 info
= {'id': media_id}
71 ext
= determine_ext(item_url
)
73 info
['formats'] = self
._extract
_m
3u8_formats
(item_url
, media_id
, 'mp4')
75 info
['url'] = item_url
76 if item
.get('audio') is True:
77 info
['vcodec'] = 'none'
78 is_live
= video_config
.get('live') is True
80 image_url
= item
.get(item
.get('imageSrc')) or item
.get(item
.get('posterImage'))
84 'ext': determine_ext(image_url
, 'jpg'),
89 'description': clean_html(item
.get('description')),
90 'thumbnails': thumbnails
,
95 class NFLIE(NFLBaseIE
):
97 _VALID_URL
= NFLBaseIE
._VALID
_URL
_BASE
+ r
'(?:videos?|listen|audio)/(?P<id>[^/#?&]+)'
99 'url': 'https://www.nfl.com/videos/baker-mayfield-s-game-changing-plays-from-3-td-game-week-14',
103 'title': "Baker Mayfield's game-changing plays from 3-TD game Week 14",
104 'description': 'md5:85e05a3cc163f8c344340f220521136d',
105 'upload_date': '20201215',
106 'timestamp': 1608009755,
107 'thumbnail': r
're:^https?://.*\.jpg$',
111 'categories': 'count:3',
114 'url': 'https://www.chiefs.com/listen/patrick-mahomes-travis-kelce-react-to-win-over-dolphins-the-breakdown',
115 'md5': '6886b32c24b463038c760ceb55a34566',
117 'id': 'd87e8790-3e14-11eb-8ceb-ff05c2867f99',
119 'title': 'Patrick Mahomes, Travis Kelce React to Win Over Dolphins | The Breakdown',
120 'description': 'md5:12ada8ee70e6762658c30e223e095075',
122 'skip': 'HTTP Error 404: Not Found',
124 'url': 'https://www.buffalobills.com/video/buffalo-bills-military-recognition-week-14',
125 'only_matching': True,
127 'url': 'https://www.raiders.com/audio/instant-reactions-raiders-week-14-loss-to-indianapolis-colts-espn-jason-fitz',
128 'only_matching': True,
131 def _real_extract(self
, url
):
132 display_id
= self
._match
_id
(url
)
133 webpage
= self
._download
_webpage
(url
, display_id
)
134 return self
._parse
_video
_config
(self
._search
_regex
(
135 self
._VIDEO
_CONFIG
_REGEX
, webpage
, 'video config'), display_id
)
138 class NFLArticleIE(NFLBaseIE
):
139 IE_NAME
= 'nfl.com:article'
140 _VALID_URL
= NFLBaseIE
._VALID
_URL
_BASE
+ r
'news/(?P<id>[^/#?&]+)'
142 'url': 'https://www.buffalobills.com/news/the-only-thing-we-ve-earned-is-the-noise-bills-coaches-discuss-handling-rising-e',
144 'id': 'the-only-thing-we-ve-earned-is-the-noise-bills-coaches-discuss-handling-rising-e',
145 'title': "'The only thing we've earned is the noise' | Bills coaches discuss handling rising expectations",
150 def _real_extract(self
, url
):
151 display_id
= self
._match
_id
(url
)
152 webpage
= self
._download
_webpage
(url
, display_id
)
154 for video_config
in re
.findall(self
._VIDEO
_CONFIG
_REGEX
, webpage
):
155 entries
.append(self
._parse
_video
_config
(video_config
, display_id
))
156 title
= clean_html(get_element_by_class(
157 'nfl-c-article__title', webpage
)) or self
._html
_search
_meta
(
158 ['og:title', 'twitter:title'], webpage
)
159 return self
.playlist_result(entries
, display_id
, title
)