]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/ninegag.py 
   1  from  __future__ 
import  unicode_literals
   5  from  . common 
import  InfoExtractor
   6  from  .. utils 
import  str_to_int
   9  class  NineGagIE ( InfoExtractor
):   11      _VALID_URL 
=  r
'https?://(?:www\.)?9gag(?:\.com/tv|\.tv)/(?:p|embed)/(?P<id>[a-zA-Z0-9]+)(?:/(?P<display_id>[^?#/]+))?'   14          'url' :  'http://9gag.com/tv/p/Kk2X5/people-are-awesome-2013-is-absolutely-awesome' ,   18              'description' :  'This 3-minute video will make you smile and then make you feel untalented and insignificant. Anyway, you should share this awesomeness. (Thanks, Dino!)' ,   19              'title' :  ' \" People Are Awesome 2013 \"  Is Absolutely Awesome' ,   20              'uploader_id' :  'UCdEH6EjDKwtTe-sO2f0_1XA' ,   21              'uploader' :  'CompilationChannel' ,   22              'upload_date' :  '20131110' ,   25          'add_ie' : [ 'Youtube' ],   27          'url' :  'http://9gag.com/tv/p/aKolP3' ,   31              'title' :  'This Guy Travelled 11 countries In 44 days Just To Make This Amazing Video' ,   32              'description' :  "I just saw more in 1 minute than I've seen in 1 year. This guy's video is epic!!" ,   33              'uploader_id' :  'rickmereki' ,   34              'uploader' :  'Rick Mereki' ,   35              'upload_date' :  '20110803' ,   40          'url' :  'http://9gag.com/tv/p/KklwM' ,   41          'only_matching' :  True ,   43          'url' :  'http://9gag.tv/p/Kk2X5' ,   44          'only_matching' :  True ,   46          'url' :  'http://9gag.com/tv/embed/a5Dmvl' ,   47          'only_matching' :  True ,   50      _EXTERNAL_VIDEO_PROVIDER 
= {   56              'url' :  'http://player.vimeo.com/video/ %s ' ,   60              'url' :  'http://instagram.com/p/ %s ' ,   61              'ie_key' :  'Instagram' ,   64              'url' :  'http://vine.co/v/ %s ' ,   69      def  _real_extract ( self
,  url
):   70          mobj 
=  re
. match ( self
._ VALID
_U RL
,  url
)   71          video_id 
=  mobj
. group ( 'id' )   72          display_id 
=  mobj
. group ( 'display_id' )  or  video_id
  74          webpage 
=  self
._ download
_ webpage
( url
,  display_id
)   76          post_view 
=  self
._ parse
_ json
(   78                  r
'var\s+postView\s*=\s*new\s+app\.PostView\({\s*post:\s*({.+?})\s*,\s*posts:\s*prefetchedCurrentPost' ,   79                  webpage
,  'post view' ),   83          source_url 
=  post_view
. get ( 'sourceUrl' )   85              external_video_id 
=  post_view
[ 'videoExternalId' ]   86              external_video_provider 
=  post_view
[ 'videoExternalProvider' ]   87              source_url 
=  self
._ EXTERNAL
_ VIDEO
_ PROVIDER
[ external_video_provider
][ 'url' ] %  external_video_id
  88              ie_key 
=  self
._ EXTERNAL
_ VIDEO
_ PROVIDER
[ external_video_provider
][ 'ie_key' ]   89          title 
=  post_view
[ 'title' ]   90          description 
=  post_view
. get ( 'description' )   91          view_count 
=  str_to_int ( post_view
. get ( 'externalView' ))   92          thumbnail 
=  post_view
. get ( 'thumbnail_700w' )  or  post_view
. get ( 'ogImageUrl' )  or  post_view
. get ( 'thumbnail_300w' )   95              '_type' :  'url_transparent' ,   99              'display_id' :  display_id
,  101              'description' :  description
,  102              'view_count' :  view_count
,  103              'thumbnail' :  thumbnail
,