任意のtumblrのPictureだけを一括ダウンロードしてハァハァするJavaScript版

以前作ったtumblr画像一括ダウンロードスクリプトなのだが…

思い立ったが吉日。一括ダウンロードスクリプトを作った。 via 任意のtumblrのPictureだけを一括ダウンロードしてハァハァするシェルスクリプト

tumblrの「Archive」ページの仕様が変更になったらしく、AutoPagerizeライクなインターフェースに。それに伴って、一括取得するために作成していたtumblrget.shが動かなくなってしまったとtwitter@thelomegさんにご指摘いただき、現行仕様のarchive画面では動かないことが判明…。うう。というわけで、直すことに。

どうやって画像一覧を取得しようかと思って調べるとtumblrAPIがJSON(P)で提供されていたので、JQueryの練習がてらJavaScript de Get!! verなtumblrURLゲッツスクリプトを作成したので公開。



■機能

1.Photo高解像度のみゴリゴリURL取り出し
テキストのPostとかは時々Reblogするけど使わないんで、今回は「Photo」として投稿してある画像URLのみ取得。[photo-url-1280]ってのが高解像度っぽいので、それを抽出してる。

2.ネタ重複削除
APIでネタ元のURL[photo-link-url]を提供していたので、ネタ元が重複しない機能を実装。つまり「鼻息荒く同じ画像をReblogReblogReblog」してしまったものや、過去の自分をまた繰り返してしまった「昨日のオレをまたReblog」したPostの重複ダウンロードともオサラバ。



■ダウンロード手順

1.URL取得
このページに遷移してtumblrサブドメインを入力してGet!ボタンを押下して数秒待つと、URLのダウンロードが始まる。全部のURLをDLするまで延々と続く。


2.出力結果をCtrl+Aしてコピペでエディタに貼り付けて「URL.txt」などの名前でリストを保存。

URL.txt

1234567890 http://30.media.tumblr.com/tumblr_l9cmvip3ew1qzwj9fo1_400.jpg
2234567890 http://hogefuga.tumblr.com/photo/1280/1196026658/1/tumblr_l9dpq4GwPe1qzkv2f
3234567890 http://hogefuga.tumblr.com/photo/1280/1196024747/1/tumblr_l9br9d9oee1qz53a8
4234567890 http://hogefuga.tumblr.com/photo/1280/1196015476/1/tumblr_l9ct7mdAnh1qzkv2f
5234567890 http://26.media.tumblr.com/tumblr_l9994fEUV01qz90kto1_400.jpg

リストはタブ区切りテキストになっており「記事ID」「(保持している最高解像度の)画像URL」というデータ。なんでこんなデータにしているかというと、画像URLの先が固定URLのものからAmazonS3などにリダイレクトされるQueryString付きのURLだったりして、そのままwgetしてしまうとファイル名が大変長いハッシュみたいなファイル名になるので記事IDをkeyにしてシンプルかつソート可能なファイル名にするため、記事IDを併せて取得している。


3.wgetに記事IDと画像URLを渡して挙げるとダウンロードがスタート。

↓↓これを打て!↓↓


$ while read ID URL; do wget -O "$ID.jpg" $URL; done < URL.txt

=> `5234567890.jpg'
Resolving 30.media.tumblr.com... 68.232.44.19
Connecting to 30.media.tumblr.com|68.232.44.19|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 58,936 (58K) [image/jpeg]

100%[========================================================>] 58,936 69.51K/s

17:00:03 (69.24 KB/s) - `5234567890.jpg' saved [58936/58936]

=> `4234567890.jpg'
Resolving hogefuga.tumblr.com... 174.120.238.130
Connecting to hogefuga.tumblr.com|174.120.238.130|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://s3.amazonaws.com/data.tumblr.com/tumblr_l9dpq4GwPe1qzkv2fo1_1280.jpg?AWSAccessKeyId=0RYTHV9YYQ4W5Q3HQMG2&Expires=1285660803&Signature=Hv1P9nHh0352LhGPGaQaNN1FQ%2FE%3D [following]

=> `4234567890.jpg'
Resolving s3.amazonaws.com... 207.171.185.129
Connecting to s3.amazonaws.com|207.171.185.129|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 305,133 (298K) [image/jpeg]

100%[========================================================>] 305,133 90.62K/s ETA 00:00

17:00:08 (90.45 KB/s) - `4234567890.jpg' saved [305133/305133]

=> `3234567890.jpg'
Resolving hogefuga.tumblr.com... 174.120.238.130
Connecting to hogefuga.tumblr.com|174.120.238.130|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://s3.amazonaws.com/data.tumblr.com/tumblr_l9br9d9oee1qz53a8o1_1280.jpg?AWSAccessKeyId=0RYTHV9YYQ4W5Q3HQMG2&Expires=1285660808&Signature=K56z7OPLNVrTqVimssWfxbqkwK0%3D [following]

=> `3234567890.jpg'
Resolving s3.amazonaws.com... 207.171.185.129
Connecting to s3.amazonaws.com|207.171.185.129|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 344,971 (337K) [image/jpeg]

100%[========================================================>] 344,971 91.00K/s ETA 00:00

17:00:12 (90.82 KB/s) - `3234567890.jpg' saved [344971/344971]

=> `2234567890.jpg'
Resolving hogefuga.tumblr.com... 174.120.238.130
Connecting to hogefuga.tumblr.com|174.120.238.130|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://s3.amazonaws.com/data.tumblr.com/tumblr_l9ct7mdAnh1qzkv2fo1_1280.jpg?AWSAccessKeyId=0RYTHV9YYQ4W5Q3HQMG2&Expires=1285660813&Signature=aENxCzkCpj7Lw3vyW8YlQinEFs8%3D [following]

=> `2234567890.jpg'
Resolving s3.amazonaws.com... 207.171.185.129
Connecting to s3.amazonaws.com|207.171.185.129|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 857,345 (837K) [image/jpeg]

100%[========================================================>] 857,345 106.25K/s ETA 00:00

17:00:22 (105.12 KB/s) - `2234567890.jpg' saved [857345/857345]

=> `1234567890.jpg'
Resolving 26.media.tumblr.com... 68.232.44.19
Connecting to 26.media.tumblr.com|68.232.44.19|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 70,554 (69K) [image/jpeg]

100%[========================================================>] 70,554 67.05K/s

17:00:23 (66.98 KB/s) - `1234567890.jpg' saved [70554/70554]

するとこんな感じで「"記事ID".jpg」で保存される。

$ ls -l
total 3232

  • rw-r--r-- 1 70554 9 24 23:19 1234567890.jpg
  • rw-r--r-- 1 857345 9 26 21:26 2234567890.jpg
  • rw-r--r-- 1 344971 9 26 07:46 3234567890.jpg
  • rw-r--r-- 1 305133 9 27 09:08 4234567890.jpg
  • rw-r--r-- 1 58936 9 26 19:09 5234567890.jpg
  • rw-r--r--@ 1 407 9 27 16:50 URL.txt

メデタシメデタシ。