pornhubAPIを完全に自作しはじめた

継続したブログ記事て書いとくとあとで見返しやすいかなって思って書き出した。SKKでHTML編集、やりにくくてしょうがないから、飽きたらはてな記法で書くかもしれない

pornder開発

pornderではnpmで配布されているpornhubのためのライブラリbowwow-pornhub-apiを使っている。これ単体でフロントでは使えないので、expressを使って簡単につくったrestAPIをherokuに置いて、それを取りにいっている。要はライブラリ→自作API→フロントって感じでひとつ余計なものを挟んでいる

 

pornhubAPI自体の機能としては、

  • AVのカテゴリを元に検索(「おっぱい」「レズ」とかで動画検索できる)
  • 動画のタイトル、URL、サムネ(これに関しては、ひとつだけじゃなくて動画中のやつを複数取ってきてくれる!すごい)、評価とか動画時間とか画質とか....
  • 動画自体の検索(動画のユニークなキーからできたりする)

んでこれをexpressのGETで渡すようにして(その際にpornderで使うためにjsonデータの整形とかいろいろするけど)るだけで本来は中間のrestAPIが邪魔。pornderの表示を高速化するためにいろいろやってるけど、明かにここが速度の邪魔をしてる。

 

もうそれやったら、ライブラリ使わずに直接expressでpornhubのデータを取ってきて渡すか!ってなってきた

スクレイピングってのがあるらしいな?

適当にpornhub上のデータをスクレイピングしてやってみるか、って思った。

スクレイピングって聞いても、同じシェアハウスの人間がpythonでなんかいろいろやってたりしてたって記憶しかないし、まったくわからん。要はURL先のhtml見てタグを元いるやつだけ抽出したらいいんじゃないの。しらんけど

 

qiita.com

nodeJSでのスクレイピングについてぐぐってたらこれ見付けたので、紹介されてたcheeriojsってやつ使ってみる。

jQueryライクに書ける

 みたいなこと書いてあって、jQuery書こうともしなかったし、周りの声から敬遠してたのでちょっと嫌だったけどこれでいこうとおもう。ていうかスクレイピングのためのライブラリ、どれもjQueryっぽく書けるぜ!!ってやつばっかなんだけどなんで?

cheeriojs,どうやら正確にはスクレイピングのためのライブラリというよりかはHTMLの解釈のためのライブラリらしい。クラス名とかのやつかな?

qiita.com

とりあえずこれ見て、適当な映画のタイトルを取得するのはできた。まだ複雑な部分指定とかはよくわからんけどまあなんとかなるでしょ。

んでこの要領でpornhubのURLを指定してスクレイピングしようとしたんだけどできない。なんも帰ってこん。なんかいろいろやって、もうめんどくさかったので前使ってたpornhubAPIのgithubリポジトリ内のindex.jsを覗いたらhttps://jp.pornhub.com/webmasters/search こんな文字列を見付けた。内容もビンゴ!(さっきのリンク先見てみて(jsonがぶわって表示されるだけなので安心してください))それっぽいjson形式の文字列がならんでる。cheerioでアクセスしてみても全部取れる。

内容としてはpornhub上のカテゴリの一部が表示されてるっぽい。githubでこのURLが格納されてた変数名もvideoSearchBaseURLってやつだったのでこれを元に動画の検索とかできるんじゃないかなあ。

githubにあがってるのを読みこんでみたらもっといいかもしれない