JSONPとはJSON形式の情報を他のドメインから得る仕組みです。JSONというのはテキストデータ受け渡しの形式です。BloggerではJSONPでブログのデータが提供されていますので、これを利用していろいろできます。
Bloggerが提供しているJSONPでブログの情報がいろいろ引き出せる
モバイルサイトでのページ番号付ページナビの動きがおかしいのでソースを眺めてみました。
関数の引数からブログの記事数を引き出しているようでしたがその引数の出所が全然わかりませんでした。
あれこれ調べているうちにようやくわかりました。
Bloggerが提供しているJSONPという仕組みでブログの情報がひきだせるようです。
第11回 JSONP入門:これでできる! クロスブラウザJavaScript入門|gihyo.jp … 技術評論社で言葉の意味がわかりました。
JSONPで悩むある程度の人々へでJSONPの実際の動きが理解できました。
JSONPとはcallback=関数名で、「この関数の引数でJSONデータを頂戴」、って頼むことなんですね。
Basic Blogger JSON Feed Apiにブログデータの抽出方法一覧が載っています。
公式ヘルプにこのような一覧がないか探してみましたが探し出せませんでした。
まずはJSONPでブログの情報を引き出す方法
http://p--q.blogspot.jp/feeds/posts/default?alt=json-in-script
このリンクにアクセスすると最新の投稿から最大25個までの投稿の情報が得られます。
Chromeでアクセスしてみるととても見にくいです。
そこでChromeの拡張機能のJSON Formatterを導入すると項目ごとに分けてくれて、しかも折りたためるようになってとても見やすくなります。
"media$thumbnail"の中の"url":をリンクすると投稿内の1番目の画像のサムネイルが表示されますね。
http://p--q.blogspot.jp/feeds/posts/summary?alt=json-in-script
defaultをsummaryに変えると"content"にあった投稿本文の部分が"summary"となって最初のほうだけ表示されるようになります。
http://p--q.blogspot.jp/feeds/posts/summary?alt=json-in-script&max-results=500
&max-results=で取得する投稿数を指定できます。設定できる最大数は500だそうです。
(2016.4.26追記。500個からさらに150個に削減されました。Blogger:ページ番号付ページナビ(3)フィードの取得件数制限に左右されないページナビ参照。)
http://p--q.blogspot.jp/feeds/posts/summary?alt=json-in-script&start-index=10
&start-index=で取得開始投稿番号を指定できます。最新の投稿が1になります。
http://p--q.blogspot.jp/feeds/posts/summary?alt=json-in-script&orderby=updated
&orderby=でソート順を指定できます。
&orderby=updatedで"updated"の降順になります。更新日時の新しいものが先頭にきます。
http://p--q.blogspot.jp/feeds/posts/summary?alt=json-in-script&orderby=published
&orderby=publishedで"published"の降順になります。デフォルトではこの順になります。
公開日時の新しいものが先頭にきます。
http://p--q.blogspot.jp/feeds/posts/summary?alt=json-in-script&published-min=2013-08-01T00:00:00%2B09:00&published-max=2013-08-10T00:00:00%2B09:00
&published-min=と&published-max=で公開日時の範囲を指定して投稿を取得します。
日時は2013-08-01T00:00:00+09:00という形式で指定しますが+は%2Bと書かないといけません。
http://p--q.blogspot.jp/feeds/posts/summary?alt=json-in-script&orderby=updated&updated-min=2013-08-01T00:00:00%2B09:00&updated-max=2013-08-10T00:00:00%2B09:00
&updated-min=と&updated-max=で更新日時の範囲を指定して投稿を取得します。
&orderby=updatedを省略すると正しく取得できません。
http://p--q.blogspot.jp/feeds/pages/summary?alt=json-in-script
pagesにするとstatic_pageが得られます。
http://p--q.blogspot.jp/feeds/posts/summary/-/JavaScript%E5%AD%A6%E7%BF%92?alt=json-in-script
「/-/ラベル名のURLエンコード」をつけるとラベル名で絞り込めます。
その他galife: Blogger の フィード URL 構成 と パラメタ― まとめに詳しいです。
URLエンコードへの変換ツールも載せてくれています。
このほか個別の投稿のデータをJSON形式で引き出す方法もわかりました。
http://p--q.blogspot.jp/atom.xml?path=/2013/08/bloggerjsonpjson.html&alt=json-in-script
これでこの記事http://p--q.blogspot.jp/2013/08/bloggerjsonpjson.htmlのデータが情報が引き出せます。
https://p--q.blogspot.jp/feeds/posts/default?alt=json-in-script&path=/2013/08/bloggerjsonpjson.html
これでも同じことです。
ブログ内のスクリプトからは/feeds/posts/default?alt=json-in-script&path=/2013/08/bloggerjsonpjson.htmlで取得できます。
defaultにしていても、フィードの設定を先頭のみにしているときはsummayしか取得できません。
次の記事でこのJSON形式のデータを加工する方法を書きます。
参考にしたサイト
第11回 JSONP入門:これでできる! クロスブラウザJavaScript入門|gihyo.jp … 技術評論社
JavaScriptは関数内変数定義でもvarをつけないとグローバル変数になってしまうんですね。
JSONPで悩むある程度の人々へ
jQueryでは受け取る関数名はjQueryが勝手に決めてくれます。
Basic Blogger JSON Feed Api
BloggerがJSON形式で提供しているブログデータの抽出方法一覧が載っています。
Chrome ウェブストア - JSON Formatter
ChromeでJSON形式のデータを見やすくしてくれます。
galife: Blogger の フィード URL 構成 と パラメタ― まとめ
データ取得パラメーターが詳しく解説されています。URL エンコーダーも載せてくれています。
Using JSON in the Google Data Protocol - Google Data APIs — Google Developers
これが公式ヘルプ?
google data api - invalid rfc 3339 timestamp format? - Stack Overflow
日時は2013-08-01T00:00:00+09:00という形式で指定しますが+は%2Bと書かないといけません。
Bloggerで記事に最終更新日を付ける方法 | 某氏の猫空
投稿のURLから個別の投稿のJSON形式の情報を得る方法を教えていただきました。
0 件のコメント:
コメントを投稿