SlideShareのAPIを叩いてスライドをDLするRubyスクリプトをHerokuにデプロイした
あらすじ
slideshareを社内から閲覧する事を禁じられているので、ワンクッションおいてスライドのpptを落とせるようにしたい
流れ
API申請
- slideshare -> Developer & APIのページからApply for API keyに移動
- ログイン or 新規アカウント作成
- Name、E-Mail、How do you want to use the API?を入力し送信。頑張って英文書く。
I want to get slideshare's slide from API.
- 送信されたメールに貼られているAPI KeyとShared Secretを控える
パラメータ
- slideshare -> Documentationを見ながら必要なパラメータを調べる
api_key | さっきのAPI Key |
---|---|
ts | タイムスタンプ*1 |
hash | さっきのShared Secretとこれから取得するtsでハッシュを作る*2 |
(username) | 登録ID |
(password) | パスワード |
全然関係ないけど、Documentationのページ内にあるi.e.って単語を初めて見たのでググってみた。論文中の「e.g.」「i.e.」の意味は何? - Diary@一色政彦WebSite that is ... すなわちとかそういう意味らしい。e.g.で例えば、for example的な。
ソース
ソースはこんな感じ。
require 'openssl' require 'uri' require 'net/http' url = 'http://www.slideshare.net/api/2/get_slideshow' param = Hash.new param["slideshow_url"] = 'http://www.slideshare.net/gishi/wicket-presentation' param["api_key"] = 'XXXXXXXX' param["sharedsecret"] = 'XXXXXXXX' # ts param["ts"] = Time.now.to_i.to_s # hash param["hash"] = Digest::SHA1.hexdigest(param["sharedsecret"]+param["ts"]) uri = URI.parse(url) Net::HTTP.new(uri.host).start do |http| #Net::HTTP.new(uri.host, 80, ENV["PROXY"], 8080).start do |http| uri_param = param.sort.map {|i|i.join('=')}.join('&') res = http.get(uri.path + '?' + uri_param) puts res.body end
成功するとこんな感じの内容が返ってくる。
<?xml version="1.0" encoding="UTF-8"?> <Slideshow> <ID>579496</ID> <Title>Wicket体験談</Title> <Description>第1回Wicket勉強会のライトニングトーク発表資料</Description> <Status>2</Status> <Username>gishi</Username> <URL>http://www.slideshare.net/gishi/wicket-presentation</URL> <ThumbnailURL>http://cdn.slidesharecdn.com/wicket-1220375587470160-8-thumbnail</ThumbnailURL> <ThumbnailSmallURL>http://cdn.slidesharecdn.com/wicket-1220375587470160-8-thumbnail-2</ThumbnailSmallURL> <Embed><div style="width:425px" id="__ss_579496"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/gishi/wicket-presentation" title="Wicket体験談">Wicket体験談</a></strong><object id="__sse579496" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=wicket-1220375587470160-8&stripped_title=wicket-presentation&userName=gishi" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"/><embed name="__sse579496" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=wicket-1220375587470160-8&stripped_title=wicket-presentation&userName=gishi" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/gishi">Hiroto Yamakawa</a>.</div></div></Embed> <Created>Tue Sep 02 10:14:12 -0500 2008</Created> <Updated>Tue Sep 02 10:16:15 -0500 2008</Updated> <Language>ja</Language> <Format>ppt</Format> <Download>1</Download> <DownloadUrl>http://s3.amazonaws.com/ppt-download/wicket-1220375587470160-8.ppt?response-content-disposition=attachment&Signature=ABs151smgWZ9213%2FyFq81fnMc6A%3D&Expires=1328606581&AWSAccessKeyId=AKIAJLJT267DEGKZDHEQ</DownloadUrl> <SlideshowType>0</SlideshowType> <InContest>0</InContest> </Slideshow>
おー取れた。んで、xmlの中のDownloadUrlからpptをゲットできた! これをSinatraでWebアプリケーションにしてHerokuにデプロイすれば職場から行けるかな!?