Publish API の
Method: photos.listでデータ取得
filterは必須じゃないので空欄でもEXECUTE可能です。pageSizeの最大値は200ですが、pageTokenを使えば、続きのデータを取得可能です。最初に200個のデータを取得すると、最後に"nextPageToken"があるので、その文字列をpageTokenに貼り付けると次のデータを取得可能になります。
pageSizeを4→5→8→10と少しずつ増やしてみると、拒否された写真のデータが返って来ないことが分かりました。10個要求しても8個しか返って来ません。400個まで取得してみると395個しか返って来ないので、拒否されている枚数と一致です。1322個まで取得可能でしたが、累計で1307個しか返って来ないことが分かりました。15枚の不足です。現在拒否としてリストアップしているのが5枚、それ以外に5枚は拒否を確認出来ているのですが、あと5枚不明な写真があるようです。探すのが面倒だな。
宇賀神社、すずめ地獄が2枚、通潤橋、乗用車内の5枚と最近拒否を確認した5枚、後5枚が分からない。
EXECUTEした結果は下記の様にツリーを折りたたんだ状態で全てを選択してコピーすると楽です。
テキストエディタ等にペーストすれば内容を見ることが可能です。JSONエディタ等で開くとツリー表示と切り替えて見ることが出来ます。今回は日本語対応の「
J_and_E」を使ってみました。
|
J and EでJSONファイルをツリー表示した様子 |
pageSizeを10とし、10個だけ取得した例です。0番目の一部を開いています。
9番目の後にnextPageTokenがあります。
私の場合は1,300枚ほどなので、200枚×7回で全データを得ることが出来ますが、枚数が多い人は自動化しないと面倒でしょうね。
☆JSONデータからphotoIdの値だけ抽出する方法(Windows10)
コマンドプロンプトで
jqコマンドを使うと簡単に抽出出来ます。
※jq-win64.exeをjq.exeにファイル名を変えて使ってます。
c:\>type file.json | jq .photos[].photoId.id > photoId.txt
jqに-rを付けるとダブルクォーテーション無しになります。
c:\>type file.json | jq -r .photos[].photoId.id > photoId.txt
閲覧数のみは下記で抽出可能です。
c:\>type photolist.json | jq -r .photos[].viewCount > view_count.txt
typeコマンドをパイプ「|」でつないで、リダイレクト「>」でファイルに書き込みます。
これでphotoIdだけのリストファイルが作成されます。
リダイレクトを「>>」として7回分を追加書き込みしてソートしておくと便利です。
週に一回photoIdリストを取得しておくと、不具合発生中の承認と拒否の推移が分かります。コマンドプロンプトで下記の様にすると同じフォルダーのファイルをアペンドします。
c:\>copy /b photolist_*.json photolist_all.json
定期的にlistを取得するとviewCountのみ変化する。この行は下記で削除可能。
※位置情報が変わるのでおかしい(末桁が四捨五入??)詳細は未調査
type photolist.json | jq "del(.photos[].viewCount)" > photolist_delview.json
※代替方法 エディタMeryの置換で「^.*viewCount.*\n」を検索し削除する。
|
正規表現を使用、置換後の文字列欄は空白に |
placeIdは下記で抽出可能です。ソートの後に重複削除が必要です。
c:\>type file.json | jq -r .photos[].places[].placeId > placeId.txt
clipにパイプすると、クリップボードに書き込みます。
c:\>type file.json | jq -r .photos[].places[].placeId | clip
【Windows 10】「クリップボード履歴」を活用する
※コマンドプロンプトでファイル名・ディレクトリ名を補完する機能は
TABキーです。