Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#51 Le 17/02/2017, à 17:01

kerenoc

Re : Suivi des plugins de GCstar

Hizoka a écrit :

et en modifiant aléatoirement le navigateur utilisé ?

Plusieurs stratégies peuvent effectivement être mise en place. Par exemple, se rapprocher du comportement d'un utilisateur en passant systématiquement la page d'accueil ou mieux positionner les champs des requêtes HTTP (Referer par exemple) : pour l'instant cela n'est pas prévu dans le mécanisme des plugins de GCstar.

Je signale que j'ai modifié ma version Test de GCstar pour accepter une nouvelle valeur 3 à la variable d'environnement  GCS_DEBUG_PLUGIN_PHASE qui fait la fusion des valeurs 1 et 2 : GCstar utilise alors un cache local des pages web visitées. Cela peut réduire un peu la charge sur les sites web.

Hors ligne

#52 Le 29/04/2017, à 16:19

2emeagauche

Re : Suivi des plugins de GCstar

Bonjour à tous.

Pour ma part j'utilise le plugin GCMoviecovers.pm pour ma collection de films. Mais il a fallu apporté des corrections car celui-ci ne récupérait plus ni le résumé ni la cover du film.
Je me permets d'indiquer ci-dessous les corrections que j'y ai apporté.

Pour la cover du film l'expression régulière correspondant à la source de l'image a changé. Il fallait enlever "www". Voici la nouvelle ligne:

$src =~ s/http\:\/\/moviecovers\.com\/DATA\/thumbs\/films\-[A-Za-z0-9-]+\/(.*)/$1/;

De plus pour la ligne suivante le domaine de l'url pour la grande image a aussi changé. Ce n'est plus "data.moviecovers.com" mais "moviecovers.com".

$self->{curInfo}->{image} =
                          "http://moviecovers.com/DATA/zipcache/" . $src;

Pour le résumé du film.
C'était :

elsif ($self->{insideSynopsis})
                {
                    ($self->{curInfo}->{synopsis} .= $origtext) =~ s/^\s*//;
                }

Devient :

elsif (($self->{insideSynopsis}) && ($self->{inside}->{p}))
                {
                    ($self->{curInfo}->{synopsis} .= $origtext) =~ s/^\s*//;
		    $self->{insideSynopsis} = 0;
                }

Et enfin il fallait décommenter la ligne

$self->{insideSynopsis} = 1 if $origtext =~ m/Résumé/;

Voici le plugin en entier :

package GCPlugins::GCfilms::GCMoviecovers;

###################################################
#
#  Copyright 2005-2010 Christian Jodar
#
#  This file is part of GCstar.
#
#  GCstar is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  GCstar is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with GCstar; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
#
###################################################

use strict;
use utf8;

use GCPlugins::GCfilms::GCfilmsCommon;

