RickBlog

恩返し

動画のツイート情報の取得(Twitter gem)[m3u8&ts]

Twitter 6.2.0を使って、m3u8とtsの情報を取得する方法の備忘録。

VideoInfoVariantクラスを使う。

#(例)
client.user_timeline(params[:name],{count: 3}).each do |timeline|
  client.status(timeline.id).media[0].video_info.variants
end

(取得される情報)

[#<Twitter::Variant:0x00007f9a9298b488 @attrs={:bitrate=>432000, :content_type=>"video/mp4", :url=>"https://video.twimg.com/ext_tw_video/1093540366576275456/pu/vid/320x320/6Njwsfm5UWqO0oU-.mp4?tag=6"}>, #<Twitter::Variant:0x00007f9a9298b438 @attrs={:bitrate=>1280000, :content_type=>"video/mp4", :url=>"https://video.twimg.com/ext_tw_video/1093540366576275456/pu/vid/720x720/8XtxUTxm1tUG4ac_.mp4?tag=6"}>, #<Twitter::Variant:0x00007f9a9298b398 @attrs={:content_type=>"application/x-mpegURL", :url=>"https://video.twimg.com/ext_tw_video/1093540366576275456/pu/pl/QiuW1-iWLaygvK25.m3u8?tag=6"}>, #<Twitter::Variant:0x00007f9a9298b1b8 @attrs={:bitrate=>832000, :content_type=>"video/mp4", :url=>"https://video.twimg.com/ext_tw_video/1093540366576275456/pu/vid/480x480/pcsPrvRLvMExgib5.mp4?tag=6"}>]   


ドキュメントには書かれていないが、#bitrateや#content_typeと同じように#urlでURLを取得できる。

#(例)
client.user_timeline(params[:name],{count: 3}).each do |timeline|
  client.status(timeline.id).media[0].video_info.variants[0].url
end

(取得される情報)

https://video.twimg.com/ext_tw_video/1093540366576275456/pu/vid/320x320/6Njwsfm5UWqO0oU-.mp4?tag=6

content_typeがapplication/x-mpegURLのURLを使えばm3u8をダウンロードできる。

(m3u8の中身)

#EXTM3U
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=432000,RESOLUTION=320x320,CODECS="mp4a.40.2,avc1.4d001e"
/ext_tw_video/1093540366576275456/pu/pl/320x320/tfV38oY4Vgf57IDU.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=832000,RESOLUTION=480x480,CODECS="mp4a.40.2,avc1.4d001f"
/ext_tw_video/1093540366576275456/pu/pl/480x480/cP4EMl50LdmPmbDe.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000,RESOLUTION=720x720,CODECS="mp4a.40.2,avc1.640020"
/ext_tw_video/1093540366576275456/pu/pl/720x720/X3HUpbxApZP_9kO9.m3u8

末尾のURLを使って再度m3u8をダウンロード。
(m3u8の中身)

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:3
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-ALLOW-CACHE:YES
#EXTINF:3.000,
/ext_tw_video/1093540366576275456/pu/vid/0/3000/720x720/fOF3nKjZy6cFCfG0.ts
#EXTINF:3.000,
/ext_tw_video/1093540366576275456/pu/vid/3000/6000/720x720/p_XXWwSLqZadr473.ts
#EXTINF:2.976,
/ext_tw_video/1093540366576275456/pu/vid/6000/8976/720x720/wFfB8JO78KQDVYTr.ts
#EXT-X-ENDLIST

tsファイルの情報を取得できる。