diff options
Diffstat (limited to 'youtube_dl/extractor/generic.py')
| -rw-r--r-- | youtube_dl/extractor/generic.py | 46 | 
1 files changed, 45 insertions, 1 deletions
| diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index d48c84f8d..2c8fcf5ae 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -11,6 +11,8 @@ from ..utils import (      compat_urlparse,      ExtractorError, +    smuggle_url, +    unescapeHTML,  )  from .brightcove import BrightcoveIE @@ -23,12 +25,33 @@ class GenericIE(InfoExtractor):          {              u'url': u'http://www.hodiho.fr/2013/02/regis-plante-sa-jeep.html',              u'file': u'13601338388002.mp4', -            u'md5': u'85b90ccc9d73b4acd9138d3af4c27f89', +            u'md5': u'6e15c93721d7ec9e9ca3fdbf07982cfd',              u'info_dict': {                  u"uploader": u"www.hodiho.fr",                  u"title": u"R\u00e9gis plante sa Jeep"              }          }, +        # embedded vimeo video +        { +            u'url': u'http://skillsmatter.com/podcast/home/move-semanticsperfect-forwarding-and-rvalue-references', +            u'file': u'22444065.mp4', +            u'md5': u'2903896e23df39722c33f015af0666e2', +            u'info_dict': { +                u'title': u'ACCU 2011: Move Semantics,Perfect Forwarding, and Rvalue references- Scott Meyers- 13/04/2011', +                u"uploader_id": u"skillsmatter", +                u"uploader": u"Skills Matter", +            } +        }, +        # bandcamp page with custom domain +        { +            u'url': u'http://bronyrock.com/track/the-pony-mash', +            u'file': u'3235767654.mp3', +            u'info_dict': { +                u'title': u'The Pony Mash', +                u'uploader': u'M_Pallante', +            }, +            u'skip': u'There is a limit of 200 free downloads / month for the test song', +        },      ]      def report_download_webpage(self, video_id): @@ -127,6 +150,27 @@ class GenericIE(InfoExtractor):              bc_url = BrightcoveIE._build_brighcove_url(m_brightcove.group())              return self.url_result(bc_url, 'Brightcove') +        # Look for embedded Vimeo player +        mobj = re.search( +            r'<iframe[^>]+?src="(https?://player.vimeo.com/video/.+?)"', webpage) +        if mobj: +            player_url = unescapeHTML(mobj.group(1)) +            surl = smuggle_url(player_url, {'Referer': url}) +            return self.url_result(surl, 'Vimeo') + +        # Look for embedded YouTube player +        mobj = re.search( +            r'<iframe[^>]+?src="(https?://(?:www\.)?youtube.com/embed/.+?)"', webpage) +        if mobj: +            surl = unescapeHTML(mobj.group(1)) +            return self.url_result(surl, 'Youtube') + +        # Look for Bandcamp pages with custom domain +        mobj = re.search(r'<meta property="og:url"[^>]*?content="(.*?bandcamp\.com.*?)"', webpage) +        if mobj is not None: +            burl = unescapeHTML(mobj.group(1)) +            return self.url_result(burl, 'Bandcamp') +          # Start with something easy: JW Player in SWFObject          mobj = re.search(r'flashvars: [\'"](?:.*&)?file=(http[^\'"&]*)', webpage)          if mobj is None: | 
