最近放置がちだったpocketを活用し始めました.Android端末で隙間時間にRSS消化して気になったものをpocketに投げておいて後でPCで読むという感じのブックマーク代わりな感じです.
ここに投稿したものを日毎に保存しておくと便利かもと試した記録です.
アプリケーション登録
まずはアプリケーション登録をする
記事が読めればいいので,permissionsは`Retrieve`
にした.登録すると,CONSUMER KEY
が入手できる.
REQUEST TOKENを入手する
$ curl -H "Content-Type: application/json; charset=UTF-8" -X POST \ https://getpocket.com/v3/oauth/request \ -d ' { "consumer_key" : "XXXX-XXXXXXXXXXXXXXXXXXXXXXXX", "redirect_uri":"http://matoken.org/" } '
結果
code=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXX
アプリケーションをアカウントに紐付ける
ウェブブラウザで
`https://getpocket.com/auth/authorize?request_token=&redirect_uri=http://matoken.org/’
にアクセスしてアカウントにリクエストを許可する.urlは適当.
アクセストークンを入手する
$ curl -H "Content-Type: application/json; charset=UTF-8" -X POST \ https://getpocket.com/v3/oauth/authorize \ -d ' { "consumer_key":"<CONSUMER_KEY>", "code":"<REQUEST_TOKEN>" } '
結果
access_token=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXX&username=user%40example.com
投稿を取得する
application/json で求める.とりあえず1件だけ(count'':
1”)
$ curl -H "Content-Type: application/json; charset=UTF-8" -X POST \ https://getpocket.com/v3/get -d ' { "consumer_key":"<CONSIMMER_KEY>", "access_token":"<ACCESS_TOKEN>", "count":1 } ' | jq { "status": 1, "complete": 1, "list": { "2692971736": { "item_id": "2692971736", "resolved_id": "2692971736", "given_url": "https://www.patreon.com/posts/29180933", "given_title": "DUVET | 1041uuu on Patreon", "favorite": "0", "status": "0", "time_added": "1565885008", "time_updated": "1565885011", "time_read": "0", "time_favorited": "0", "sort_id": 0, "resolved_title": "", "resolved_url": "https://www.patreon.com/posts/29180933", "excerpt": "", "is_article": "0", "is_index": "0", "has_video": "0", "has_image": "0", "word_count": "0", "lang": "", "domain_metadata": { "name": "Patreon", "logo": "https://logo.clearbit.com/patreon.com?size=800", "greyscale_logo": "https://logo.clearbit.com/patreon.com?size=800&greyscale=true" }, "listen_duration_estimate": 0 } }, "error": null, "search_meta": { "search_type": "normal" }, "since": 1565886741 }
application/x-www-form-urlencoded で求める.結果は同じでjson形式で帰ってくる.
$ curl -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -X POST https://getpocket.com/v3/get -d \ "consumer_key=<CONSUMER_KEY>&access_token=<ACCES_TOKEN>&state=all&sort=oldest&detailType=symple&since=`date -d'1days ago' +%s`" | jq .
引数の意味はこんな感じ
-
state=all : 全ての投稿形式(既読未読の両方)
-
sort=oldest : 古いものから順に
-
detailType=simple : 基本的な情報
-
since=
date -d'1days ago' +%s
: 指定したUNIX
Time以降の記事を取得.取得する開始UNIX TimeをGNU coreutilsのdate
commandで過去1日(-d’1days ago’)時点のUNIX Time(+%s)を取得して指定
毎日前日分のpocket投稿titleとurlをDokuwikiに書き込み(Markdown形式)
$ sudo -u www-data crontab -l | grep wiki 0 0 1 * * mkdir -p /var/lib/dokuwiki/farm/wiki.matoken.org/data/pages/memo/`date +\%Y/%m` 2 0 * * * curl -s -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -X POST https://getpocket.com/v3/get -d "consumer_key=87275-eea7fa53556961262450492d&access_token=27847a46-0ff9-f9a3-ea7f-31279b&state=all&sort=oldest&detailType=symple&since=`date -d'1days ago' +%s`" | jq -r '.list[] | [.given_title,.given_url] | @csv' | sed -e 's/^"/* [/' | sed -e 's/","/](/' | sed -e 's/"$/)/' | sed -e 's/^\[]/\[null]/' | sed '1s/^/\n/' >> /var/lib/dokuwiki/farm/wiki.matoken.org/data/pages/memo/`date +\%Y/\%m/\%F`.txt
1行目
-
0 0 1 * *
: 毎月1日の00:00に実行 -
mkdir -p /var/lib/dokuwiki/farm/wiki.matoken.org/data/pages/memo/`date
: 月のディレクトリを掘る.%がエスケープされているのはcrontabの使用に合わせて.
+%Y/%m` -
1 0 * * *
: 毎日 00:01 に実行
2行目
-
jq -r '.list[] | [.given_title,.given_url] | @csv'
:
pocketからの結果からtitleとurlを抜き出してcsv形式で出力 -
sed -e 's/^"/* [/' | sed -e 's/","/](/' | sed -e 's/"$/)/' | sed -e 's/^\[]/\[null]/'
: markdownのリンクに変換 -
sed '1s/^/\n/'
:
先頭行を空けないとmarkdownを認識しないようなので改行を入れる -
/var/lib/dokuwiki/farm/wiki.matoken.org/data/pages/memo/`date +\%Y/\%m/\%F`
.txt`
: 保存先,dokuwikiではmemo:2019:08:2019-08-16
のようになる
実はRSSで吐き出せる……
pocketのオプションのプライバシー管理の中にRSSフィードの項目が!
これを公開にして「すべてのアイテムフィード」を取得すればやりたかったことが出来た…….
細かい制御をしたいならAPIのほうがいいと思いますが,今回自分がやりたかったのは毎日のバックアップだったので…….もう設定終わったからこれは見なかったことに.
$ rsstail -l -1 -n5 -H -u "http://getpocket.com/users/*sso1456706866592e34/feed/all" Title: エロの秘密結社 ドシコルド EP.38 夢現のエモーション - 無料コミック ComicWalker Link: https://comic-walker.com/viewer?tw=2&dlcl=ja&cid=KDCW_MF00000086010039_68&bs=1 Title: 次世代衛星向け「グリーン燃料」 月探査でも使用か 日米が開発競争 Link: https://sankei.com/life/news/190815/lif1908150010-n1.html Title: ArchiveBox Link: https://archivebox.io Title: セキュリティ企業が管理する約2800万件の生体認証記録が流出していたことが判明 Link: https://gigazine.net/news/20190815-data-breach-biometric-security Title: DUVET | 1041uuu on Patreon Link: https://patreon.com/posts/29180933
環境
$ dpkg-query -W curl sed jq rsstail dokuwiki curl 7.64.0-4 dokuwiki 0.0.20180422.a-2 jq 1.5+dfsg-2+b1 rsstail 1.8-1+b1 sed 4.7-1 $ lsb_release -dr Description: Debian GNU/Linux 10 (buster) Release: 10 $ uname -m x86_64