Эхний удаа тагтаа хэрхэн тэжээх тухай бичье. Тагтаа маань анх өндөгнөөсөө гарахдаа тэжээл идэж мэддэггүй боловч Perl хэмээх захиран тушаах хэлийг шууд ойлгодог ажээ. Тэгэхээр нь хэдэн мөр тушаал бичиж хүчээр тэжээл иддэг болгов. Доорх тушаалыг та гэрийнхээ хавтас дээр .purple/plugins гэж хавтас үүсгээд тэр дотроо feed.pl гэж хадгалаад %FEEDS, $REFRESH_INTERVAL, $TEMP_DIRECTORY болон $WINDOW_NAME гэсэн хувьсагчдын утгуудыг өөртөө тохируулж өөрчлөөрэй. Мөн тагтааны тохиргоо дотор тус тушаалаа чагталж идэвхжүүлэхээ бүү мартаарай. (Одоогийн байдлаар доорх тушаал таныг Yahoo! ашигладаг тохиолдолд л ажиллана)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use Purple; | |
use Pidgin; | |
use XML::Feed; | |
use MIME::Base64; | |
################################################# | |
# Доорх 4 хувьсагчийг дураараа тохируулж болно # | |
################################################# | |
my %FEEDS = ( | |
# "Гарчиг" => "Хаяг" | |
"Галзуу хүмүүсийн тэрлэл" => "http://mongolian-it.blogspot.com/feeds/posts/default", | |
"Галзуу хүмүүсийн сэтгэгдэл" => "http://mongolian-it.blogspot.com/feeds/comments/default" | |
); | |
# 60 секунд тутамд шинэ тэжээл байгаа эсэхийг шалгана | |
my $REFRESH_INTERVAL = 60; | |
# Файл үүсгэж болохуйц дурын хавтас. | |
my $TEMP_DIRECTORY = '/tmp/'; | |
# Онгойх цонхны гарчиг | |
my $WINDOW_NAME = 'Тагтааны Тэжээл'; | |
################################################# | |
# Эндээс цааш юу ч өөрчлөж болохгүй # | |
################################################# | |
%PLUGIN_INFO = ( | |
perl_api_version => 2, | |
name => "Feed Reader", | |
version => "0.1", | |
summary => "Reads and shows the configured feeds in every 60 seconds.", | |
description => "Reads and shows the configured feeds in every 60 seconds.", | |
author => "tugstugi AT yahoo.com", | |
url => "http://mongolian-it.blogspot.com", | |
load => "plugin_load", | |
unload => "plugin_unload" | |
); | |
sub plugin_init { | |
return %PLUGIN_INFO; | |
} | |
sub plugin_load { | |
my $plugin = shift; | |
Purple::timeout_add($plugin, $REFRESH_INTERVAL, \&timeout_cb, $plugin); | |
} | |
sub plugin_unload { | |
my $plugin = shift; | |
} | |
sub timeout_cb { | |
my $plugin = shift; | |
# Reschedule timeout | |
Purple::timeout_add($plugin, $REFRESH_INTERVAL, \&timeout_cb, $plugin); | |
@accounts=Purple::Accounts::get_all_active(); | |
foreach $account (@accounts){ | |
if(index($account->get_protocol_id(), 'prpl-yahoo') < 0) { | |
next; | |
} | |
my $feed_title = ''; | |
my $feed_url = ''; | |
while (($feed_title, $feed_url) = each(%FEEDS)) { | |
my $feed_file = $TEMP_DIRECTORY . '/' . encode_base64($feed_url); | |
my $feed = XML::Feed->parse(URI->new($feed_url)); | |
for my $entry ($feed->entries) { | |
my $entry_id = $entry->id(); | |
if (fileContains($feed_file, $entry_id)) { | |
# already added | |
} else { | |
my $conversation = Purple::Conversation->new(1, $account, $WINDOW_NAME); | |
if ($conversation) { | |
appendToFile($feed_file, $entry_id); | |
my $link = $entry->link(); | |
my $title = $entry->title(); | |
my $message = '$feed_title: <a href="$link">$title</a>'; | |
$conversation->get_im_data()->send($message); | |
} else { | |
# error | |
return; | |
} | |
} | |
} | |
} | |
last; | |
} | |
} | |
sub fileContains { | |
my $file = shift; | |
my $string = shift; | |
open handle, $file; | |
my @lines = <handle>; | |
# </handle> | |
close handle; | |
foreach my $line (@lines) { | |
if (index($line, $string) == 0) { | |
return 1; | |
} | |
} | |
return 0; | |
} | |
sub appendToFile { | |
my $file = shift; | |
my $string = shift; | |
open handle, ">>" . $file; | |
print handle $string . "\n"; | |
close handle; | |
} |
Хэрвээ дээрх тушаал таны төмөр дээр ажиллахгүй байгаа бол төмөр дээрээ Perl хэмээх захиран тушаах хэл ойлгодог, мөн XML-FEED хэмээх Perl модул суусан эсэхийг тус тус шалгаж үзээрэй. Дэлгэцийн агшин нь нэг иймэрхүү харагдаж байна:

"Тагтаа тэжээх" сонирхолтой арга байна шүү. Advanced түвшиний хүмүүс л иймэрхүү арга ихээр сэдэж хэрэглэдэг байх ^_^
ReplyDeleteМиний хувьд мэйлийн "Хувьсал" (Evolution) програм байнга нээлттэй, блогт сэтгэгдэл нэмэгдэх бүрт өөр лүүгээ илгээхээр тохируулчихсан болохоор шинэ сэтгэгдлээс хоцордоггүй :D
Тэр хөгтэй нөхөр тань надтай адилхан юм байна. Би харин нэг л дэвшилттэй алхам хийсэн байж. Оёдлын төмөр хуруувч углаж байгаад халцартал нь F5 дээр товшиж байсан юм байна би.
ReplyDeleteМайлээр шидэхээр шуудангийн хайрцаг хогоор дүүрэх гэмтэй юм даа
ReplyDeleteBi law oilgohgui um bna arai delgerengui baij boloh uu?
ReplyDeleteajaxmaa irgen irlee ura! ura!
энэ их дажгүй юм аа
ReplyDeleteби интернэт банкаар дансаа өдөрт 10-20 удаа шалгадаг юм л даа.
үүнийг таны энэ аргаар чинь шийдэж болох бол уу?
Great post thankyouu
ReplyDelete