LoginSignup
7
8

More than 5 years have passed since last update.

SlideShareのURLを埋め込みコード用に変換する

Last updated at Posted at 2013-03-25

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は一手間必要だった。そんなお話でした。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8