{

    package GCPlugins::GCfilms::GCPluginMoviecovers;

    use base qw(GCPlugins::GCfilms::GCfilmsPluginsBase);

    sub start
    {
        my ($self, $tagname, $attr, $attrseq, $origtext) = @_;

        $self->{inside}->{$tagname}++;

        if ($self->{parsingList})
        {
            if ($tagname eq "a")
            {
                if (($attr->{href} =~ /^\/film\/titre_/) && ($self->{inside}->{li}))
                {
                    my $url = $attr->{href};
                    $self->{isMovie} = 1;
                    $self->{isInfo}  = 0;
                    $self->{itemIdx}++;
                    $self->{itemsList}[ $self->{itemIdx} ]->{url} = $url;
                }
            }
        }
        else
        {
            if ($tagname eq "img")
            {
                my $src = $attr->{src};
                my $alt = $attr->{alt};
                if (!$self->{curInfo}->{image})
                {
                    if ($alt =~ /^Recto/)
                    {
#                        $src =~ s/http\:\/\/www\.moviecovers\.com\/DATA\/thumbs\/films\-[A-Za-z0-9-]+\/(.*)/$1/;
                        $src =~ s/http\:\/\/moviecovers\.com\/DATA\/thumbs\/films\-[A-Za-z0-9-]+\/(.*)/$1/;
                        $self->{curInfo}->{image} =
                          "http://moviecovers.com/DATA/zipcache/" . $src;
#                          "http://data.moviecovers.com/DATA/zipcache/" . $src;
                    }
                }
            }
        }

    }

    sub end
    {
        my ($self, $tagname) = @_;

        $self->{inside}->{$tagname}--;
    }

    sub text
    {
        my ($self, $origtext) = @_;

        if ($self->{parsingList})
        {
            if ($self->{isMovie})
            {
                $self->{itemsList}[ $self->{itemIdx} ]->{"title"} = $origtext;
                $self->{isMovie}                                  = 0;
                $self->{isInfo}                                   = 1;
                return;
            }

            if ($self->{inside}->{li})
            {
                my $element = undef;
                if ($origtext =~ /^ \([0-9]{4}\)/)
                {
                    $origtext =~ s/ \(([0-9]{4})\)/$1/;
                    $element = "date";
                    $self->{isInfo} = 0;
                }
                $self->{itemsList}[ $self->{itemIdx} ]->{$element} = $origtext
                  if $element;
            }

        }
        else
        {

            if ($self->{inside}->{title})
            {
                $self->{curInfo}->{title} = $origtext if length($origtext) > 2;
            }

            if ($self->{inside}->{td})
            {
                if ($self->{insideOriginal})
                {
                    $origtext =~ s/^\s+//;
                    $origtext =~ s/\s+$//;
                    $self->{curInfo}->{original} = $origtext;
                    $self->{insideOriginal} = 0;
                }
                elsif (($self->{insideGenre}) && ($self->{inside}->{a}))
                {
                    $self->{curInfo}->{genre} = $origtext;
                    $self->{insideGenre} = 0;
                }
                elsif (($self->{insideDirector}) && ($self->{inside}->{a}))
                {
                    $self->{curInfo}->{director} = $origtext;
                    $self->{insideDirector} = 0;
                }
                elsif (($self->{insideNat}) && ($self->{inside}->{a}))
                {
                    $self->{curInfo}->{country} = $origtext;
                    $self->{insideNat} = 0;
                }
                elsif ($self->{insideTime})
                {
                    $origtext =~ s/^\s+//;
                    $origtext =~ s/\s+$//;
                    $self->{curInfo}->{time} = $origtext;
                    $self->{insideTime} = 0;
                }
                elsif ($self->{insideDate} && ($self->{inside}->{a}))
                {
                    $self->{curInfo}->{date} = $origtext;
                    $self->{insideDate} = 0;
                }
                elsif (($self->{insideActors}) && ($self->{inside}->{a}))
                {
                    $self->{curInfo}->{actors} .= $origtext . ', '
                      if ($self->{actorsCounter} <
                        $GCPlugins::GCfilms::GCfilmsCommon::MAX_ACTORS);
                    $self->{actorsCounter}++;
                }
                elsif (($self->{insideSynopsis}) && ($self->{inside}->{p}))
                {
                    ($self->{curInfo}->{synopsis} .= $origtext) =~ s/^\s*//;
		    $self->{insideSynopsis} = 0;
                }
            }
            if ($self->{inside}->{th})
            {
                $self->{insideDirector} = 1 if $origtext =~ m/Réalisateur/;
                $self->{insideActors}   = 1 if $origtext =~ m/Acteurs principaux/;
                $self->{insideGenre}    = 1 if $origtext =~ m/Genre/;
                $self->{insideTime}     = 1 if $origtext =~ m/Durée/;
                $self->{insideNat}      = 1 if $origtext =~ m/Nationalité/;
                $self->{insideDate}     = 1 if $origtext =~ m/Année/;
		$self->{insideSynopsis} = 1 if $origtext =~ m/Résumé/;
                $self->{insideOriginal} = 1 if $origtext =~ m/Titre original/;
            }

        }
    }

    sub new
    {
        my $proto = shift;
        my $class = ref($proto) || $proto;
        my $self  = $class->SUPER::new();

        $self->{hasField} = {
            title    => 1,
            date     => 1,
            director => 1,
            actors   => 1,
        };

        $self->{isInfo}  = 0;
        $self->{isMovie} = 0;
        $self->{curName} = undef;
        $self->{curUrl}  = undef;

        bless($self, $class);
        return $self;
    }

    sub preProcess
    {
        my ($self, $html) = @_;

        return $html;
    }

    sub getSearchUrl
    {
        my ($self, $word) = @_;

        return "http://www.moviecovers.com/multicrit.html?titre=$word";
    }

    sub getItemUrl
    {
        my ($self, $url) = @_;

        return "http://www.moviecovers.com" . $url;
    }

    sub getName
    {
        return "MovieCovers.com";
    }

    sub getAuthor
    {
        return 'Patrick Fratczak';
    }

    sub getLang
    {
        return 'FR';
    }

    sub getCharset
    {
        return "ISO-8859-1";
    }
}

