27. 5.

Google Reader

V skratke: Google Reader bude vypnutý od prvého júla, ale ja som už pripravený. Vyzerá to, že bezkonkurenčná alternatíva z môjho pohľadu je Tiny Tiny RSS. Súperom vyberám z druhého výkladu cukrovinky Čierny princ.

Záloha

Bol to ťažký pôrod, ale podarilo sa mi vytvoriť akýsi skript vďaka knižnici pre Perl. Prvý pokus s Pythonom stroskotal veľmi rýchlo na nefunkčných knižniciach.

Nie je to dokonalé, ale na jedno použitie stačí. Prvá vec je, že preskakuje moje labely, ktoré som používal ako folder a zálohuje iba ostatné (ozajstné) labely (či tagy). Druhá je, že článok s viacerými tagmi bude uložený duplicitne pre každý label. Tretia je, že niektoré články sa pri druhom spustení skriptu môžu uložiť znova, pretože telo článku sa zmenilo (môže to spôsobovať vygenerovaná reklama).

Rýchlo používajte, nech vám Reader nezožerie tagy, ktoré nie sú súčasťou Google Takeout exportu.

# WebService::Google::Reader from CPAN
use WebService::Google::Reader;
 
my $user = 'SEM SI CAPNI E-MAIL';
use Term::ReadKey;
print 'password: ';
ReadMode('noecho');
my $pass = ReadLine(0);
print "\n";
 
my $reader = WebService::Google::Reader->new(
    username => $user,
    password => $pass,
    https => 1,
);
 
for my $tag ($reader->tags) {
    # full google reader tag address
    my $tagname = "$tag";
    # extract short tag name
    $tag =~ '([^/]*)$';
    my $short = $1;
 
    next if ($short =~ '^folder-');
 
    my $tagdir = "greader/$short";
    `mkdir -p "$tagdir"`;
 
    # start processing tag
    print "TAG=$short\n";
 
    my $feed = $reader->tag($tag);
    do {
        for my $entry ($feed->entries) {
            my $atom = $entry->as_xml;
 
            use Digest::MD5 qw(md5_hex);
            my $digest = md5_hex($entry->title . $entry->published . $entry->updated);
 
            my $path = "$tagdir/$digest";
            if (! -f $path) {
                open(my $f, '>', $path);
                print $f $atom;
                close($f);
                print "saved: $path; ". $entry->title ."\n";
            }
        }
    } while ($reader->more($feed));
}

Alternatívy

Viaceré alternatívy na http://www.replacereader.com/:

  • Feedly – s otvorenou mysľou som nainštaloval aj vyžadovanú FireFox extension, no absolútne mi nevyhovuje,
  • NewsBlur – v neplatenej verzii pre mňa nepoužiteľné,
  • g2reader – podľa obrázku vydarená kópia, ale pre uzavretosť a spokojnosť s inou alternatívou som to už neskúšal,
  • Tiny Tiny RSS (“neither tiny nor tiny, tiny”) – je potrebný vlastný server a schopnosť sa o to postarať, ale spokojnosť.

Inštalácia

Nasledujú veľmi stručné poznámky k celému procesu.

Treba mať rozchodený webový server a databázu. Databáza by mala byť PostgreSQL, MySQL neodporúčam, resp. dajte pozor či vám s ňou náhodou nebude rachotiť disk.

Samokonfigurácia funguje pekne, nie je s tým problém. Rozdiel pri MySQL bol, že po prvotnom importe feedov sa neoznačili za prečítané, čo sa pri PostgreSQL stalo. Podľa autora je tá druhá možnosť správna.

Nastavenie zobrazenia sa dá priblížiť Google Readeru rôznymi voľbami aj nastavením dodatočného CSS. V základnom balíku je aj plugin, ktorý aktivuje niektoré známe klávesové skratky z Readeru. Zobrazovanie neprečítaných článkov vo favicone je tiež dostupné cez iný plugin, ale pre verziu 1.7.9 je potrebné ho trochu opraviť.

Ďalšia nepríjemnosť je, že category z Atom feedov sa importujú ako tag. Taktiež je potrebné zakomentovať pár riadkov ak to nechceme.

Po rozchodenej inštalácii a importe feedov je potrebné zabezpečiť updatovanie, ja som použil Debian init skript odtiaľto: http://510x.se/notes/posts/Install_Tiny_Tiny_RSS_on_Debian/. Nastavil som tam update_daemon2.php a zrejme bolo potrebné ešte nastaviť pri spúšťaní cez start-stop-daemon aj -c www-data.

Po druhom dni používania konštatujem, že sa nič extrémne zlé nestalo, look and feel je s trochou snahy dostatočne podobný. Everything went better than expected.

Import starých článkov do Tiny Tiny RSS v blízkej dobe neplánujem, prípadné vyhľadávanie budem riešiť na úrovni súborov a adresárov.

weblog.txt · Last modified: 2010/08/03 08:21 (external edit)