理由はどうでもいいんだけど、URLが大量に書かれたファイルがあって、そのひとつひとつをブラウザでチェックすることになった。で、ひとつずつコピペするのなんてかったるくってやってられないわけで、Pythonでスクリプトを書いてみた。
URLのリストはたとえばこんな感じ(実際はもっといっぱいある)。
^o^ > type url.txt https://www.ruby-lang.org/ja/ http://www.python.jp/ http://www.perl.org/ http://www.haskell.org/ http://ocaml.jp/
スクリプトはこんなの。htmlを作るテンプレートエンジンには、Jinja2を使った。
import sys from jinja2 import Environment, DictLoader templates = {'index.html': """ <ul> <li style="list-style-type: none;"> <ul>{% for url in urls %}</ul> </li> </ul> <ul> <li style="list-style-type: none;"> <ul> <li><a href="{{ url }}">{{ url }}</a></li> </ul> </li> </ul> {% endfor %} """ } filename = sys.argv[1] f = open(filename, 'r') urls = [] for line in f: urls.append(line.rstrip('\n')) f.close env = Environment(loader=DictLoader(templates)) tmpl = env.get_template('index.html') html = tmpl.render(urls=urls) print html
Jinja2の使い方はここらへんを参考にした。
cf. Jinja2 利用ノート
cf. http://jinja.pocoo.org/docs/api/#loaders
上のサイトでは、テンプレートローダーにFileSystemLoaderを使って説明されているけど、今回はいくつものテンプレートを使うわけではないし、テンプレート自体も簡単なものなので、DictLoaderを使っている。
スクリプトはこんな風に使う。
^o^ > python genlinks.py url.txt > index.html
できた index.html がこれ。
<html> <body> <ul> <li><a href="https://www.ruby-lang.org/ja/">https://www.ruby-lang.org/ja/</a></li> <li><a href="http://www.python.jp/">http://www.python.jp/</a></li> <li><a href="http://www.perl.org/">http://www.perl.org/</a></li> <li><a href="http://www.haskell.org/">http://www.haskell.org/</a></li> <li><a href="http://ocaml.jp/">http://ocaml.jp/</a></li> </ul> </body> </html>
なんか余計な改行が入ってるけど、まあいいか。