1;

Voilà ce qui me permet enfin d'utiliser les informations de très bonnes qualités du site moviecovers.com.

En espérant que cela puisse profiter à d'autres.

Hors ligne

#53 Le 01/05/2017, à 11:09

coucou123

Re : Suivi des plugins de GCstar

Bonjour,

Est-ce que quelqu'un a une version du plugin de récupération de données GCNooSFere.pm qui fonctionne ?

Dernière modification par coucou123 (Le 01/05/2017, à 11:09)

Hors ligne

#54 Le 03/05/2017, à 12:02

kerenoc

Re : Suivi des plugins de GCstar

coucou123 a écrit :

Est-ce que quelqu'un a une version du plugin de récupération de données GCNooSFere.pm qui fonctionne ?

J'essaie de tracer les évolutions de GCstar qui sont en avance sur la distribution officielle dans un dépôt GitLab. Attention : certains plugins utilisent maintenant TLS/HTTPS et il faut aussi mettre à jour d'autres fichiers de GCstar (de mémoire, a priori, GCplugins.pm et GCPluginsBase.pm).

Hors ligne

#55 Le 03/05/2017, à 12:12

kerenoc

Re : Suivi des plugins de GCstar

@2emeagauche

Merci pour la mise à jour du plugin Moviecovers que j'ai intégré à mon dépôt GitLab. Dans mon environnement l'URL des images ne fonctionnait pas car cela correspond sans doute à une version en cache qu'il faut générer. J'ai donc modifié le fichier

                   "http://moviecovers.com/getjpg.html/" . $src;
                   #"http://moviecovers.com/DATA/zipcache/" . $src;

Hors ligne

#56 Le 03/05/2017, à 19:02

coucou123

Re : Suivi des plugins de GCstar

kerenoc a écrit :
coucou123 a écrit :

Est-ce que quelqu'un a une version du plugin de récupération de données GCNooSFere.pm qui fonctionne ?

J'essaie de tracer les évolutions de GCstar qui sont en avance sur la distribution officielle dans un dépôt GitLab. Attention : certains plugins utilisent maintenant TLS/HTTPS et il faut aussi mettre à jour d'autres fichiers de GCstar (de mémoire, a priori, GCplugins.pm et GCPluginsBase.pm).


Merci !
j'ai mis à jour le GCNoosFere.pm, mais je n'ai pas l'image des couvertures....

Hors ligne

#57 Le 03/05/2017, à 20:01

kerenoc

Re : Suivi des plugins de GCstar

Cela fonctionne de mon côté : il faut aussi mettre à jour GCMainWindow.pm

Hors ligne

