@ -1,3 +1,5 @@
from __future__ import unicode_literals
import re
import re
from .common import InfoExtractor
from .common import InfoExtractor
@ -6,12 +8,13 @@ from .common import InfoExtractor
class TrailerAddictIE ( InfoExtractor ) :
class TrailerAddictIE ( InfoExtractor ) :
_VALID_URL = r ' (?:http://)?(?:www \ .)?traileraddict \ .com/(?:trailer|clip)/(?P<movie>.+?)/(?P<trailer_name>.+) '
_VALID_URL = r ' (?:http://)?(?:www \ .)?traileraddict \ .com/(?:trailer|clip)/(?P<movie>.+?)/(?P<trailer_name>.+) '
_TEST = {
_TEST = {
u ' url ' : u ' http://www.traileraddict.com/trailer/prince-avalanche/trailer ' ,
u ' file ' : u ' 76184.mp4 ' ,
u ' md5 ' : u ' 57e39dbcf4142ceb8e1f242ff423fd71 ' ,
u ' info_dict ' : {
u " title " : u " Prince Avalanche Trailer " ,
u " description " : u " Trailer for Prince Avalanche.Two highway road workers spend the summer of 1988 away from their city lives. The isolated landscape becomes a place of misadventure as the men find themselves at odds with each other and the women they left behind. "
' url ' : ' http://www.traileraddict.com/trailer/prince-avalanche/trailer ' ,
' md5 ' : ' 41365557f3c8c397d091da510e73ceb4 ' ,
' info_dict ' : {
' id ' : ' 76184 ' ,
' ext ' : ' mp4 ' ,
' title ' : ' Prince Avalanche Trailer ' ,
' description ' : ' Trailer for Prince Avalanche. \n \n Two highway road workers spend the summer of 1988 away from their city lives. The isolated landscape becomes a place of misadventure as the men find themselves at odds with each other and the women they left behind. ' ,
}
}
}
}
@ -22,9 +25,15 @@ class TrailerAddictIE(InfoExtractor):
title = self . _search_regex ( r ' <title>(.+?)</title> ' ,
title = self . _search_regex ( r ' <title>(.+?)</title> ' ,
webpage , ' video title ' ) . replace ( ' - Trailer Addict ' , ' ' )
webpage , ' video title ' ) . replace ( ' - Trailer Addict ' , ' ' )
view_count = self . _search_regex ( r ' Views: (.+?)<br /> ' ,
webpage , ' Views Count ' )
video_id = self . _og_search_property ( ' video ' , webpage , ' Video id ' ) . split ( ' = ' ) [ 1 ]
view_count_str = self . _search_regex (
r ' <span class= " views_n " >([0-9,.]+)</span> ' ,
webpage , ' view count ' , fatal = False )
view_count = (
None if view_count_str is None
else int ( view_count_str . replace ( ' , ' , ' ' ) ) )
video_id = self . _search_regex (
r ' <param \ s+name= " movie " \ s+value= " /emb/([0-9]+) " \ s*/> ' ,
webpage , ' video id ' )
# Presence of (no)watchplus function indicates HD quality is available
# Presence of (no)watchplus function indicates HD quality is available
if re . search ( r ' function (no)?watchplus() ' , webpage ) :
if re . search ( r ' function (no)?watchplus() ' , webpage ) :
@ -39,14 +48,16 @@ class TrailerAddictIE(InfoExtractor):
info_webpage , ' Download url ' ) . replace ( ' %3F ' , ' ? ' )
info_webpage , ' Download url ' ) . replace ( ' %3F ' , ' ? ' )
thumbnail_url = self . _search_regex ( r ' &image=(.+?)& ' ,
thumbnail_url = self . _search_regex ( r ' &image=(.+?)& ' ,
info_webpage , ' thumbnail url ' )
info_webpage , ' thumbnail url ' )
ext = final_url . split ( ' . ' ) [ - 1 ] . split ( ' ? ' ) [ 0 ]
return [ {
' id ' : video_id ,
' url ' : final_url ,
' ext ' : ext ,
' title ' : title ,
' thumbnail ' : thumbnail_url ,
' description ' : self . _og_search_description ( webpage ) ,
' view_count ' : view_count ,
} ]
description = self . _html_search_regex (
r ' (?s)<div class= " synopsis " >.*?<div class= " movie_label_info " [^>]*>(.*?)</div> ' ,
webpage , ' description ' , fatal = False )
return {
' id ' : video_id ,
' url ' : final_url ,
' title ' : title ,
' thumbnail ' : thumbnail_url ,
' description ' : description ,
' view_count ' : view_count ,
}