| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Habo-Twitter-Feed optimieren im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Vielleicht hat hier ja noch jemand eine Idee, wie man das Script, das http://twitter.com/habofeed mit Daten versorgt, optimieren kann. ...
![]() |
| | #1 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Anzeige Vielleicht hat hier ja noch jemand eine Idee, wie man das Script, das http://twitter.com/habofeed mit Daten versorgt, optimieren kann. Hier ist der Source: Code: #!/usr/bin/perl
use strict;
use warnings;
use Config::Simple;
use Net::Twitter;
my $config_file = '/home/foobar/twitter.access.ini';
my $cfg = new Config::Simple() or die $!;
$cfg->read($config_file) or die $!;
my $access_token = $cfg->param('access_token');
my $access_token_secret = $cfg->param('accesss_token_secret');
my $user_id = $cfg->param('user_id');
my $screen_name = $cfg->param('screen_name');
my $consumer_key = $cfg->param('consumer_key');
my $consumer_secret = $cfg->param('consumer_secret');
my $nt = Net::Twitter->new(
traits => [qw/API::REST OAuth/],
( consumer_key => $consumer_key, consumer_secret => $consumer_secret )
);
$nt->access_token($access_token);
$nt->access_token_secret($access_token_secret);
# auth is done let's do the real stuff
my $url = 'http://www.hackerboard.de/external.php?type=RSS2&lastpost=1';
my $file = '/home/foobar/feed.txt';
my $lastdatefile = '/home/foobar/last.txt';
my %month_names = ('Jan' => 1,
'Feb' => 2,
'Mar' => 3,
'Apr' => 4,
'May' => 5,
'Jun' => 6,
'Jul' => 7,
'Aug' => 8,
'Sep' => 9,
'Oct' => 10,
'Nov' => 11,
'Dec' => 12
);
use XML::RSS::Parser;
use FileHandle;
use WWW::Shorten::TinyURL;
use WWW::Shorten 'TinyURL';
use Time::Local;
my $cmd = "wget -O $file -o wget.log $url";
my $out = `$cmd`;
print $out."\n";
my $p = XML::RSS::Parser->new;
my $fh = FileHandle->new($file);
my $feed = $p->parse_file($fh) or die $!."\n";
my $count = $feed->item_count;
print $count." Items.\n";
my $loop_count = 1;
my @items = ();
foreach my $i ($feed->query('//item')) {
push(@items, $i);
}
my @items_new = reverse(@items);
foreach my $i (@items_new) {
my $new_item = 0;
my $node = $i->query('title');
my $title = $node->text_content;
$node = $i->query('pubDate');
my $datetime = $node->text_content;
$node = $i->query('link');
my $url = $node->text_content;
my $lastdate = '';
open(FILE, "< $lastdatefile") or die $!."\n";
while(<FILE>) {
chomp;
$lastdate = $_;
}
my $lastdate_unix;
my $datetime_unix;
# $lastdate zu unixtime umwandeln
if($lastdate =~ /(\d+)\s(...)\s(\d+)\s(\d+):(\d+):(\d+)\s.../) {
my $mday = $1;
my $mname = $2;
my $year = $3;
my $hour = $4;
my $minutes = $5;
my $seconds = $6;
my $month = $month_names{$mname};
$lastdate_unix = timelocal($seconds, $minutes, $hour, $mday, ($month -1), $year);
}
# $datetime in unixtime umwandeln
if($datetime =~ /(\d+)\s(...)\s(\d+)\s(\d+):(\d+):(\d+)\s.../) {
my $mday = $1;
my $mname = $2;
my $year = $3;
my $hour = $4;
my $minutes = $5;
my $seconds = $6;
my $month = $month_names{$mname};
$datetime_unix = timelocal($seconds, $minutes, $hour, $mday, ($month - 1), $year);
}
print "Last date unix: ".$lastdate_unix."\n";
print "Datetime unix: ".$datetime_unix."\n";
if($lastdate_unix < $datetime_unix) {
$new_item = 1;
}
if($new_item == 1) {
# diesen beitrag twittern
my $tinyurl = makeashorterlink($url);
my $msg = 'Neuer Beitrag in: '.$title.' - '.$tinyurl."\n";
print $msg;
$nt->update($msg) or die $!;
# neue zeit des letzten beitrags merken
open(INFILE, "> $lastdatefile");
print INFILE $datetime."\n";
close(INFILE);
}
$loop_count++;
close(FILE);
}
$cmd = "rm wget.log";
$out = `$cmd`;
print $out."\n";
$nt->end_session();
exit;
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #2 (permalink) | |||||
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Zitat:
Zitat:
Code: #!/usr/bin/env perl Zitat:
"use WWW::Shorten::TinyURL;" und "use WWW::Shorten 'TinyURL';". Ich sehe einige Beispiele bei google die das so machen. Der Sinn erschließt sich mir aber derzeit nicht. Zitat:
Code: use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new( GET => $url );
my $res = $ua->request( $req );
if ( ! $res->is_success ) { die $res->status_line ."\n"; }
my $out = $res->content;
my $p = XML::RSS::Parser->new;
my $feed = $p->parse_string($out) or die $!."\n"; Zitat:
Code:
use Date::Parse;
foreach my $i (@items_new) {
# $lastdate zu unixtime umwandeln
if($lastdate =~ /(\d+)\s(...)\s(\d+)\s(\d+):(\d+):(\d+)\s.../) {
$lastdate_unix = str2time($lastdate);
}
# $datetime in unixtime umwandeln
if($datetime =~ /(\d+)\s(...)\s(\d+)\s(\d+):(\d+):(\d+)\s.../) {
$datetime_unix = str2time($datetime);
} HTH Micha
__________________ http://www.openvas.org | |||||
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Seltsamerweise muss man die TinyURL-Module wohl so einbinden. Nutzt man nur eines von beiden, funktioniert's nicht. Den Rest deiner Tipps probiere ich nachher mal aus. Ich finde, da hast du doch 'ne Menge gefunden, was sich verbessern lässt.
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #4 (permalink) | |
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Zitat:
Code: #!/usr/bin/env perl
use strict;
use warnings;
use WWW::Shorten::TinyURL;
my $short_url = makeashorterlink("http://www.openvas.org");
print $short_url;
mime@kira:~ % perl tiny.pl
http://tinyurl.com/rrjbe Micha
__________________ http://www.openvas.org | |
| | |
| | #5 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Ich hatte es auch probiert und dann beschwerte er sich, dass die Funktion makeashorterlink nicht gefunden werden kann. Daraufhin probierte ich knapp 20 Minuten rum wo das Problem liegen könnte und fand dann die Beispiele im Web, die beide Einbindungsarten gleichzeitig benutzten, womit es dann auch funktionierte. Welche Perl- und welche Modul-Version nutzt du denn?
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #6 (permalink) |
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Code: mime@kira:~ % perl --version This is perl, v5.8.8 built for i686-linux mime@kira:~ % perl -MWWW::Shorten::TinyURL -e 'print "$WWW::Shorten::TinyURL::VERSION"' 1.90 Micha
__________________ http://www.openvas.org Geändert von mime (05.12.10 um 14:20 Uhr) |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |