▼ [WWW] ニコニコ動画の更新情報をTwitterに流す
2007/11/09 0:49
ニコニコ動画の更新情報をTwitterに流す実験:
updatetwitter.pl:
#! /usr/bin/perl
use strict;
use warnings;
use open OUT => ":encoding(euc-jp)";
use YAML qw[LoadFile];
use Data::Dumper;
use DB_File;
use Fcntl;
use Digest::MD5 qw[md5_hex];
use XML::RSS::Parser;
use Net::Twitter;
MAIN: {
my $conf = LoadFile("etc/twitter.yml") || die $!;
tie(my %db, DB_File => $conf->{read_db}, O_RDWR|O_CREAT, 0644) or die $!;
foreach my $e (@{$conf->{targets}}) {
my $twit = Net::Twitter->new(username=> $e->{username},
password=> $e->{password}) || die $!;
foreach my $t (@{$e->{tags}}) {
my $rssfile = sprintf $conf->{rss_path}, "tag", md5_hex($t);
open my $fh, "<", $rssfile or die $!;
my $feed = XML::RSS::Parser->new->parse_file($fh);
my $count = 0;
foreach my $i ($feed->query("//item")) {
my $title = $i->query("title")->text_content;
my $link = $i->query("link")->text_content;
utf8::encode($title);
my $key = "$e->{username};$link";
if(not exists $db{$key}) {
$twit->update("$link $title");
$db{$key} = time;
sleep 3;
last if(3 <= ++$count);
}
}
}
}
}
etc/config.yml (utf-8):
rss_path: rss/%s/%s.rss
read_db: var/rss_read.db
targets:
- username: vocaloid
password: ########
tags:
- 初音ミク
- 鏡音リン
- username: idolmaster
password: ########
tags:
- アイドルマスター
- アイマス
▼ コメント(0件)
▼ [WWW] Del.icio.usとHatena Bookmarkを同期
2007/11/09 0:11
Del.icio.usとHatena Bookmarkの両方を使っていてその内容を同期したい場合、WebService::SyncSBS::D2Hを利用することで簡単に同期することができる。使い方は examples/sbssync.plを見ればOK。
このモジュールのsyncメソッドは同期 (すなわち相互に不足分を複製) するため、私のように Del.icio.us から Hatena Bookmark 方向へのみコピーしたい場合にはそのまま利用できない。そこで、片方向のみ複製するパッチを作ってみた。このパッチを適用すると以下のメソッドが追加され、片方向の同期が可能となる。
- sync_delicious_to_hatena
- Reflects newly arrived sites on Del.icio.us in Hatena Bookmark.
- sync_d2h
- Alias for sync_delicious_to_hatena.
- sync_hatena_to_delicious
- Reflects newly arrived sites on Hatena Bookmark in Del.icio.us.
- sync_h2d
- Alias for sync_hatena_to_delicious.
WebService-SyncSBS-D2H-0.03.patch.gz
Yapooさんにはパッチを送ったので、次バージョンではもっときれいなコードになって入るかも。
