iTunesとかに再生回数っていう機能ありますよね?
僕は音楽をよく聞くので、この項目を見て「この曲100回くらい聞いてるのか〜」とか考えるのが好きなんです。
でも最近はapple musicとかよりよっぽどyoutubeで音楽を聞く回数が多いので、見た回数(≒再生回数)でランキングを作成したいなと。
ということで、とりあえず下記の記事を参考にして、youtubeの全閲覧履歴を出力してみました。
参考資料
環境
- mac OS (High Sierra)
- google chrome
- pyenv 1.2.4
- python 3.6.5
手順
Youtube-Watch-History-Scraperのダウンロード
下記リポジトリをクローンする。(もしくはzipファイルでダウンロードし、解凍する。)
https://github.com/zvodd/Youtube-Watch-History-Scraper
EditThisCookieをダウンロード
下記サイト(chrome store)から拡張機能をダウンロードする。
https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg
YouTubeのCookieを保存する。
YouTubeのトップページに行き、拡張機能のアイコンをクリック。
エクスポートボタンをクリックし、クリップボードにCookieを保存する。
テキストエディタを開いてペーストし、youtube_cookies.json
という名前で、./Youtube-Watch-History-Scraper
のディレクトリ直下に保存しておく。
これで下準備はおk。
pipで必要なファイルをインストール(以下ターミナルの操作)
- scrapy(スクレイピング用のpythonフレームワーク)
- lxml(HTMLを扱うためのライブラリ)
- sqlalchemy(pythonでsqlを扱うためのライブラリ)
ディレクトリ直下に移動した後、上記3つをpip経由でインストール。
$ cd ./Youtube-Watch-History-Scraper-master
$ pip install scrapy lxml sqlalchemy
いざ実行
$ scrapy crawl yth_spider
実行するとすごい勢いで閲覧履歴がログ出力されていくので、
「うわ、1年前こんな動画見てたなあ...」
など、情緒にふけりながらボーッと見ておく。
処理終了
$ 2018-05-27 14:54:21 [scrapy.core.engine] INFO: Spider closed (finished)
5分くらい放置していたら処理が終わる。
出力結果
ディレクトリを見てみるとyoutube_history.db
というファイルが生成されており、そこに保存されています。
カラムは以下の通り。
id | vid | author_id | title | description | time |
---|
これをsqlite等で解析します。
ここで眠くなったため、ひとまずこの記事はこれにて...