開発したアプリなど一覧

IRC上に流れてきたURLのタイトルを返す関数

記事内にアフィリエイトリンクを含む場合があります

IRC使ってるときにちょくちょくURLを貼り付ける事があるのだけど、URLだけ張られて中身何かわからん!ということが結構あるので bot に機能を追加した。
IRC上で誰かが URL を発言したらそのページを習得して title タグの中身を返す関数です。
こんな書き方で良いのかな。そういえば他人書いたPythonのコードってあんまり見たことないのでどんどん読んでいきたいところ。

文字コードを判別する部分はコメントのURLにあった関数をそのまま使わせてもらった。

# http://www.freia.jp/taka/blog/571 def guess_charset(data): f = lambda d, enc: d.decode(enc) and enc try: return f(data, 'utf-8') except: pass try: return f(data, 'shift-jis') except: pass try: return f(data, 'euc-jp') except: pass try: return f(data, 'iso2022-jp') except: pass return None

def gethttptitle(msg): import urllib2 import re m = re.search('(http://[a-z0-9_/\.\-\?\!@%#]*)', msg, re.I) if msg.find(' PRIVMSG ') > 0 and m: try: r = urllib2.urlopen(m.group(0)) if r.msg == 'OK': p = re.compile('(\r|\n)') t = re.search('<title>(.*?)</title>', p.sub('', r.read()), re.I) if t: encode = guess_charset(t.group(1)) title = t.group(1).decode(encode) irc.notice(channel, title) except urllib2.HTTPError, e: irc.notice(channel, '%s:%s' % (e.code, e.msg)) except urllib2.URLError, e: irc.notice(channel, '%s' % (e.code)) except: pass

Sponsored Link

コメント

タイトルとURLをコピーしました