投稿

ラベル(Perl)が付いた投稿を表示しています

今日のプログラム

・ PerlでTinyURLを使う - smokeymonkey@ついったー部 ・ @LastFmRank:機能拡張:Replyでアーティスト名を投稿されると一番再生されているトラック情報を返す機能搭載 - smokeymonkey@ついったー部 (Update) ・ @Dabesa機能拡張:Replyに連想される言葉を応答する - smokeymonkey@ついったー部

@LastFmRank:機能拡張:Replyでアーティスト名を投稿されると一番再生されているトラック情報を返す機能搭載

@LastFmRank:機能拡張:Replyでアーティスト名を投稿されると一番再生されているトラック情報を返す機能搭載 - smokeymonkey@ついったー部 - はてなグループ::ついったー部 「@LastFmRank アーティスト名」の形式で投稿すると、そのアーティストの一番再生されているトラック名と再生回数を返します。cronにて5分毎に動作します。 ただし、日本語アーティスト名には対応できていません。日本語アーティスト名をURLエンコードしたのですが取得できず...どうもAPI自体が日本語アーティスト名に対応していないように見えます。時間があるときに少し調査してみますが、現時点ではここまで。 今日は一日このスクリプトばかり書いてました。一日がかりかかる辺りが僕の未熟さです。今後も精進します。

自分の全FollowingをLast Update日付毎にソートするPerl Script

自分の全FollowingをLast Update日付毎にソートするPerl Script - smokeymonkey@ついったー部 - はてなグループ::ついったー部 指定したユーザの全Followingを取得し、Last Update毎にソートする。コメントにもありますが、Last UpdateをScraperで取得できないユーザがいます。@smokeymonkeyの場合、956ユーザ中50ユーザでした。なお、Last Updateを取得できた@smokeymonkeyのFollowing906ユーザ中41ユーザが3ヶ月以上投稿の無いユーザでした。 初めてWeb::Scraperを使いました。最初は使い方に戸惑ったのですが、scraperコマンドでHTML読み込ませて、XPath入力してdしてcというやり方を覚えると結構楽しいです。ただ、上記の通り、同じHTML構造のはずなのに上手くいかない場合があり、この辺は更に調査が必要です。 最近本当にPerlづいてて、やってて面白いです。プログラムは何本も何本も書かないと覚えられないし、書けば書くほど楽しくなっていくんだと、強く実感しました。仕事でプログラムをすることはほとんど無いのですが、趣味としてこれからも続けていきたいです。

Yahoo!デベロッパーネットワークの「日本語形態素解析Webサービス」を使ってみる。

昨日の作業 をしている間に、 @kiyosick さんに 教えてもらった 、 Yahoo!デベロッパーネットワーク - テキスト解析 - 日本語形態素解析 を使って遊んでみました。 Yahoo!デベロッパーネットワークの「日本語形態素解析Webサービス」を使ってみる。 - smokeymonkey@ついったー部 いつもの如くツッコミ募集。WebAPIというのは本当に汎用性が高くて面白い。そしてソースを書くたびに自分のPerlのスキルの無さにヘコみます。もっと勉強しないといけない。

Text::MeCabの辞書をUTF-8化する

smokeymonkeyのフレンドタイムラインからマルコフしちゃう子:@dabesa - smokeymonkey@ついったー部 - はてなグループ::ついったー部 北海道開発オフで作ったスクリプトを、Twitterアカウント @dabesa として公開しました。 しかし、形態素解析で使っているText::MeCabがEUCのため、UTF-8のTwitterタイムラインを一度Jcode.pmでEUCにエンコードして、Text::MeCabにかけて、またJcode.pmでUTF-8にエンコードしている状態。色々調べたり、Twitterに投げてるうちに、Text::MeCabをUTF-8で使う方法を発見しました。 debian(sarge) で mecab ipadic を utf-8に変換 - 覚書いろいろ まず、 [-*煙猴*-]: Text::MeCabで遊んでみる で環境構築したときに、mecab-ipadicをインストールしていませんでした。apt-lineにnon-freeを記述していなかったため、apt-cacheにも表示されず(汗)、apt-lineにnon-freeを追加後、aptitudeでmecab-ipadicをインストール。 # aptitude install mecab-ipadic ipadicをUTF8化してreconfigure。 # cd /usr/share/mecab/dic/ipadic/ # vi dicrc (以下行追加) charset = utf8 # for i in * ; do mv $i $i.euc; nkf -w $i.euc > $i; done # dpkg-reconfigure mecab-ipadic 結果のソースは これ 。

LastFmRank機能拡張:ついったー部Last.fm部全員の中で最近聴いたトラックを投稿する

LastFmRank機能拡張:ついったー部Last.fm部全員の中で最近聴いたトラックを投稿する - smokeymonkey@ついったー部 - はてなグループ::ついったー部 昨日 の続き。1週間に1回しか動かないアカウントというのももったいないので、ついったー部のLast.fm部から各ユーザIDを抽出し、Last.fmのデータフィードの「最近聴いたトラック」フィードを収集し、一番最近再生されたトラックを、@LastFmRankに投稿するようにしました。毎時間0分、30分に実行するよう、Cronで回してます。ソースは上記リンク先参照。 本当はLast.fm IDではなくTwitter IDを表示したいのですが、ちょっと敷居が高そうなので検討中です。

ついったー部Last.fm部から集計した週間アーティストランキングを投稿するアカウント:LastFmRank

ついったー部Last.fm部から集計した週間アーティストランキングを投稿するアカウント:LastFmRank - smokeymonkey@ついったー部 - はてなグループ::ついったー部 北海道開発オフ 用のテーマだったんですが、勢いで作ってしまいました。上記の通り、 ついったー部 の Last.fm部 の部員のアカウントを抽出し、 Last.fmのデータフィード から週間再生アーティスト情報を抽出、集計し、再生数の多い10アーティストを @LastFmRank に投稿するアカウントです。Cronで毎週月曜日12:00に投稿するよう設定しています。ソースは上記リンク先参照。 せっかくLast.fmユーザが集まってるので、何か作りたいとずっと考えてましたので、自分的には嬉しいです。 本当は曲再生数でやろうと思ったんだけど、ちょっと悩んだので、簡単なアーティスト再生数で集計するようにしました。今後の修正も検討していますが、ぜひ皆さんのツッコミ、「もっと良い方法があるよ!」的なタレコミを頂きたいです。 それにしても、やっぱりプログラムは楽しいなぁ。

Text::MeCabで遊んでみる

MeCabのインストール $ sudo aptitude install mecab libmecab-dev $ su - # cpan cpan>install Text::MeCab t/04-dclone....................1/? Can't call method "surface" on an undefined value at t/04-dclone.t line 22. うーん。とりあえずforce。 cpan>force install Text::MeCab インストール完了。 Twitterのfriends_timelineをGETして、Mecabで分解。 #!/usr/bin/perl use strict; use Net::Twitter; use Jcode; use Text::MeCab; my $twit = Net::Twitter->new(username=>"USERNAME", password=>"PASSWORD") ; my $result = $twit->friends_timeline(); my $i = 0; my $j = 0; my @DATA = (); my @words = (); foreach my $hash (@$result) { $DATA[$i] = $hash->{'text'}; $i++; } for ($j=0; $j my $mec = Text::MeCab->new; for (my $nod = $mec->parse($DATA[$j]); $nod; $nod=$nod->next ) { push @words, $nod->surface if length $nod->surface; } } print join ' ', @words; exit;