Archive

TwitterBotにGoo.glの短縮URLを追加

No Comments

先日作成していたTwitterBotにGoo.glの短縮URLを追加した。

結局、先のエントリーの「BSDあれこれ」さんのものは全く使わず、シンプルな方法を選択。

シンプルな方法とはOAuthは使わず、JSON形式でLWP::UserAgentを使ってPOSTする方法である。

割とあっさりできた。

次回、起動するBotからリンク情報が埋まるはずである。

もし、リンク先にミスがあった場合には連絡してもらえると嬉しい限りだ。

ところで、さらにネットで調べたところ、CodeZineにPerlモジュールもPHP用のラッパーもあると記載されていた。
それを使えばよかったかな、と思うが、まぁ大したことではないので、よしとしよう。

Goo.glを今度はPerlで

No Comments

先日、PHPでGoo.glの短縮URL生成をやってみたが、今度はPerlでやってみようかと思う。

とはいいつつも、おそらくどなたかが実践されていると思うので先にググってみた。

やっぱりいらっしゃいますね。

BSDあれこれ」さんのところの「Googleの短縮URL goo.gl APIが公開されたのでperlで試す」というエントリー。

CGIそのものは利用するつもりはないけれども、ソースを流れでみたいのでダウンロードさせて頂きました。(感謝)

これからソースを読もうかな、と。

Wikipedia dumpをGeekWindのMySQLに投入

1 Comment

Wikipediaのdumpページが復活していたので、やっとGeekWindのMySQLに投入することができる。

ということで、何はさておき、dumpデータのダウンロードである。

# wget http://download.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2

2010-12-16 19:26:32 (2.72 MB/s) - `jawiki-latest-pages-articles.xml.bz2' へ保存 完了 [1276709513/126709513]
dumpデータをSQL文に変換するため、xml2sqlのコマンドを入手する。
# wget http://ftp.tietew.jp/pub/wikipedia/xml2sql-0.5.tar.gz

2010-12-16 19:30:59 (1.19 MB/s) - `xml2sql-0.5.tar.gz' へ保存完了 [131149/131149]

# gzip -dc xml2sql-0.5.tar.gz | tar xvf -
# ./configure
・・・・
configure: error: expat 1.95.8 or later is required.
configureでエラーがでたので必要と思われるコマンドをインストールする。
# yum install expat
・・・・・・・
Nothing to do  ←インストール済だった、そりゃそうだ、バージョンが古いって言われてるし
# yum search expat
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: ftp.nara.wide.ad.jp
* atomic: www2.atomicorp.com
* base: ftp.nara.wide.ad.jp
* epel: ftp.kddilabs.jp
* extras: ftp.nara.wide.ad.jp
* updates: ftp.nara.wide.ad.jp
================================ Matched: expat ================================
PyXML.x86_64 : XML libraries for python.
expat.i386 : A library for parsing XML.
expat.x86_64 : A library for parsing XML.
expat-devel.i386 : Libraries and include files to develop XML applications with
: expat.
expat-devel.x86_64 : Libraries and include files to develop XML applications
: with expat.
lua-expat.x86_64 : SAX XML parser based on the Expat library
mingw32-expat.noarch : MinGW Windows port of expat XML parser library
perl-XML-Parser.x86_64 : A low level Perl module for parsing XML either via
: trees or streaming
php-pear-XML-Beautifier.noarch : Class to format XML documents
php-pear-XML-Parser.noarch : XML parsing class based on PHP's bundled expat
tcldom-expat.x86_64 : The Tcl dom parser built with the expat xml parser
tclxml.x86_64 : TclXML is a package that provides XML parsing for the Tcl
: scripting language
tclxml-devel.i386 : Development files for the tclxml packages
tclxml-devel.x86_64 : Development files for the tclxml packages
tclxml-expat.x86_64 : The Tcl xml parser built with the expat xml parser

# yum install expat-devel
Installed:

expat-devel.i386 0:1.95.8-8.3.el5_5.3 expat-devel.x86_64 0:1.95.8-8.3.el5_5.3

Complete!

mediawiki-1.16.0.tar.gz がリリースされているけれども、あえて旧バージョンを利用する。
mediawikiの中にWikipediaのテーブル群を作成するSQL文があるので、それを入手する必要がある。

ついでにPerlモジュールのXML::Parserもインストールしておく。

# wget http://download.wikimedia.org/mediawiki/1.15/mediawiki-1.15.5.tar.gz
# gzip -dc mediawiki-1.15.5.tar.gz | tar xvf -

# yum install perl-XML-Parser

Installed:
perl-XML-Parser.x86_64 0:2.34-6.1.2.2.1

Dependency Installed:
perl-Compress-Zlib.x86_64 0:1.42-1.fc6  perl-HTML-Parser.x86_64 0:3.55-1.fc6
perl-HTML-Tagset.noarch 0:3.10-2.1.1    perl-libwww-perl.noarch 0:5.805-1.1.1

Complete!
ここからMySQL側の設定である。

# mysql -u hogeuser -p
Enter password:
mysql> create database wiki;
Query OK, 1 row affected (0.00 sec)

mysql> \q

