更改youtube / dailymotion / vimeo嵌入大小

时间:2014-10-09 12:40:28

标签: python regex iframe youtube embed

我正在编写python脚本,其中输入是视频网址,例如。 http://www.youtube.com/embed/YX6eoRTaoUc

并返回一些有关视频的信息(持续时间,嵌入代码和其他类似内容......)

问题是youtube返回的嵌入大小,其他视频服务(vimeo,dailymotion)对我不利。

例如

<iframe width="480" width="260" src="http://www.youtube.com/embed/YX6eoRTaoUc?feature=oembed" frameborder="0" allowfullscreen></iframe>

我需要480和270以外的其他值。我的方法是

    player_html = player_html.replace('width="480"','width="656"')
    player_html = player_html.replace('height="270"','height="517"')

但是,如果youtube或其他视频服务将发送除480以外的其他值,它将无法正常工作。尝试正则表达式,但对我来说非常难。

这个正则表达式匹配宽度参数,但下一步是什么?

    \W|^width="\d+"\W|$

2 个答案:

答案 0 :(得分:1)

正确的HTML解析器可以帮助您解决此问题。试试BeautifulSoup

>>> from bs4 import BeautifulSoup

>>> html = '''<iframe width="480" width="260" src="http://www.youtube.com/embed/YX6eoRTaoUc?feature=oembed" frameborder="0" allowfullscreen></iframe>'''

>>> soup = BeautifulSoup(html)
>>> soup.iframe['width'] = 656
>>> soup.iframe['height'] = 517

>>> print print soup.prettify()
<html>
 <body>
  <iframe allowfullscreen="" frameborder="0" height="517" src="http://www.youtube.com/embed/YX6eoRTaoUc?feature=oembed" width="656">
  </iframe>
 </body>
</html>

>>> html = unicode(soup)      # or str(soup) as required.

答案 1 :(得分:0)

我所做的是使用响应式div,没有指定宽度,高度

HTML:

<div class="responsive-video">
<iframe src="//www.youtube.com/embed/nYM3dqntqfQ?theme=light&amp;autoplay=1&amp;vq=hd720&amp;rel=0&amp;showinfo=0&amp;modestbranding=1&amp;autohide=1&amp;wmode=transparent&amp;iv_load_policy=3" frameborder="0" allowfullscreen=""></iframe>
</div>

CSS:

.responsive-video {
position: relative;
padding-bottom: 56.25%;
padding-top: 60px; overflow: hidden;
}
相关问题