coleifer / micawber

a small library for extracting rich content from urls
http://micawber.readthedocs.org/
MIT License
632 stars 91 forks source link

Vimeo and bootstrap_oembedio #37

Closed ad-m closed 9 years ago

ad-m commented 9 years ago
In [5]: bootstrap_oembedio().request('http://vimeo.com/111410510')
---------------------------------------------------------------------------
ProviderNotFoundException                 Traceback (most recent call last)
<ipython-input-5-cdc3e12d26dd> in <module>()
----> 1 bootstrap_oembedio().request('http://vimeo.com/111410510')

/home/adas/.virtualenvs/rownosc-info/local/lib/python2.7/site-packages/micawber/providers.pyc in inner(self, url, **params)
     91                 self.cache.set(key, data)
     92             return data
---> 93         return fn(self, url, **params)
     94     return inner
     95 

/home/adas/.virtualenvs/rownosc-info/local/lib/python2.7/site-packages/micawber/providers.pyc in request(self, url, **params)
    132         if provider:
    133             return provider.request(url, **params)
--> 134         raise ProviderNotFoundException('Provider not found for "%s"' % url)
    135 
    136 

ProviderNotFoundException: Provider not found for "http://vimeo.com/111410510"
In [12]: [(k,v) for k,v in bootstrap_oembedio()._registry.items() if 'vimeo' in k]
Out[12]: [(u'vimeo\\.com', <micawber.providers.Provider at 0xb5ebfd0c>)]

Am doing something wrong?

Other way was working...

In [17]: bootstrap_basic().request('http://vimeo.com/111410510')
Out[17]: 
{u'author_name': u'Fundacja Picture Doc',
 u'author_url': u'http://vimeo.com/user8938954',
 u'description': u'Copyright by Fundacja Picture Doc\nCopyright by Fundacja Dialog-Pheniben',
 u'duration': 310,
 u'height': 720,
 u'html': u'<iframe src="//player.vimeo.com/video/111410510" width="1280" height="720" frameborder="0" title="Romowie w Europie. Zag\u0142ada" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>',
 u'is_plus': u'1',
 u'provider_name': u'Vimeo',
 u'provider_url': u'https://vimeo.com/',
 u'thumbnail_height': 720,
 u'thumbnail_url': u'http://i.vimeocdn.com/video/496100635_1280.jpg',
 u'thumbnail_width': 1280,
 u'title': u'Romowie w Europie. Zag\u0142ada',
 u'type': u'video',
 u'uri': u'/videos/111410510',
 'url': 'http://vimeo.com/111410510',
 u'version': u'1.0',
 u'video_id': 111410510,
 u'width': 1280}
In [18]: bootstrap_embedly().request('http://vimeo.com/111410510')
Out[18]: 
{u'author_name': u'Fundacja Picture Doc',
 u'author_url': u'http://vimeo.com/user8938954',
 u'description': u'Copyright by Fundacja Picture Doc Copyright by Fundacja Dialog-Pheniben',
 u'height': 720,
 u'html': u'<iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=http%3A%2F%2Fplayer.vimeo.com%2Fvideo%2F111410510&src_secure=1&url=http%3A%2F%2Fvimeo.com%2F111410510&image=http%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F496100635_1280.jpg&type=text%2Fhtml&schema=vimeo" width="1280" height="720" scrolling="no" frameborder="0" allowfullscreen></iframe>',
 u'provider_name': u'Vimeo',
 u'provider_url': u'https://vimeo.com/',
 u'thumbnail_height': 720,
 u'thumbnail_url': u'http://i.vimeocdn.com/video/496100635_1280.jpg',
 u'thumbnail_width': 1280,
 u'title': u'Romowie w Europie. Zag\u0142ada',
 u'type': u'video',
 'url': 'http://vimeo.com/111410510',
 u'version': u'1.0',
 u'width': 1280}
In [19]: bootstrap_noembed().request('http://vimeo.com/111410510')
Out[19]: 
{u'author_name': u'Fundacja Picture Doc',
 u'author_url': u'http://vimeo.com/user8938954',
 u'description': u'Copyright by Fundacja Picture Doc\nCopyright by Fundacja Dialog-Pheniben',
 u'duration': 310,
 u'height': 720,
 u'html': u'\n<div class="noembed-embed ">\n  <div class="noembed-wrapper">\n    \n<div class="noembed-embed-inner noembed-vimeo">\n  <iframe src="//player.vimeo.com/video/111410510" width="1280" height="720" frameborder="0" title="Romowie w Europie. Zag\u0142ada" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>\n</div>\n\n    <table class="noembed-meta-info">\n      <tr>\n        <td class="favicon"><img src="https://noembed.com/favicon/Vimeo.png"></td>\n        <td>Vimeo</td>\n        <td align="right">\n          <a title="http://vimeo.com/111410510" href="http://vimeo.com/111410510">http://vimeo.com/111410510</a>\n        </td>\n      </tr>\n    </table>\n  </div>\n</div>\n',
 u'is_plus': u'1',
 u'provider_name': u'Vimeo',
 u'provider_url': u'https://vimeo.com/',
 u'thumbnail_height': 720,
 u'thumbnail_url': u'http://i.vimeocdn.com/video/496100635_1280.jpg',
 u'thumbnail_width': 1280,
 u'title': u'Romowie w Europie. Zag\u0142ada',
 u'type': u'video',
 u'uri': u'/videos/111410510',
 u'url': u'http://vimeo.com/111410510',
 u'version': u'1.0',
 u'video_id': 111410510,
 u'width': 1280}

Oembed.io support it too

In [23]: requests.get('http://oembed.io/api?url=http://vimeo.com/111410510').json()
Out[23]: 
{u'author': u'Fundacja Picture Doc',
 u'author_url': u'http://vimeo.com/user8938954',
 u'canonical': u'http://vimeo.com/111410510',
 u'description': u'Copyright by Fundacja Picture Doc\nCopyright by Fundacja Dialog-Pheniben',
 u'duration': 310,
 u'html': u'<div class="oembed-widget-container" style="left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56%;"><iframe class="oembed-widget oembed-iframe" src="//player.vimeo.com/video/111410510" frameborder="0" style="top: 0px; left: 0px; width: 100%; height: 100%; position: absolute;"></iframe></div>',
 u'provider_name': u'Vimeo',
 u'thumbnail_height': 720,
 u'thumbnail_url': u'http://i.vimeocdn.com/video/496100635_1280.jpg',
 u'thumbnail_width': 1280,
 u'title': u'Romowie w Europie. Zag\u0142ada',
 u'type': u'rich',
 u'version': u'1.0'}
coleifer commented 9 years ago

It looks like oembed.io returns some provider regexes without the URL scheme. So you get:

In [7]: pr.provider_for_url('http://vimeo.com/111410510')  # Returns `None`

In [8]: pr.provider_for_url('vimeo.com/111410510')  # Works.
Out[8]: <micawber.providers.Provider at 0x7f2c0f1a8b10>

So I'm guessing that I may need to manually "fix" the regexes returned by oembed.io to add a scheme where one is missing.