URLのリストからリンク集を作る

理由はどうでもいいんだけど、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>

なんか余計な改行が入ってるけど、まあいいか。