#58 Le 04/05/2017, à 07:30

coucou123

Re : Suivi des plugins de GCstar

kerenoc a écrit :

Cela fonctionne de mon côté : il faut aussi mettre à jour GCMainWindow.pm

Ah oui, ça marche, du coup !
Merci !

Par contre, on n'a pas l'image dans l'aperçu. (ce qui est fort dommage, car c'est parfois le seul moyen de différencier certaines éditions).

Hors ligne

#59 Le 05/05/2017, à 23:01

kerenoc

Re : Suivi des plugins de GCstar

coucou123 a écrit :

Par contre, on n'a pas l'image dans l'aperçu. (ce qui est fort dommage, car c'est parfois le seul moyen de différencier certaines éditions).

Actuellement le plugin n'est pas optimisé et donc n'est pas vraiment sympa avec le serveur nooSFere car il va chercher inutilement toutes les pages web des livres pour construire la liste qui est proposée au choix. Si en plus, il allait récupérer toutes les images, il pourrait alors risquer de se faire "blacklister"!

Hors ligne

#60 Le 06/05/2017, à 05:57

coucou123

Re : Suivi des plugins de GCstar

Ok, merci pour l'explication ! smile

Hors ligne

#61 Le 16/05/2017, à 10:31

coucou123

Re : Suivi des plugins de GCstar

Salut, merci pour toutes ces MàJ !

