ランキング系サイトの場合は、更新してからそれほどタイムラグなく最新記事を一覧に表示させることが
できるようになります。
これは、ブログ更新のたびに自動で各サービスに「更新したよ」通知を飛ばしてくれるようにするものです。
ところが当サイトのように Django で自前で実装したり、
まあ他のフレームワークを使ってたりしていて、いずれにせよ ping 送信の仕組みなんて導入してない!
って場合は ping 送信するのが手作業だったり不便極まりないです。(´・ω・`)
ランキング系のサイトには、 ping の代理申請っていうのがあって、ワンポチするだけなんですが、
それでも自分から何かアクションを起こさないといけないっていうのはやや面倒なものです。
そこで、以下のようなスクリプトを組んで、みんな大好き crontab に登録することで自動化しちゃいました。笑
以下を試してみました。
# url のところは「人気ブログランキング」の ping 送信先URLです。
[4to-pics@localhost tools]$ curl http://blog.with2.net/ping.php/xxxx/xxxxx
<?xml version="1.0" encoding="utf-8"?>
<response>
<error>1</error>
<message>Ping failed. parameter error. (ブラウザではアクセスできません。ご利用されているブログツールで更新pingの設定を行ってください。)</message>
</response>
まあ、適切じゃなさそうだったので次なる手を。
おそらく、最新の記事タイトル、コンテンツ、投稿日時、サイト名…などが含まれていればいいはず。
ちょっとまて。それって ブログの RSS じゃね?(゚∀゚)キタコレ!!
そうか。じゃぁブログの RSS を ping サーバーちゃんに送りつければいい感じで処理してくれるよねきっと。(゚∀゚)キタコレ!!(2回目
ってことで早速…
[4to-pics@localhost tools]$ curl -X 'POST' -H 'Content-Type: text/xml; charset=utf-8' -d "`curl http://4to.pics/article/rss/`" http://blog.with2.net/ping.php/xxxx/xxxxx
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 54378 0 54378 0 0 376k 0 --:--:-- --:--:-- --:--:-- 624k
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>flerror</name>
<value>
<boolean>0</boolean>
</value>
</member>
<member>
<name>message</name>
<value>Thanks for the ping</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
ワンライナーなのでちょっとだけ補足します。
まず、 -d の中身ですが、こちらは POST する中身を取得しています。RSS フィード(xml)を -d に入力したかったので、 curl で僕のサイトの rss フィードの URL を叩いて xml を取得しています。これで、 ブログランキングの ping 送信先 URL に最新の RSS を送信できます。
あとはまぁ、ヘッダに xml 形式ですよって伝えたり、文字コードを utf-8 にしたりしています。
flerror があるのがちょっと気になりますが、 value が 0 になっていること、メッセージに Thanks for the ping とあることから、無事に処理されたのだと思われます。
おそらく、何かしらのエラーがあったら、 flerror が違う値を返すのではないかと。
参考: Fumy RSS & Atom Maker
ping_blog.sh
#!/bin/sh
# ping 送信先 URL
PING_URL='http://blog.with2.net/ping.php/xxxx/xxxxx'
# RSS Feed の URL
FEED_URL='http://4to.pics/article/rss/'
curl -X 'POST' -H 'Content-Type: text/xml; charset=utf-8' -d "`curl $FEED_URL`" $PING_URL
以上、ランキングサイトにコマンドで ping を送信する方法でした!
mac に pip をインストールする
mac は標準で python が入っていますが、パッケージ管理の pip がインストールされていないので入れてみました。
2017/05/26 09:00
[GAS] Google Drive の特定フォルダ配下のフォルダ・ファイルの権限を一括で移譲する
Google Drive の特定フォルダ配下のファイル・フォルダの権限を一括で移譲するツールを Google Apps Script で作りました。
2018/11/10 15:54
[Windows] Ophcrack を使ってユーザーパスワードを解析する方法
家族で使っていた Windows7 のログインパスワードを忘れたため、Ophcrack を使って解析したときの記録です。
2017/09/30 21:00
[shell] フォルダ内にある大量の ZIP ファイルをまとめて解凍する
とある ZIP を解凍すると中に大量の ZIP が居たときに幸せになれるコマンドを紹介します
2018/06/19 23:45
[MySQL] データファイルから DB を復元する
先日 MySQL が再起動できなくなる問題が発生し、急遽データファイル(.frm, .ibd)から復元しました
2018/11/25 12:44