メインコンテンツに移動
mattz.xii.jp

Main navigation

  • Home
User account menu
  • ログイン

2ちゃんねるログビューアを作成する(3)

By mattz, 2008/05/22

「㌧」のことは置いといて、(1)と(2)を組み合わせてみた。細かいことは後から考えよう。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
2ちゃんねるログを読み込んで整形してhtmlとして出力する
'''
import re
import sys
import codecs
def parseRes( res, n ):
        ar = re.split( '<>', res )
        num = str(n)
        ret = '<dt id=\'dt' + num + '\'>' + num + u': 名前:<span class="name">'
        if ar[1]:
                ret += '<a href="mailto:' + ar[1] + '">'
        ret += ar[0]
        if ar[1]:
                ret += '</a>'
        ret += '</span> ' + ar[2]
        ret += '</dt>\n<dd id=\'dd' + num + '\'>'
        ret += ar[3] + '</dd>\n'
        return ret

print 'Content-Type: text/html;charset;Shift_JIS'
print
print '''
<html>
<head><title>prototype</title>
<meta http-equiv="Content-Type" content='text/html; charset="Shift_JIS"' />
</head>
<body>
<dl>
'''
fout = codecs.getwriter('shift_jis')(sys.stdout)
log = codecs.open('1111198050.dat', 'r', 'shift_jis', 'ignore' )
res = 1;
for line in log:
        fout.write( parseRes( line, res ) )
        res += 1

print '

タグ

  • Python

2ちゃんねるログビューアを作成する(2)

By mattz, 2008/05/22

今日は先に書いたコードから。「Pythonで日本語を使う」を参考に、Shift_JISで保存されている.datファイルを読み込んで、そのまま標準出力に出す。つもりだった。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Shift_JISのファイルを読み込んで出力する。
'''
import sys
import codecs
fout = codecs.getwriter('shift_jis')(sys.stdout)
log = codecs.open('1111198050.dat', 'r', 'shift_jis') # 実際にはフルパス
for line in log:
        fout.write( line )

とりあえず、コンソールから実行してみたところ、途中までは問題なく出力されるのだが、ある行を処理するところで、エラーメッセージ。が出て中断 してしまう。

UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position 158-159: illegal multibyte sequence

引っかかっている文字は「㌧」。この手の文字は2ちゃんねるでは頻繁に使われるしなぁ。どうしたらいいんだろ?とりあずここ読んで勉強するわ。

追記

