Index > Jythonを使ったサイトマップインデックスファイルの作成
Mon, September 8, 2008

Jythonを使ったサイトマップインデックスファイルの作成

いままではひとつのディレクトリだけを使ってこのサイト(osima.jp)を作成してきたが、 複数のディレクトリを使ったサイトに作り替えたため、sitemap.xml を各ディレクトリに配置し、 それらへのリンクをルートディレクトリにある sitemap.xml でまとめる方法にした。

そのルートに配置するsitemap.xml を生成するjythonコードを書いたので、ここにメモ。
対象とするサブディレクトリの数が少ないので手動で作成してしても手間は知れているのだが、 日付の記述を毎回書き直すのが結構面倒だな、と思いコード化。

コード sitemapmaker.py

import sys
import java.io as io
import java.lang as lang
import java.util as util
import java.text as text

ENC="UTF-8"


pat = "yyyy-MM-dd";
df=text.SimpleDateFormat(pat)
TODAY=df.format(util.Calendar.getInstance().getTime())



BASEURL="http://osima.jp"


def toUrl( targetDir ):
    return BASEURL+"/"+targetDir+"/sitemap.xml.gz"


targetDirList=util.ArrayList()
len=len(sys.argv)
for i in range(len-1):
    targetDirList.add(sys.argv[i+1])

fos=io.FileOutputStream("sitemap.xml")
pw=io.PrintWriter( io.OutputStreamWriter(fos,ENC) )

pw.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
pw.println("<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">")

for targetDir in targetDirList:
    toUrl(targetDir)

    pw.println("\t<sitemap>")
    pw.println("\t\t<loc>"+toUrl(targetDir)+"</loc>")
    pw.println("\t\t<lastmod>"+TODAY+"</lastmod>")
    pw.println("\t</sitemap>")

pw.println("</sitemapindex>")

pw.close()
fos.close()

実行

$ jython sitemapmaker.py blog mynotebook

結果

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <sitemap>
        <loc>http://osima.jp/blog/sitemap.xml.gz</loc>
        <lastmod>2008-09-08</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://osima.jp/mynotebook/sitemap.xml.gz</loc>
        <lastmod>2008-09-08</lastmod>
    </sitemap>
</sitemapindex>
 Twitter
follow me on Twitter
 Categories