ブログのリンクを作るスクリプトをPythonista3に対応させてみました
こないだ作ったブログのリンクを一気に作ってくれるスクリプトは旧Pythonista用のスクリプトだったので、実行するときにいちいち互換ボタンを押さないといけませんでした。それが面倒臭いと正直思っていたので、今回はPythonista3にスクリプトを対応させることにしました。
- 参考記事
- 20.2. html.parser— HTML および XHTML のシンプルなパーサー — Python 3.5.1 ドキュメント
- Python入門 - パッケージとモジュール
- Python3で、urllibとBeautifulSoupを使ってWebページを読み込む - minus9d's diary
- PythonでHTML解析 | OpenBook
- python - Python3 Error: TypeError: Can't convert 'bytes' object to str implicitly - Stack Overflow
- HTMLParserを使ってページのタイトルを取得 - おし、プログラミング
ファイルの全容は以下。
# coding: utf-8 from __future__ import absolute_import import clipboard import codecs import console from html.parser import HTMLParser import urllib class GetTitle(HTMLParser): def __init__(self): HTMLParser.__init__(self) self.title_flag = False def handle_starttag(self, tag, attrs): if tag == 'title': self.title_flag = True def handle_data(self, data): if self.title_flag: self.title = data self.title_flag = False def loadTitle(url): resp = [] #take care reset position response = urllib.request.urlopen(url) gt = GetTitle() gt.feed(response.read().decode('utf-8')) gt.close() resp.append(url) resp.append(gt.title) return resp def createLink(url): mylink = loadTitle(url) mytext = '<a href="' + mylink[0] + '" target="_blank">' + mylink[1] + '</a>' return mytext def makeList(): text = '' with codecs.open('LinkStack.txt', 'r', 'utf-8') as f: for line in f: text += '\t' + '<li>' + createLink(line[:-1]) + '</li>' + '\n' text = "<ul class='sankou'>\n\t<li>参考記事</li>\n" + text + '</ul>' return text def makeLink(): text = '' with codecs.open('LinkStack.txt', 'r', 'utf-8') as f: for line in f: text += createLink(line[:-1]) + '\n' return text def clipLink(TEXTLINK): clipboard.set(TEXTLINK) console.alert('Link Created!', '', 'OK', hide_cancel_button=True) with codecs.open('LinkStack.txt', 'w', 'utf-8') as f: f.write('') if __name__ == '__main__': url = 'https://garretcafe.com' clipLink(makeLink())
上記をコピーしてbloglineという名前で保存してください。
このまえ作ったClipLinkと互換があるので、これだけあれば大丈夫です。
つぶやき
2to3というスクリプトで簡単にPython2系から3系へ移行を自動で行ってくれるのですが、なぜかHTMLをパースする部分が動きませんでした。なんかモジュールが見つかりませんやらの呪文が出ていた。
そこで、せっかくPythonista3からできるようになったデフォルトのモジュールが入っているフォルダを覗いてみると、どうやらちょっと名前とかが変わっていたようです。
なので、そこらへんを修正して、面倒臭いので一つのファイルにまとめてみました。
ちょっと雑な仕上げで本当に申し訳ないですけど、動くので勘弁してください。
はてなブログとかで動かないサイトがちらほらあるので、そこらへんはおいおい修正していきましょう。