SlideShareの各スライドページのURLはこんな感じ。
http://www.slideshare.net/kadoppe/d3js-svg
一方、上のスライドの埋め込みコードはこんな感じ。
<iframe src="http://www.slideshare.net/slideshow/embed_code/17523095" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen> </iframe>
埋め込みコードからスライドのURLを抽出してみると、スライドページのURLと形式が違うことがわかる。
http://www.slideshare.net/slideshow/embed_code/17523095
なので、例えば、スライドページのURLを入力すると、そのスライドの埋め込みコードを出力してくれるようなプログラムを書きたい場合、何らかの方法でURLを変更する機能が必要になる。
いろいろ調べていたら、スライドページのHTMLコードに以下のようなmeta
要素を発見。
<meta name="twitter:player" class="twitter_player" value="https://www.slideshare.net/slideshow/embed_code/17523095" />
どうやらTwitterにSlideShareのURLを投稿した時に使われるメタ情報らしい。
今回はこの情報を使って、RubyでURLの変換メソッドを書いて見ることに。
require 'nokogiri'
require 'open-uri'
# SlideShareのページURLを埋め込みコード用に変換する
def convert_slideshare_url(slideshare_url)
# スライドページのURLを開き、Nokogiriで読み込み
doc = Nokogiri::HTML(open(slideshare_url))
# CSSセレクタを使って目当ての情報を持っているmeta要素を探索
meta = doc.css('meta[name="twitter:player"]').first
if meta
# 見つけたmeta要素のvalue属性の値を取得して返す
return meta.attr(:value).sub('https', 'http')
end
end
こんな感じ。Nokogiriとopen-uriを使用。
YouTubeだとURLから埋め込みコードを直接変換できるのに、SlideShareは一手間必要だった。そんなお話でした。