# mysql -u hogeuser wiki -p < maintenance/tables.sql
Enter password:
mysql> show tables;
+-------------------+
| Tables_in_wiki    |
+-------------------+
| archive           |
| category          |
| categorylinks     |
| change_tag        |
| externallinks     |
| filearchive       |
| hitcounter        |
| image             |
| imagelinks        |
| interwiki         |
| ipblocks          |
| job               |
| langlinks         |
| logging           |
| math              |
| objectcache       |
| oldimage          |
| page              |
| page_props        |
| page_restrictions |
| pagelinks         |
| protected_titles  |
| querycache        |
| querycache_info   |
| querycachetwo     |
| recentchanges     |
| redirect          |
| revision          |
| searchindex       |
| site_stats        |
| tag_summary       |
| templatelinks     |
| text              |
| trackbacks        |
| transcache        |
| updatelog         |
| user              |
| user_groups       |
| user_newtalk      |
| valid_tag         |
| watchlist         |
+-------------------+
41 rows in set (0.00 sec)
ということで、disk容量をみながら投入開始。
# ls -al jawiki-latest-pages-articles.xml.bz2
-rw-r--r-- 1 root root 1276709513 12月 16 19:26 jawiki-latest-pages-articles.xml.bz2
# df .
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/hda2             18222732   4076876  13205252  24% /
# bzip2 -d jawiki-latest-pages-articles.xml.bz2
# ls -al jawiki-latest-pages-articles.xml
-rw-r--r--  1 root root 5262056381 Dec 16 19:26 jawiki-latest-pages-articles.xml
# df .
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda2             18222732   7972624   9309504  47% /
# cat jawiki-latest-pages-articles.xml | sed -e 's/<redirect \/>//' | xml2sql

-rw-r--r--  1 root root      123392617 12月 16 22:27 page.txt
-rw-r--r--  1 root root      149486402 12月 16 22:27 revision.txt
-rw-r--r--  1 root root     4693222350 12月 16 22:27 text.txt

# df -k
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/hda2             18222732  12827100   4455028  75% /

# mysqlimport --fields-terminated-by='\t' --default-character-set=utf8 -u hogeuser -p -d -L wiki text.txt
Enter password:
wiki.text: Records: 1406910  Deleted: 0  Skipped: 0  Warnings: 0
# mysqlimport --fields-terminated-by='\t' --default-character-set=utf8 -u hogeuser -p -d -L wiki revision.txt
Enter password:
wiki.revision: Records: 1406910  Deleted: 0  Skipped: 0  Warnings: 2816446
# mysqlimport --fields-terminated-by='\t' --default-character-set=utf8 -u hogeuser -p -d -L wiki page.txt
Enter password:
wiki.page: Records: 1406910  Deleted: 0  Skipped: 0  Warnings: 0
disk容量の投入直後と不要ファイル削除後の容量の差異はこんな感じ。
# 投入直後
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/hda2             18222732  13825992   3456136  81% /
# 不要ファイル削除後
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda2             18222732   7801192   9480936  46% /
試しにselectしてみる。
mysql -u hogeuser wiki -p
mysql> select page_id, page_title from page where 1 limit 10,10;
+---------+--------------------+
| page_id | page_title         |
+---------+--------------------+
|      26 | SandBox            |
|      31 | パリ               |
|      32 | ヨーロッパ         |
|      42 | 生物               |
|      43 | コケ植物           |
|      46 | HomePage           |
|      47 | 社会学             |
|      48 | 古代エジプト       |
|      49 | エジプト           |
|      51 | About              |
+---------+--------------------+
10 rows in set (0.00 sec)
おお!データが入った!!

ということで、今回はここまで。

今度はPHPでTwitterBotを作ってみた

No Comments

先日、PerlでTwitterに投稿するBotを作ったが、今度はPHPで作ってみた。

ただ、すでにアプリ登録しているものだと何なので、もう1つテスト用のConsumer keyとConsumer secretを発行。
もちろん、アクセス用のTokenも同時に発行した。

それでテスト投稿もしてみた。
きちんと投稿できたので満足。

ところでPHPでのTwitterBotの作成にあたり、PEARのパッケージをいくつかインストールした。
インストールの前に、PEARのアップグレードも行った。

# pear upgrade PEAR
# pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.7   stable
Console_Getopt   1.2.3   stable
PEAR             1.9.1   stable
Structures_Graph 1.0.4   stable
XML_RPC          1.5.1   stable
XML_Util         1.2.1   stable
# pear install Net_URL
# pear install Net_URL2-beta
# pear install http_request
# pear install http_request2-0.5.2
# pear install HTTP_OAuth-0.2.2
# pear install Services_Twitter-beta
最終的にこんな感じのパッケージだけで投稿できるようになった。
# pear list
Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.7   stable
Console_Getopt   1.2.3   stable
HTTP_OAuth       0.2.2   alpha
HTTP_Request     1.4.4   stable
HTTP_Request2    0.5.2   alpha
Net_Socket       1.0.10  stable
Net_URL          1.0.15  stable
Net_URL2         0.3.1   beta
PEAR             1.9.1   stable
Services_Twitter 0.6.3   beta
Structures_Graph 1.0.4   stable
XML_RPC          1.5.1   stable
XML_Util         1.2.1   stable

Twitter Botがやっとできた

1 Comment

先日、TwitterのBotを作ってみようかな、ということでPerlモジュールのNet::Twitterモジュールをインストールしたけれども、モジュールが足らない!というエラーが頻発。

なんやねん!ということで、チマチマとインストールした。

最終的に問題なくなったと思い、サンプルプログラムを実行するも全然ツイートできない。
うーん原因がわからない、ということでperldoc Net::Twitterでマニュアルを読む。

http_messageでHTTPのメッセージが参照できることを確認できたので、サンプルプログラムに追記。

すると、

Protocol scheme 'https' is not supported (Crypt::SSLeay not installed)

というメッセージ。
なんだ、まだモジュールが足らなかったのか、ということで、Crypt::SSLeayモジュールをインストールして実行。

ついに、ツイートができたのであった。



Blue Taste Theme created by Jabox