之前因为写一个视频分享网站,所以必须得折腾 youku 这里记录一下:
主要参考: http://www.hdj.me/demos/vediourlparser/ http://userscripts.org/scripts/show/162286
1.get id 一切都是由用户输入 youku 视频的网址说起 比如http://v.youku.com/v_show/id_XNDA1MDc3NzA4.html 那么这个视频 id(youku 的)就是 XNDA1MDc3NzA4
def get_video_id
# user 发布 micropost,里面包含了 video_url,用 video_url 来得到 video_id
video_id = self.video_url.split("id_")[1]
ampersandPosition = video_id.index(".html")
self.video_id = video_id[0..ampersandPosition-1]
2.json response 用来得到截图,标题等信息。youku 自己有一个 API 接口可用,于是就……
response = HTTParty.get("http://v.youku.com/player/getPlayList/VideoIDS/#self.video_id}/timezone/+08/version/5/source/out?password=&ran=2513&n=3"{) decode_response = ActiveSupport::JSON.decode(response) self.title = decode_response['data'][0]['title'] self.video_logo_url = decode_response['data'][0]['logo'] if !self.user self.username = decode_response['data'][0]['username'] end 这样就得到了每个视频的 title,发布用户,以及截图(logo)
不过 logo 是个大图,要得到 thumbnail 的话,
def get_thumbnail url = self.video_url doc = Nokogiri::HTML(open(url))
#直接在页面 get thumbnail_url video_thumbnail_url = doc.css("a#s_qq_haoyou")[0]['href'] video_thumbnail_url = video_thumbnail_url.split("pics=")[1] self.video_thumbnail_url = video_thumbnail_url.split("&site=")[0] end
3.anit-ads 主要来源:http://userscripts.org/scripts/show/162286 简单来说,就是替换了个.swf 播放器。上面这个脚本里面的替换播放器不支持别的网站引用,所以就从那里下载下来,放在了 server 端(lib/assets/javascripts 里面,其实我也很想用 BAE,但是不会用)所以在 view 中: