]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/steam.py
1 from __future__
import unicode_literals
5 from . common
import InfoExtractor
12 class SteamIE ( InfoExtractor
):
14 https?://store\.steampowered\.com/
16 (?P<urltype>video|app)/ #If the page is only for videos or for a game
18 (?P<videoID>\d*)(?P<extra>\??) # For urltype == video we sometimes get the videoID
20 https?://(?:www\.)?steamcommunity\.com/sharedfiles/filedetails/\?id=(?P<fileID>[0-9]+)
22 _VIDEO_PAGE_TEMPLATE
= 'http://store.steampowered.com/video/ %s /'
23 _AGECHECK_TEMPLATE
= 'http://store.steampowered.com/agecheck/video/ %s /?snr=1_agecheck_agecheck__age-gate&ageDay=1&ageMonth=January&ageYear=1970'
25 "url" : "http://store.steampowered.com/video/105600/" ,
28 "md5" : "f870007cee7065d7c76b88f0a45ecc07" ,
32 "title" : "Terraria 1.1 Trailer" ,
37 "md5" : "61aaf31a5c5c3041afb58fb83cbb5751" ,
41 "title" : "Terraria Trailer" ,
50 'url' : 'http://steamcommunity.com/sharedfiles/filedetails/?id=242472205' ,
54 'upload_date' : '20140329' ,
55 'title' : 'FRONTIERS - Final Greenlight Trailer' ,
56 'description' : "The final trailer for the Steam Greenlight launch. Hooray, progress! Here's the official Greenlight page: http://steamcommunity.com/sharedfiles/filedetails/?id=242472205" ,
57 'uploader' : 'AAD Productions' ,
58 'uploader_id' : 'AtomicAgeDogGames' ,
62 def _real_extract ( self
, url
):
63 m
= re
. match ( self
._ VALID
_U RL
, url
)
64 fileID
= m
. group ( 'fileID' )
69 gameID
= m
. group ( 'gameID' )
71 videourl
= self
._ VIDEO
_ PAGE
_ TEMPLATE
% playlist_id
72 webpage
= self
._ download
_ webpage
( videourl
, playlist_id
)
74 if re
. search ( '<h2>Please enter your birth date to continue:</h2>' , webpage
) is not None :
75 videourl
= self
._ AGECHECK
_ TEMPLATE
% playlist_id
76 self
. report_age_confirmation ()
77 webpage
= self
._ download
_ webpage
( videourl
, playlist_id
)
80 playlist_title
= self
._ html
_ search
_ regex
(
81 r
'<div class="workshopItemTitle">(.+)</div>' , webpage
, 'title' )
82 mweb
= re
. finditer ( r
'''(?x)
83 'movie_(?P<videoID>[0-9]+)':\s*\{\s*
84 YOUTUBE_VIDEO_ID:\s*"(?P<youtube_id>[^"]+)",
88 'url' : vid
. group ( 'youtube_id' ),
92 playlist_title
= self
._ html
_ search
_ regex
(
93 r
'<h2 class="pageheader">(.*?)</h2>' , webpage
, 'game title' )
95 mweb
= re
. finditer ( r
'''(?x)
96 'movie_(?P<videoID>[0-9]+)':\s*\{\s*
97 FILENAME:\s*"(?P<videoURL>[\w:/\.\?=]+)"
98 (,\s*MOVIE_NAME:\s*\"(?P<videoName>[\w:/\.\?=\+-]+)\")?\s*\},
100 titles
= re
. finditer (
101 r
'<span class="title">(?P<videoName>.+?)</span>' , webpage
)
102 thumbs
= re
. finditer (
103 r
'<img class="movie_thumb" src="(?P<thumbnail>.+?)">' , webpage
)
106 for vid
, vtitle
, thumb
in zip ( mweb
, titles
, thumbs
):
107 video_id
= vid
. group ( 'videoID' )
108 title
= vtitle
. group ( 'videoName' )
109 video_url
= vid
. group ( 'videoURL' )
110 video_thumb
= thumb
. group ( 'thumbnail' )
112 raise ExtractorError ( 'Cannot find video url for %s ' % video_id
)
117 'title' : unescapeHTML ( title
),
118 'thumbnail' : video_thumb
121 raise ExtractorError ( 'Could not find any videos' )
123 return self
. playlist_result ( videos
, playlist_id
, playlist_title
)