ハイク終了1ヶ月前まで焦らしておいて、ようやく出てきたエクスポート機能。
えっCSV……?必要な項目があったら連絡してね……?何言ってるんだろうと思いながらも、早速ダウンロードしようとしたら、エラー吐いて死んだんですが、これは????
は?バカにしてくれちゃって〜www。自分で書きました。こんなギリギリまで引っ張ってこんなゴミ機能しかリリースできないとは笑止!(ここにタテジワネズミの画像を貼る)
私のスクリプトではAPIが返すJSONをそのまま保存するので、一見よくわからん情報もあるように見えますが、はてな謹製のエクスポートデータよりも完全なデータが取得できます。ハイクがなくなった後で「このパラメータがほしかった」となっても、もう手に入らないので。
Python: https://gist.github.com/Akkiesoft/afd6a0d2aeaac95780c651d8f759b7b7
UserScript: https://gist.github.com/Akkiesoft/bf94c62e993174e29411475eca456a70
Python分かる人は普通にこれでやったらいいような気がします。わかんない人はUserScript版をChrome + TamperMonkey環境で実行してください。
UserScriptをインストールすると、ハイクの投稿ボックスの上になんかメッセージが出始めます。「ダウンロード」ボタンを押すとデータをハイクから取得します。取得中はこんなかんじでデータの取得状況が出ます。タブを閉じたり、ページを移動したりしないで待ちます。
取得が終わったら「ダウンロード」というリンクが増えます。これをクリックしてZIPファイルをダウンロードします。
というわけで、私の場合は複数のJSONが27MBくらい分降ってきました。12年の重みよ……いっかいエクスポートした後全消しやったので別のところにもうちょっとあるんだけど。
FAQ
スターの情報とかスタコメ(吹き出しマーク内のコメント)は入ってるの
はてなハイクとはてなスターはもともと別サービスなので、ハイクAPIで取得ができません。今回終了するのはハイクなので、スターは終了しません。スターの情報はURLに紐付いて管理されているので、URLがわかればスターやスタコメも参照できます。むかし作った謎ページで見られます。なんか適当なハイクのエントリーURLを入れて見てみてください。
https://kokuda.org/service/star.html
ちなみにJSONにはスターをつけたユーザーのユニーク数がfavoritedに格納されています。
JSON取って何するの
今のところ何もないけど、誰かがデータをインポートしてなにかできるサービスとかを作ったときに、手元にデータが無いと何もできないよ。私が取得したということはなにかしようと思っていないことはないよ。
特定の日付まで云々の入力ボックスについて
初めて取得した時点から、ハイク終了日までのエントリーをエクスポートをするときに使うやつです。
取得したZIPファイルに含まれている「ID-<数字>.json」のファイルのうち<数字>が一番大きいやつをボックスに貼り付けてからダウンロードボタンをクリックすると、途中でダウンロードを終わってくれます。
200エントリー単位で処理するので、データの重複が発生しますが許せ。
技術的なおもしろかったところ
jszip.jsをUserScript内で使ってみたんですが、大量に取得したJSONをJavaScriptでZIPにまとめてダウンロードできるようにするとかめっちゃおもしろかった。ローカルに溜め込めるってことなんたよな。そんなこんなでハイクから引っ張ってくるのが130行ちょいでできちゃうと。すごい時代よね。
さいごに
データのエクスポートはいつまで提供されますか?って問い合わせたら、ハイクのサービス終了と同時にエクスポート機能も終了しますと回答を得ました。素敵ですね。終了直前のハイクははてな謹製エクスポートツールではエクスポートできないことが容易に想像できます。最後はスクショで保存しろと?笑
Haiku2Twitみたいに、登録してもらったユーザーのハイクをクロールして、転送ではなく保存しておくようなサービスでも今から書くべきなのかしら。悩ましい。
あと仕事中に書いてしまい、反省している。
CSV
どういう形式で降ってくるのか、ダウンロードできないから相変わらずわからなくて、どういうのか見たいんですけど。
追記
ダウンロードしたJSONを読み込んでそれっぽく表示するHTMLファイルというものも試しに作ってみました。思いつきで随時更新してます。とりあえずそれっぽい整形とスター・スタコメが出る辺りまで。いやほんと、今どきのJavaScript何でもかんたんにできるなまじで。
ハイクから拾ってきたJSONを食わせるとハイクっぽいTLに仕上げるやつ。JavaScriptまじで何でもできてすごいわね。 · GitHub