codecs.open()のところで、'ignore'オプションをつけてやれば、ファイルの最後までは処理されるようにはなった。けど、解決にはなってない。なってはいないけどここまでの経過として修正版

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Shift_JISのファイルを読み込んで出力する。
'''
import sys
import codecs
fout = codecs.getwriter('shift_jis')(sys.stdout)
log = codecs.open('1111198050.dat', 'r', 'shift_jis', 'ignore' )
print 'Content-Type: text/plain;charset;shift_jis'
print
for line in log:
        fout.write( line )

→実行結果がかつてはリンクされていました。

タグ

  • Python

2ちゃんねるログビューアを作成する(1)

By mattz, 2008/05/21

とりあえずの目標である、CHPログビューアの移植に向けての第一歩。

まずは1行分のログをparseして整形して返す関数を作ってみる。

  • とりあえず文字コードのことは忘れるために全部asciiにしてしまえ。
  • jsでレスポップアップとか入れるためにも、各要素にidだけは振っておく。とはいいながらもその辺の処理は後回しだ。pythonでの正規表現の使い方とかさっぱり分からんし(splitだけは使ったが)。

今日学んだこと。

  1. 関数は先に定義するもののようだ。
  2. 文字列の連結は"+"。
  3. int型の変数はいきなり連結は出来ないみたいだ。まぁ、いずれsprintfに相当するものが出てくるだろうから、コレについてはほっとく。
  4. 今日書いたコード。
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    '''
    2ちゃんねるログ形式の1行をparseして整形する。
    '''
    import re
    def parseRes( res, n ):
            ar = re.split( '<>', res )
            num = str(n)
            ret = '<dt id=\'dt' + num + '\'>' + num + ': 名前:<span class="name">'
            if ar[1]:
                    ret += '<a href="mailto:' + ar[1] + '">'
            ret += ar[0]
            if ar[1]:
                    ret += '</a>'
            ret += '</span> ' + ar[2]
            ret += '</dt>\n<dd id=\'dd' + num + '\'>'
            ret += ar[3] + '</dd>\n'
            return ret
    
    print 'Content-Type: text/html;charset;utf-8'
    print
    res1 = 'name<>sage<>05/03/19 11:07:30 ID:???<> body1 <>thread title'
    res2 = 'no name<>sage<>05/03/19 11:15:37 ID:???<> <a href="../test/read.cgi/board/0000000000/1"'
    res2 += ' target="_blank">&gt;&gt;1</a> <br> body 2 <>'
    
    print parseRes( res1, 1 )
    print parseRes( res2, 2 )
    

    実行結果がかつてはリンクされていました。

次はテキストファイルを読み込む辺り。の前にShift_JIS問題を何とかしよう。後ではまるかもしれないし。

タグ

  • Python

pythonに挑戦してみる

By mattz, 2008/05/21

以前からやってみたいとは思っていたのだが、なかなかまともに動く環境がなくやらないままにしていたpythonに挑戦してみる。

とりあえずの目標は、CHPログビューアの移植と、某所で運営している連絡用の掲示板の移植である。

お勉強用のドメイン→http://w-mattz.xii.jp/は今はもうありません。

今日学んだこと。

  1. さくらインターネットでは「AddHandler cgi-script .py」とか書いてあげないといけないらしい。最初はソースがべろんと表示されてたけどここに.htaccess作ったって書いてあったから真似したら動いた。
  2. 今日書いたコード。コピペだけどね。
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    '''
    環境変数を表示。
    '''
    import cgi
    print 'Content-Type: text/html'
    print
    cgi.print_environ()
    

    実行結果がかつてはリンクされていました。

  3. 当面のお手本。↑のコードもここから頂いた。

タグ

  • Python

build 10005来ました

By mattz, 2008/05/21

Stability is this week's word

国際版インストーラの不具合は直ってるらしいです。僕はClassicでいれようと思ってますが。その他にも9981からの修正は色々。詳しくは記事参照のこと。

インストールしてみた。

なんだこれ?描画が早いぞ。

追記(2008-05-21)

M2(Opera Mail)を使っている環境だからなのかProxy環境だからなのかは知らないが、やたらと引っかかる。説明しづらいけど、コン マ何秒単位で固まる感じ。メモリ使用量も100MB超えてるなぁ。すごく微妙。

タグ

  • Opera

MT4を設置してみた

By mattz, 2008/05/20

ブログタイトルは、はてなダイアリが「ま゜」だったから「ま゜゜」。インクリメントした(のか?)。

タグ

  • ブログ
  • Movable Type

サーバ借りてみた

By mattz, 2008/05/20

さくらインターネットのスタンダード。とりあえずMT4設置してみる。デザインなんかは最初からついてたデザインセットから選んだ。多分いじることないと思う。

追記

めんどくさいからいじるつもりなかったんだけど、940px以上の横幅を要求するというのがどうにも耐えられない。どうにかする。

タグ

  • さくらインターネット
  • 雑記

ページ送り

  • 先頭ページ
  • 前ページ
  • …
  • Page 41
  • Page 42
  • Page 43
  • Page 44
  • Page 45
  • Page 46
  • Page 47
  • Page 48
  • カレントページ 49

最近のエントリー

  • 俺は野球殿堂博物館を甘く見ていた
  • 2022シーズン セ・パ12球団の総移動距離
  • Drupalを9にあげてみました
  • 2021シーズン セ・パ12球団の総移動距離
  • 登場曲
  • 2020シーズンのセ・パ12球団の総移動距離を調べてみた
  • vagrant + VirtualBoxで構築した仮想ホスト(Cent OS)の.sshフォルダの権限をうっかり変えてしまってvagrant sshできなくなっちゃった時の話
  • STVの呪い
  • 松田 vs 十亀シミュレーター
  • ○●○●○●○●○●○●○

タグ

ゲーム仲里依紗キーボード猫bookmarkletGoogle+フロマンガJavaScriptたむらぱんCDやきう24のひとみ結界師FreeBSDMovable TypephpUIPythonファイターズ塊魂Line Rider村枝賢一お出かけニュースvagrant二ノ宮知子三国志twicli風来のシレンながいけんIE6spam田中圭一perl正規表現linux皆川亮二サナギさん音楽施川ユウキ安全地帯Togetter吉田戦車DVD島本和彦grepCPANFONCSSのだめカンタービレDragonflyブログケータイLDRゼブラクイーンはてな河合克敏レジストリHALCALI空耳武帝紀内田春菊web井浦秀夫FirefoxTwitterカルネージハート私たちは繁殖しているオウガPEACE MAKERウルフガイ雑記マンガ燃えるVpipes北方謙三小説ExcelUserCSSPSP2ちゃんねるiOSWindowsOAuthイベント神聖モテモテ王国日本語Michael Jackson甲斐谷忍卓球石塚真一弁護士のくずER倉島圭Chromeさくらインターネット森のテグー12月生まれの少年ONE OUTSおもちゃ仮面ライダーSPIRITS本岳お知らせ安倍夜郎hide国民クイズ野球OperaいきものがかりDrupalアプリ映画翻訳木村カエラsaku sakuシャーロック・ホームズメール田辺イエロウGoogle水滸伝増田Yahoo小池一夫ブラウザ写真集セキュリティスポーツ琉神マブヤーUserJS平井和正ツモっ子どうぶつの森上ってなンボ!!ADAMAS検索プログラミング言語Tap Defense杉元伶一ボルダリング時をかける少女コンビニとめはねっ!加藤伸吉NPB男女ライブIME
mattz.xii.jp