xmltv_fi on rikki taas

Vaihtoehtoja VDR:lle? Keskustele vapaasti muista vastaavista järjestelmistä

xmltv_fi on rikki taas

ViestiKirjoittaja savis21 » 06.10.2011 15:36

Moi! Näyttäis olevan telkku.com sivustoon tehty joitain muutoksia, kun taas herjaa EPG datan päivityksestä... Ubuntu-foorumilla on tästä juttua myös.

http://forum.ubuntu-fi.org/index.php?to ... #msg312609

Koodi: Valitse kaikki
fetchRaw(): could not fetch http://www.telkku.com/channel/list/1/20111007, error: 500 Status read failed: Connection reset by peer, aborting  at /usr/local/bin/tv_grab_fi line 888
2011-10-06 12:41:31.435 FillData, Error: xmltv returned error code 26624
2011-10-06 12:41:31.436 Error in 4:126: unexpected end of file


Osaiskohan/kerkeisiköhän joku fixata tuota xmltv_fi grabberia?

Täällä on tämä nykyinen toimiva: http://xmltv.cvs.sourceforge.net/viewvc ... v/grab/fi/
savis21
Säätäjä
 
Viestit: 210
Liittynyt: 29.03.2009 14:09

Re: xmltv_fi on rikki taas

ViestiKirjoittaja Rene » 08.10.2011 0:20

