trackbackcheck.py トラックバックして来た記事にこちらへのリンクがあるかどうか調べる
Python スクリプト。
u'''trackbackcheck.py
ココログの記事へのトラックバック一覧を取得し、その記事
(あるいはトップページ)へのリンクの有無を表示する。
''' import xmlrpclib
import time
import datetime
import calendar
import urllib
import htmllib
import formatter
import account #以下の形式のモジュールを作って同一フォルダに置く ### account.py
##URL = 'http://tuchinoko.moe-nifty.com/oboegaki/' # あなたのココログ URL
##ACCOUNT = 'hoge' # ココログアカウント
##PASSWORD = '????????' # パスワード
__author__ = 'kadotanimitsuru' __date__ = '2005-06-19' __license__ = 'public domain' __version__ = '1.0.0' _MAXTITLES = 0 # 取得する記事の最大数。0 だと限界無し(?) class _MovableType(object):
u'''
Movable Type XML-RPC API を仮想化する
参考:Movable Typeユーザー・マニュアル: プログラミングインターフェイス
http://www.movabletype.jp/manual/mtmanual_programmatic.html
''' def __init__(self, url, account, password):
self.URL = url
self.ACCOUNT = account
self.PASSWORD = password
self.server = xmlrpclib.ServerProxy(self.entrypoint)
for i in self.server.blogger.getUsersBlogs("", account, password):
if i['url'] == url:
self.blogid = i['blogid']
self.blogName = unicode(i['blogName'])
break else:
raise '%s not found.' % url
self._dounload_posts()
def _dounload_posts(self):
u = self.server.blogger.getUserInfo('', self.ACCOUNT, self.PASSWORD)
self.nickname = unicode(u['nickname'])
print self.nickname, "'s blog:", self.blogName
posts = self.server.metaWeblog.getRecentPosts(
self.blogid, self.ACCOUNT, self.PASSWORD, _MAXTITLES)
print '%d posts.' % len(posts)
self.posts = []
for post in posts:
pings = self.server.mt.getTrackbackPings(post['postid'])
if pings:
for i in pings:
pingurl = i['pingURL']
a = get_anchorlist(pingurl)
if post['link'] in a or self.URL in a:
i['link'] = True print 'o',
else:
i['link'] = False print 'x',
post['trackbackPings'] = pings
self.posts.append(post)
else:
print '.',
print '' class Cocolog(_MovableType):
u'''
ココログに固有の設定を切り出すクラス。
ここを変えれば MovableType(TypePad)全般でイケるかも。
''' UTC_OFFSET = datetime.timedelta(hours=9) # UTC との時差 # ココログのように内部が UTC で表記が日本時間の場合に必要。
# どちらもローカルタイムで統一されている場合は 0 で良いはず。
def __init__(self, url, account, password):
self.entrypoint = 'http://app.cocolog-nifty.com/t/api' # ココログのエントリーポイント。blog に応じて書き換えるべし。
_MovableType.__init__(self, url, account, password) def getdate(self, post):
u'''
-> time.localtime
'YYYY-MM-DDThh:mm:ssZ' である日時フォーマット専用。
ココログ以外の違う形式の日付の blog なら書き換える事。
''' return time.localtime(calendar.timegm(
time.strptime(str(post['dateCreated']).rstrip('Z')+'UTC',
'%Y-%m-%dT%H:%M:%S%Z')))
def get_anchorlist(url):
u'''
HTML 内にある a 要素の href 属性を取得しリストにして返す
''' p = htmllib.HTMLParser(formatter.NullFormatter()) try:
p.feed(urllib.urlopen(url).read())
except Exception, e:
print e
a = []
else:
a = p.anchorlist
return a
if __name__=='__main__':
account, password, url = account.ACCOUNT, account.PASSWORD, account.URL
print url
c = Cocolog(url, account, password)
for post in c.posts:
print '%04d-%02d-%02d %02d:%02d:%02d %s' % (
c.getdate(post)[:6]+(unicode(post['title']),))
print post['link']
for i in post['trackbackPings']:
if i['link']:
print u'o\t%s' % unicode(i['pingTitle'])
else:
print u'x\t%s' % unicode(i['pingTitle'])
print '\t%s' % i['pingURL']
# 好きに流用してください。
昔のスクリプトから使いまわしているので投稿一覧を取得するだけのためにわざわざクラスを作る大げさな代物になってしまっています。流用する時は適当に端折った方がいいでしょう。
« エラー メッセージ "Generic Host Process" が表示されるという問題が修正されます。 | トップページ | 覇 信長記 8 燃ゆる信長:羅門 祐人, 中岡 潤一郎 »
「ウェブログ・ココログ関連」カテゴリの記事
- ココログオリジナルテーマにココロちゃんが無い!(2010.05.28)
- はてなしてます(2008.11.02)
- ココロのパンの缶詰(2008.08.10)
- こういうときに限って驚くほど初音ミク オリジナルが生きてくるものなのだ。(2008.01.21)
- ブログ妖精と VOCALOID とオプション(2008.01.06)
「Python」カテゴリの記事
- from __future__ import hatsune(2008.09.15)
- Pygame1.8.1出たよ!(2008.08.02)
- それは kokoro.py と言うプログラム(2008.04.27)
- smf2txt.py ‐ SMF をテキストに(2008.04.09)
- 2007年下半期ライトノベルサイト杯結果と、同じのに投票した方々(2008.01.28)
« エラー メッセージ "Generic Host Process" が表示されるという問題が修正されます。 | トップページ | 覇 信長記 8 燃ゆる信長:羅門 祐人, 中岡 潤一郎 »