]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/mlb.py
1 from __future__
import unicode_literals
5 from . common
import InfoExtractor
12 class MLBIE ( InfoExtractor
):
15 (?:[\da-z_-]+\.)*mlb\.com/
18 (?:.*?/)?video/(?:topic/[\da-z_-]+/)?(?:v|.*?/c-)|
20 shared/video/embed/(?:embed|m-internal-embed)\.html|
21 (?:[^/]+/)+(?:play|index)\.jsp|
25 (?:[^/]+/)*(?P<path>[^/]+)
30 'url' : 'http://m.mlb.com/sea/video/topic/51231442/v34698933/nymsea-ackley-robs-a-home-run-with-an-amazing-catch/?c_id=sea' ,
31 'md5' : 'ff56a598c2cf411a9a38a69709e97079' ,
35 'title' : "Ackley's spectacular catch" ,
36 'description' : 'md5:7f5a981eb4f3cbc8daf2aeffa2215bf0' ,
38 'timestamp' : 1405980600 ,
39 'upload_date' : '20140721' ,
40 'thumbnail' : r
're:^https?://.*\.jpg$' ,
44 'url' : 'http://m.mlb.com/video/topic/81536970/v34496663/mianym-stanton-practices-for-the-home-run-derby' ,
45 'md5' : 'd9c022c10d21f849f49c05ae12a8a7e9' ,
49 'title' : 'Stanton prepares for Derby' ,
50 'description' : 'md5:d00ce1e5fd9c9069e9c13ab4faedfa57' ,
52 'timestamp' : 1405105800 ,
53 'upload_date' : '20140711' ,
54 'thumbnail' : r
're:^https?://.*\.jpg$' ,
58 'url' : 'http://m.mlb.com/video/topic/vtp_hrd_sponsor/v34578115/hrd-cespedes-wins-2014-gillette-home-run-derby' ,
59 'md5' : '0e6e73d509321e142409b695eadd541f' ,
63 'title' : 'Cespedes repeats as Derby champ' ,
64 'description' : 'md5:08df253ce265d4cf6fb09f581fafad07' ,
66 'timestamp' : 1405399936 ,
67 'upload_date' : '20140715' ,
68 'thumbnail' : r
're:^https?://.*\.jpg$' ,
72 'url' : 'http://m.mlb.com/video/v34577915/bautista-on-derby-captaining-duties-his-performance' ,
73 'md5' : 'b8fd237347b844365d74ea61d4245967' ,
77 'title' : 'Bautista on Home Run Derby' ,
78 'description' : 'md5:b80b34031143d0986dddc64a8839f0fb' ,
80 'timestamp' : 1405390722 ,
81 'upload_date' : '20140715' ,
82 'thumbnail' : r
're:^https?://.*\.jpg$' ,
86 'url' : 'http://m.mlb.com/news/article/118550098/blue-jays-kevin-pillar-goes-spidey-up-the-wall-to-rob-tim-beckham-of-a-homer' ,
87 'md5' : 'aafaf5b0186fee8f32f20508092f8111' ,
91 'title' : 'Must C: Pillar climbs for catch' ,
92 'description' : '4/15/15: Blue Jays outfielder Kevin Pillar continues his defensive dominance by climbing the wall in left to rob Tim Beckham of a home run' ,
93 'timestamp' : 1429124820 ,
94 'upload_date' : '20150415' ,
98 'url' : 'https://www.mlb.com/video/hargrove-homers-off-caldwell/c-1352023483?tid=67793694' ,
99 'only_matching' : True ,
102 'url' : 'http://m.mlb.com/shared/video/embed/embed.html?content_id=35692085&topic_id=6479266&width=400&height=224&property=mlb' ,
103 'only_matching' : True ,
106 'url' : 'http://mlb.mlb.com/shared/video/embed/embed.html?content_id=36599553' ,
107 'only_matching' : True ,
110 'url' : 'http://mlb.mlb.com/es/video/play.jsp?content_id=36599553' ,
111 'only_matching' : True ,
114 'url' : 'http://m.cardinals.mlb.com/stl/video/v51175783/atlstl-piscotty-makes-great-sliding-catch-on-line/?partnerId=as_mlb_20150321_42500876&adbid=579409712979910656&adbpl=tw&adbpr=52847728' ,
115 'only_matching' : True ,
118 # From http://m.mlb.com/news/article/118550098/blue-jays-kevin-pillar-goes-spidey-up-the-wall-to-rob-tim-beckham-of-a-homer
119 'url' : 'http://mlb.mlb.com/shared/video/embed/m-internal-embed.html?content_id=75609783&property=mlb&autoplay=true&hashmode=false&siteSection=mlb/multimedia/article_118550098/article_embed&club=mlb' ,
120 'only_matching' : True ,
123 'url' : 'http://washington.nationals.mlb.com/mlb/gameday/index.jsp?c_id=was&gid=2015_05_09_atlmlb_wasmlb_1&lang=en&content_id=108309983&mode=video#' ,
124 'only_matching' : True ,
128 def _real_extract ( self
, url
):
129 mobj
= re
. match ( self
._ VALID
_U RL
, url
)
130 video_id
= mobj
. group ( 'id' )
133 video_path
= mobj
. group ( 'path' )
134 webpage
= self
._ download
_ webpage
( url
, video_path
)
135 video_id
= self
._ search
_ regex
(
136 [ r
'data-video-?id="(\d+)"' , r
'content_id=(\d+)' ], webpage
, 'video id' )
138 detail
= self
._ download
_ xml
(
139 'http://m.mlb.com/gen/multimedia/detail/ %s / %s / %s / %s .xml'
140 % ( video_id
[- 3 ], video_id
[- 2 ], video_id
[- 1 ], video_id
), video_id
)
142 title
= detail
. find ( './headline' ). text
143 description
= detail
. find ( './big-blurb' ). text
144 duration
= parse_duration ( detail
. find ( './duration' ). text
)
145 timestamp
= parse_iso8601 ( detail
. attrib
[ 'date' ][:- 5 ])
148 'url' : thumbnail
. text
,
149 } for thumbnail
in detail
. findall ( './thumbnailScenarios/thumbnailScenario' )]
152 for media_url
in detail
. findall ( './url' ):
153 playback_scenario
= media_url
. attrib
[ 'playback_scenario' ]
155 'url' : media_url
. text
,
156 'format_id' : playback_scenario
,
158 m
= re
. search ( r
'(?P<vbr>\d+)K_(?P<width>\d+)X(?P<height>\d+)' , playback_scenario
)
161 'vbr' : int ( m
. group ( 'vbr' )) * 1000 ,
162 'width' : int ( m
. group ( 'width' )),
163 'height' : int ( m
. group ( 'height' )),
167 self
._ sort
_ formats
( formats
)
172 'description' : description
,
173 'duration' : duration
,
174 'timestamp' : timestamp
,
176 'thumbnails' : thumbnails
,