Voihan kökkö.. Taas jää vdr:ssä epg vajaaksi :-( Tuota tv_grab_fi skriptiä kun tarkasti, niin eipä siinä kovin viisaaksi tullut.. :-(

Kun ajoin sen manuaalisesti, sain tällaisen virheen:
Koodi: Valitse kaikki
using config filename /root/.xmltv/tv_grab_fi.conf
getting list of channels:   0% [     ]
could not fetch http://www.telkku.com/channel, error: 500 Status read failed: Connection reset by peer, aborting

Näyttää siltä että yhteys pätkii jollain tavalla.. Ettei vaan telkku.com ole blokannut xmltv-käyttäjiä jollain tavalla?
Avatar
Rene
Yli-ihminen
 
Viestit: 638
Liittynyt: 10.10.2004 3:00
Paikkakunta: Espoo

Re: xmltv_fi on rikki taas

ViestiKirjoittaja jms-linuxtv » 08.10.2011 8:53

Joo häikkää on. Käsin kun ajaa grabberia niin kerran meni vähän pidemmälle:
Koodi: Valitse kaikki
jms@srv01:~$ tv_grab_fi --config-file .xmltv/tv_grab_fi.conf.telkku --debug
Debug level set to 1.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dtd">

getting listings:   0% [                                                                                                                                            ]XMLTV channel ID: 1.telkku.com
Fetching day 20111008
<tv source-info-url="multiple" source-data-url="multiple" generator-info-name="XMLTV" generator-info-url="http://xmltv.org/">
  <channel id="1.telkku.com">
    <display-name lang="fi">TV1</display-name>
getting listings:   0% [=                                                                                                                                           ]Fetching day 20111009
Fetching day 20111010
Fetching day 20111011
Fetching day 20111012
Fetching day 20111013
fetchRaw(): could not fetch http://www.telkku.com/channel/list/1/20111013, error: 500 Status read failed: Connection reset by peer, aborting
 at /usr/local/bin/tv_grab_fi line 891

Yleensä kuitenkin hyytyy heti ekaan päivään:
Koodi: Valitse kaikki
jms@srv01:~$ tv_grab_fi --config-file .xmltv/tv_grab_fi.conf.telkku --debug
Debug level set to 1.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dtd">

getting listings:   0% [                                                                                                                                            ]XMLTV channel ID: 1.telkku.com
Fetching day 20111008
<tv source-info-url="multiple" source-data-url="multiple" generator-info-name="XMLTV" generator-info-url="http://xmltv.org/">
  <channel id="1.telkku.com">
    <display-name lang="fi">TV1</display-name>
getting listings:   0% [=                                                                                                                                           ]Fetching day 20111009
fetchRaw(): could not fetch http://www.telkku.com/channel/list/1/20111009, error: 500 Status read failed: Connection reset by peer, aborting
 at /usr/local/bin/tv_grab_fi line 891

wget:lläkään ei tule ihan sujuvasti...
Koodi: Valitse kaikki
  </channel>jms@srv01:~$ wget http://www.telkku.com/channel/list/1/20111013
--2011-10-08 08:45:13--  http://www.telkku.com/channel/list/1/20111013
Resolving www.telkku.com... 188.117.35.10
Connecting to www.telkku.com|188.117.35.10|:80... connected.
HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers.
Retrying.

--2011-10-08 08:45:59--  (try: 2)  http://www.telkku.com/channel/list/1/20111013
Connecting to www.telkku.com|188.117.35.10|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `20111013'

    [ <=>                                                                                                                        ] 42,208      --.-K/s   in 0.06s   

2011-10-08 08:46:00 (723 KB/s) - `20111013' saved [42208]

Muut lähteet (tvnyt, mtv3, telvis, yle) toimivat ok, mutta oman kokemuksen mukaan noita joutuu yhdistelemään että saan kaikki mitä tarvitsen.
jms-linuxtv
Harrastaja
 
Viestit: 43
Liittynyt: 15.12.2009 14:52
Paikkakunta: Tampere

Re: xmltv_fi on rikki taas

ViestiKirjoittaja Rene » 08.10.2011 9:40

Tajusin vasta nyt että olin ajanut vanhaa tv_grab_fi scriptiä, eikä tätä "uutta". Tämä ongelma näyttää minulta siltä että telkku.com estää jollain tavalla grabberin toiminnan. Ehkä siiinä on joku timeout montako hakua/min se sallii tai sit se tarkastaa user-agentin..

Asennan nyt tuon uuden grabberin, ja katsotaan jos siitä saisi enemmän irti debuggaus-mielessä :-)
Avatar
Rene
Yli-ihminen
 
Viestit: 638
Liittynyt: 10.10.2004 3:00
Paikkakunta: Espoo

Re: xmltv_fi on rikki taas

ViestiKirjoittaja Rene » 08.10.2011 10:29

Keksin missä mättää.. Telkku.com estää xmltv:n useragentin. Muuttamalla tämän johonkin toiseen korjasi ongelman:

Koodi: Valitse kaikki
--- Get_nice.pm.old     2011-10-08 10:13:36.000000000 +0300
+++ Get_nice.pm 2011-10-08 10:16:12.000000000 +0300
@@ -27,7 +27,7 @@


 our $ua = LWP::UserAgent->new;
-$ua->agent("xmltv/$XMLTV::VERSION");
+$ua->agent("Mozilla/5.0");
 $ua->env_proxy;
 our %errors = ();



Nyt ainakin haki telkku.com:sta koko kanavalistan ilman häikkää
Avatar
Rene
Yli-ihminen
 
Viestit: 638
Liittynyt: 10.10.2004 3:00
Paikkakunta: Espoo

Re: xmltv_fi on rikki taas

ViestiKirjoittaja Rene » 08.10.2011 11:40

Eipä toiminutkaan kun jämähti ekan kanavan hakuun. Telkku piste com ilmeisesti blokkaa useita peräkkäisiä hakuja samasta ip:stä. Jos tv_grab_fi saisi haettua esim randomilla kaikista valituista urleista, eikä esim kaikki ohjelmat yhteen putkeen, niin telkulla:lla olisi vaikeampaa erottaa perus pena muista tv_grab_fi-scriptistä..
Avatar
Rene
Yli-ihminen
 
Viestit: 638
Liittynyt: 10.10.2004 3:00
Paikkakunta: Espoo

Re: xmltv_fi on rikki taas

ViestiKirjoittaja AHaa » 10.10.2011 16:10

Hei,

Minulla on ollut sama ongelma, eli mythfilldatabase on antanut virheilmoitusta "could not fetch http://www.telkku.com/channel/list/1/2011xxxx, error: 500 Status read failed: Connection reset by peer, aborting..."

Minulla on käytössä Mythbuntu 11.04 ja sen päivityksistä saatava xmltv 0.5.59 ja tv_grab_fi 1.58. Ilmeisesti uudemmassa versiossa on valittavissa muitakin lähteitä, kuin telkku.com, mutta en ole osannut asentaa sitä.

Olen yrittänyt löytää ratkaisua ongelmaan, mutta koska mistään ei löytynyt toimivaa vaihtoehtoa, päätin korjata ongelman itse. Mitään xmltv:stä tai perlistä ymmärtämättömänä apinoin aiempaa koodia, ja sain aikaiseksi hyvinkin toimivan ratkaisun. Ideana on, että muokataan komennolla

Koodi: Valitse kaikki
sudo nano /usr/share/perl5/XMLTV/Get_nice.pm


Get_nice.pm-tiedostoa niin, että se ei keskeytä hakua virheen sattuessa (kun telkku.com estää pääsyn), vaan yrittää hakea samaa sivua uudelleen niin kauan, että onnistuu. Muutettu tiedosto näyttää kokonaisuudessaan tältä:

Koodi: Valitse kaikki
# $Id: Get_nice.pm,v 1.23 2010/02/13 19:26:29 knowledgejunkie Exp $
#
# Library to wrap LWP::UserAgent to put in a random delay between
# requests and set the User-Agent string.  We really should be using
# LWP::RobotUI but this is better than nothing.
#
# If you're sure your app doesn't need a random delay (because it is
# fetching from a site designed for that purpose) then set
# $XMLTV::Get_nice::Delay to zero, or a value in seconds.  This is the
# maximum delay - on average the sleep will be half that.
#
# get_nice() is the function to call, however
# XMLTV::Get_nice::get_nice_aux() is the one to cache with
# XMLTV::Memoize or whatever.  If you want an HTML::Tree object use
# get_nice_tree().
#

use strict;

package XMLTV::Get_nice;
use base 'Exporter';
our @EXPORT = qw(get_nice get_nice_tree error_msg);
use LWP::UserAgent;
use XMLTV;
our $Delay = 5; # in seconds
our $FailOnError = 1; # Fail on fetch error


our $ua = LWP::UserAgent->new;
#$ua->agent("xmltv/$XMLTV::VERSION");
$ua->agent("Mozilla/5.0");
$ua->timeout(10);
$ua->env_proxy;
our %errors = ();


sub error_msg($) {
    my ($url) = @_;
    $errors{$url};
}
sub get_nice( $ ) {
    # This is to ensure scalar context, to work around weirdnesses
    # with Memoize (I just can't figure out how SCALAR_CACHE and
    # LIST_CACHE relate to each other, with or without MERGE).
    #
    return scalar get_nice_aux($_[0]);
}

# Fetch page and return as HTML::Tree object.  Optional argument is a
# function to put the page data through (eg, to clean up bad
# characters) before parsing.
#
sub get_nice_tree( $;$ ) {
    my ($uri, $filter) = @_;
    require HTML::TreeBuilder;
    my $content = get_nice $uri;
    $content = $filter->($content) if $filter;
    my $t = new HTML::TreeBuilder;
    $t->parse($content) or die "cannot parse content of $uri\n";
    $t->eof;
    return $t;
}

my $last_get_time;
sub get_nice_aux( $ ) {
    my $url = shift;

    if (defined $last_get_time) {
        # A page has already been retrieved recently.  See if we need
        # to sleep for a while before getting the next page - being
        # nice to the server.
        #
        my $next_get_time = $last_get_time + (rand $Delay);
        my $sleep_time = $next_get_time - time();
        sleep $sleep_time if $sleep_time > 0;
    }

our $okei = 0;
our $laskuri = 0;
do {
    system ("echo 'Haetaan sivua: '$url");
    my $r = $ua->get($url);

    # Then start the delay from this time on the next fetch - so we
    # make the gap _between_ requests rather than from the start of
    # one request to the start of the next.  This punishes modem users
    # whose individual requests take longer, but it also punishes
    # downloads that take a long time for other reasons (large file,
    # slow server) so it's about right.
    #
    $last_get_time = time();

    if ($r->is_error) {
        $okei = 0;
        system ("echo 'Virhe, yritetään uudelleen...'");
        # At the moment download failures seem rare, so the script dies if
        # any page cannot be fetched.  We could later change this routine
        # to return undef on failure.  But dying here makes sure that a
        # failed page fetch doesn't get stored in XMLTV::Memoize's cache.
        #
        $laskuri++;
        if ($laskuri > 200) {
                die "could not fetch $url, error: " . $r->status_line . ", aborting\n" if $FailOnError;
                $errors{$url} = $r->status_line;
                return undef;
        }
    } else {
        $okei = 1;
        $laskuri = 0;
        system("echo 'Onnistui!'");
        return $r->content;
    }
} while($okei == 0);

}

1;


Eli tein tiedoston alaosaan tuon do-while-silmukan, joka pyörii niin kauan, kunnes sivun haku onnistuu. Jottei homma karkaisi aivan kokonaan käsistä, laitoin scriptiin laskurin, joka keskeyttää touhun, kun on sattunut 200 peräkkäistä virhettä. Laitoin tuon myös tulostamaan näytölle, kuinka hyvällä tuulella telkku.com kulloinkin on. Jos sivun haku onnistuu, scripti tulostaa näytölle "Onnistui!" ja jos sivun haku estetään, tulostuu "Virhe, yritetään uudelleen...".

Tässä näyte siitä, minkälaista tekstiä tuo tulostaa näytölle:
Koodi: Valitse kaikki
2011-10-10 15:59:39.193 Checking day @ offset 1, date: ti lokakuuta 11 2011
2011-10-10 15:59:39.193 Data Refresh always needed for tomorrow
2011-10-10 15:59:39.193 Refreshing data for ti lokakuuta 11 2011
2011-10-10 15:59:39.193 XMLTV config file is: /home/mythtv/.mythtv/digi-tv.xmltv
Haetaan sivua: http://www.telkku.com/channel
Onnistui!
Haetaan sivua: http://www.telkku.com/channel/list/1/20111011
Virhe, yritetään uudelleen...
Haetaan sivua: http://www.telkku.com/channel/list/1/20111011
Virhe, yritetään uudelleen...
Haetaan sivua: http://www.telkku.com/channel/list/1/20111011
Virhe, yritetään uudelleen...
Haetaan sivua: http://www.telkku.com/channel/list/1/20111011
Onnistui!
Haetaan sivua: http://www.telkku.com/channel/list/10/20111011
Onnistui!
Haetaan sivua: http://www.telkku.com/channel/list/11/20111011
Onnistui!
Haetaan sivua: http://www.telkku.com/channel/list/12/20111011
Onnistui!
Haetaan sivua: http://www.telkku.com/channel/list/2/20111011
Onnistui!
Haetaan sivua: http://www.telkku.com/channel/list/3/20111011
Onnistui!
Haetaan sivua: http://www.telkku.com/channel/list/4/20111011
Onnistui!
Haetaan sivua: http://www.telkku.com/channel/list/5/20111011
Virhe, yritetään uudelleen...
Haetaan sivua: http://www.telkku.com/channel/list/5/20111011
Virhe, yritetään uudelleen...
Haetaan sivua: http://www.telkku.com/channel/list/5/20111011
Onnistui!
Haetaan sivua: http://www.telkku.com/channel/list/6/20111011
Onnistui!
Haetaan sivua: http://www.telkku.com/channel/list/62/20111011
Onnistui!
Haetaan sivua: http://www.telkku.com/channel/list/7/20111011
Onnistui!
Haetaan sivua: http://www.telkku.com/channel/list/9/20111011
Virhe, yritetään uudelleen...
Haetaan sivua: http://www.telkku.com/channel/list/9/20111011
Virhe, yritetään uudelleen...
Haetaan sivua: http://www.telkku.com/channel/list/9/20111011
Virhe, yritetään uudelleen...
Haetaan sivua: http://www.telkku.com/channel/list/9/20111011
Onnistui!
2011-10-10 16:06:10.918 IconData: Updating icons for sourceid: 1
2011-10-10 16:06:11.872 Updated programs: 0 Unchanged programs: 355


Myös useragent on muutettu Firefoxiksi Renen ohjeiden mukaan, jos siitä olisi edes jotain apua.

Laitoin manuaalisesti mythfilldatabase:n käyntiin viime yönä puolen yön aikaan. Se oli saanut haettua kahden viikon ohjelmatiedot aamulla klo 8:50, eli aikaa otti melko reilusti. Jossain vaiheessa yötä oli yhteys telkku.comiin ollut virheilmoituksista päätellen joitakin tunteja poikki, mutta siitä huolimatta scripti lopulta sai noudettua haluamansa sivun ja ohjelmatietojen haku onnistui. Nyt, kun ohjelmatiedot on haettu kahdelle viikolle, haku onnistuu tietenkin nopeammin, kun tarvitsee päivittää vain huomisen+yhden päivän (kahden viikon päästä) ohjelmatiedot.

Tällä mennään toistaiseksi, toivottavasti on muillekin apua.
Viimeksi muokannut AHaa päivämäärä 11.10.2011 13:35, muokattu yhteensä 1 kerran
AHaa
Vastasyntynyt
 
Viestit: 2
Liittynyt: 10.10.2011 15:25
Paikkakunta: Joensuu

Re: xmltv_fi on rikki taas

ViestiKirjoittaja jms-linuxtv » 10.10.2011 21:16

AHaa kirjoitti:Olen yrittänyt löytää ratkaisua ongelmaan, mutta koska mistään ei löytynyt toimivaa vaihtoehtoa, päätin korjata ongelman itse.


No tuolla sinnikkäällä uudelleenyrittämisellähän ne sieltä pikkuhiljaa valuvat - kiitos!

Edit:
määrittelemällä timeoutin homma nopeutuu kohtalaisesti:

our $ua = LWP::UserAgent->new;
#$ua->agent("xmltv/$XMLTV::VERSION");
$ua->agent("Mozilla/5.0");
$ua->env_proxy;
our %errors = ();


our $ua = LWP::UserAgent->new;
#$ua->agent("xmltv/$XMLTV::VERSION");
$ua->agent("Mozilla/5.0");
$ua->timeout(10);
$ua->env_proxy;
our %errors = ();
jms-linuxtv
Harrastaja
 
Viestit: 43
Liittynyt: 15.12.2009 14:52
Paikkakunta: Tampere

Re: xmltv_fi on rikki taas

ViestiKirjoittaja AHaa » 11.10.2011 13:38

Kiitos! Juuri tällaisesta timeoutista minäkin haaveilin, mutta taidot/viitseliäisyys asian selvittämiseksi loppui kesken.

Lisäsin timeoutin tuohon aiemmin lähettämääni koodiin, joten se on edelleen suoraan kopioitavissa Get_nice.pm -tiedostoon, ja ohjelmien haku telkku.comista pitäisi onnistua nyt nopeammin :)
AHaa
Vastasyntynyt
 