Pour le plugin  GCtrictrac.pm , les champs "mécanique(s)" et "thème(s)" ne sont pas remplis.
(de plus il faudrait un champ "Caractéristique(s)", mais ça, je pense qu'il faut plutôt demander au dev de GCstar, non ?

Extrit de la page "Détails" d'un jeu :
1494927046.png

Hors ligne

#62 Le 16/05/2017, à 17:14

kerenoc

Re : Suivi des plugins de GCstar

A priori, il n'est pas forcément nécessaire de faire intervenir le dev GCstar car il y a deux niveaux de paramétrisation:
- les modèles qui décrivent les informations spécifiques à chaque type de collection
- les plugins qui alimentent les modèles.

Pour les jeux de société, le champ "Famille du jeu" pourrait éventuellement héberger les infos sur les caractéristiques;

Hors ligne

#63 Le 16/05/2017, à 17:16

coucou123

Re : Suivi des plugins de GCstar

kerenoc a écrit :

A priori, il n'est pas forcément nécessaire de faire intervenir le dev GCstar car il y a deux niveaux de paramétrisation:
- les modèles qui décrivent les informations spécifiques à chaque type de collection
- les plugins qui alimentent les modèles.

Pour les jeux de société, le champ "Famille du jeu" pourrait éventuellement héberger les infos sur les caractéristiques;

Ah oui, tout à fait d'accord pour "famille du jeu".
Est-ce tu as prévu une modification du plugin prochainement ?

Hors ligne

#64 Le 18/05/2017, à 15:00

kerenoc

Re : Suivi des plugins de GCstar

coucou123 a écrit :

Est-ce tu as prévu une modification du plugin prochainement ?

Euh, pas vraiment. Plutôt qu'enrichir des plugins particuliers, j'essaie plutôt de collecter ce qui permet de faire remarcher ceux qui subissent des évolutions de leur site web. Par exemple ma priorité actuelle serait plutôt de rétablir le fonctionnement de Réservoir Jeux.

Pour faire des évolutions, si on est capable de se repérer dans un fichier HTML, on arrive à retrouver ses petits dans le code des plugins et à faire les modifications incrémentales. Il y a quelques posts dans les forums qui expliquent un peu la démarche.

Hors ligne

#65 Le 18/05/2017, à 18:42

coucou123

Re : Suivi des plugins de GCstar

Non, désolé, je ne sais pas faire ça.
Dans quels forums est-ce expliqué ?

Dernière modification par coucou123 (Le 18/05/2017, à 18:42)

Hors ligne

#66 Le 20/05/2017, à 08:36

kerenoc

Re : Suivi des plugins de GCstar

Varkolac a posté des informations au début de ce forum (message #8 et #15). Il y a aussi le forum de GCstar et des pages du wiki pour contributeurs

Hors ligne

#67 Le 11/06/2017, à 16:19

coucou123

Re : Suivi des plugins de GCstar

Bonjour,
le plugin de Amazon FR pour les livres semble ne plus fonctionner (GCAmazonFR.pm).

EDIT : il semblerait que le plugin de la FNAC (fr) ne fonctionne plus non plus. Ainsi que les plugins Le-livre et Chapitre.com.

Dernière modification par coucou123 (Le 11/06/2017, à 16:21)

Hors ligne

#68 Le 12/06/2017, à 11:03

kerenoc

Re : Suivi des plugins de GCstar

Bonjour,

en utilisant la branche Test de mon dépôt GitLab, je peux toujours récupérer des infos sur les sites français pour les livres. Dommage que la version officielle ne suive pas en termes de mises à jour.

Hors ligne

#69 Le 12/06/2017, à 11:11

coucou123

Re : Suivi des plugins de GCstar

Salut Kerenoc !

Ah ok, du coup il vaut mieux que je remplace tous les fichiers d'origine de GCStar par ceux de ton dépôt ?

Hors ligne

#70 Le 12/06/2017, à 13:22

kerenoc

Re : Suivi des plugins de GCstar

@coucou123

Dans mon dépôt j'essaie de tracer toutes les évolutions de GCstar (dont les miennes) qui ne sont pas encore intégrées dans le SVN officiel du projet. Le plus simple est effectivement de simplement copier tous les scripts.

Hors ligne

#71 Le 12/06/2017, à 15:23

coucou123

Re : Suivi des plugins de GCstar

D'accord. Mais les chemins des scripts ne sont pas indiqués ?
Pour tout ce qu'il y a dans "lib", ok, je sais où c'est, mais pour "bin", "man", "packages", "templates", etc... ?

Dernière modification par coucou123 (Le 12/06/2017, à 15:24)

Hors ligne

#72 Le 12/06/2017, à 17:55

kerenoc

Re : Suivi des plugins de GCstar

A partir d'une installation qui marche, les seules modifications faites pour l'instant sont dans "lib/gcstar" à récupérer dans l'archive GitLab.

Hors ligne

#73 Le 12/06/2017, à 19:24

coucou123

Re : Suivi des plugins de GCstar

Ok, super, merci ! Ça fonctionne parfaitement maintenant !
Et Tian ne souhaite pas se baser sur ton travail pour faire une version "officielle" à jour ?

Hors ligne

#74 Le 12/06/2017, à 21:28

kerenoc

Re : Suivi des plugins de GCstar

coucou123 a écrit :

Et Tian ne souhaite pas se baser sur ton travail pour faire une version "officielle" à jour ?

Je suppose que c'est par manque de temps qu'il n'a pas pu replonger dans GCstar depuis quelques mois.

Hors ligne

#75 Le 21/07/2017, à 23:34

kerenoc

Re : Suivi des plugins de GCstar

Bonsoir,

Le serveur Gna.org qui hébergeait le dépôt maitre de GCstar a été arrêté en mai. Les sources du programme principal sont toujours disponibles (dans les packages Linux, sur Launchpad ou Gitlab).

Pour les applications compagnons sur Android, ma dernière synchronisation date de fin 2015. Si quelqu'un a sauvegardé des versions plus récentes, je suis preneur. Cela permettrait de rendre disponible les sources du Viewer conformément à sa licence GPL. Le Scanner n'a ni copyright ni licence mais ne fait qu'environ 160 lignes de Java : il faut donc avoir l'accord de Christian Jodar l'auteur officiel sur Google Play.

Longue vie à GCstar et à ses fidèles utilisateurs!
.

Hors ligne