Viestit: 2
Liittynyt: 10.10.2011 15:25
Paikkakunta: Joensuu

Re: xmltv_fi on rikki taas

ViestiKirjoittaja Rene » 11.10.2011 14:00

Paras fixaus olisi jos xmltv sekottaisi kaikki hakudomainit satunnaiseen järjestykseen ennen hakua. Näin samaan serveriin ei kohdistuisi samasta ip:stä liian monta perättäistä hakua..
Avatar
Rene
Yli-ihminen
 
Viestit: 638
Liittynyt: 10.10.2004 3:00
Paikkakunta: Espoo

Re: xmltv_fi on rikki taas

ViestiKirjoittaja bent » 16.12.2011 23:19

Veikö joku nämä muokkaukset tonne SourceForgeen ?

EDIT: Sain kuitenkin toimimaan tolla joka sourceforgessa on.
Tässä seloste asiasta: http://crossthis.blogspot.com/2011/12/x ... nland.html
bent
Säätäjä
 
Viestit: 321
Liittynyt: 05.06.2009 18:41
Paikkakunta: Turku


Paluu Vaihtoehtoiset ohjelmistot

Paikallaolijat

Käyttäjiä lukemassa tätä aluetta: Ei rekisteröityneitä käyttäjiä ja 1 vierailijaa