[Projet commun]EPGfr (6 Viewers)

Scubefr

Portal Pro
May 19, 2004
8,603
4
ailleurs
Home Country
France France
il faudrait revenir un peu sur ce projet !

je pesne que si on choisi la solution que l'on a énoncé plus haut :

un serveur qui centralise a la fois les diferent serveur et les grabeur ...

Voila le fonctionnement du plugin tel que je l'entend :
  • le plugin permet de selectionné les chaines que l'on souhaite grabbé ( et d'attribué les chaine grabbé au chaine réél )
  • le plugin doit permettre de programmer la frequence du grabe ( comme le fait actuellement EPGfr)
  • le plugin se connecte sur le serveur recupere les nouvelle version des grabe (qaund il y a lieu)
  • le plugin selectionne le grab qui a eu le moins de visite et un compteur est ajoputé a ce grab
  • le plugin grab le site selectionné
  • le plugoin intergre les donnée grabbé dans la base de donné
si on par du plugin d'unknow les deux premier point et le dernier point existe déja
ce qui nous faut faire :
  1. trouver les site a graber
  2. choisir un format et crere les grabeurs
  3. creer le serveur qui centralise les requette du plugin et qui contiendra les nouveau grabeurs et les nouvelles version des grabeur ( comme ca pas besoin de modifier le plugin seul les grabeurs sont a modifier)
  4. finaliser le plugin
des volontaire ???
 
U

unknow21

Guest
Originally posted by Scubefr@14 Feb 2006, 16:19
Allez un petit effort !
unknow21 ?
<div align="right"><{POST_SNAPBACK}>
[/quote]
Dans le principe çà me parrait du tout bon..
Y'a des gens qui connaisse engrabber,parceqeue moi j'en pas la moindre idée de comment on fait?
Je suppose qui ne faut tout ce paluché et tout redevellopper doit avoir des trucs existants?
 

Scubefr

Portal Pro
May 19, 2004
8,603
4
ailleurs
Home Country
France France
ok, c'est cool ! donc il doit bien y avoir quelqu'un qui sais comment fabriquer un grabber utilisable par la suite dans le plugin ...
Cordwin ? tu peux peut etre nous expliquer comment marche le tien ... un systeme comme le tiens me parait tres tres bien et ca pour beaucoup de plugin ...
 
C

cordwin

Guest
En fait le principe de base d'un grabber est relativement simple :

1 - ou recuperes le le fichier source de la page.
2 - on analyse le fichier avec des expressions regulieres
3 - on formate le fichier en sortie.

un exemple de code :

Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Web;
using System.IO;
using System.Text.RegularExpressions;
using System.Net;
using System.Collections;


namespace Namespacedugrabber
{
    class Program
    {

       public static string LoadWebPageFromURL(String szURL)
        {
            // Chargement de la pages Web en se faisant passer pour un browser
            // On recuperes le contenu dans la chaine returnBuf
            String returnBuf = "";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(szURL);
            try
            {
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Encoding encode = Encoding.UTF8;
                Stream receiveStream = response.GetResponseStream();
                StreamReader readStream = new StreamReader(receiveStream, encode);
                returnBuf = readStream.ReadToEnd();
                response.Close();
                readStream.Close();
            }
            catch { }
           // nettoyage de caractères inutiles
            returnBuf = Regex.Replace(returnBuf, "(\r)+", "", RegexOptions.IgnoreCase); // on enleves les \r
            returnBuf = Regex.Replace(returnBuf, "(\n)+", "\n", RegexOptions.IgnoreCase); // on enleves les newline multiples
            returnBuf = Regex.Replace(returnBuf, "&(.*?);", "", RegexOptions.IgnoreCase);
            returnBuf = Regex.Replace(returnBuf, "<(/|)b>", "", RegexOptions.IgnoreCase);
            returnBuf = Regex.Replace(returnBuf, "<script(?:[^<^>]*?)>((?:.|\n)*?)</script(?:[^<^>]*?)>", "", RegexOptions.IgnoreCase);
            returnBuf = Regex.Replace(returnBuf, "<style(?:[^<^>]*?)>((?:.|\n)*?)</style(?:[^<^>]*?)>", "", RegexOptions.IgnoreCase);
            returnBuf = Regex.Replace(returnBuf, "<noscript(?:[^<^>]*?)>((?:.|\n)*?)</noscript(?:[^<^>]*?)>", "", RegexOptions.IgnoreCase);
            returnBuf = Regex.Replace(returnBuf, "<(meta)(?:[^<^>]*?)>", "", RegexOptions.IgnoreCase);
            return returnBuf;
        }

        public static void LoadSalle(String Salle)
        {
            String szPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
            String URL = String.Format("http://www.allocine.fr/seance/salle_gen_csalle={0}.html", Salle);
            WebClient HTTPClient = new WebClient();
            string result = LoadWebPageFromURL(URL);
            // Get MovieTheater name from Page
            String Pattern = "<title>(.*?)</title>";
            if (bVerbose) Console.Out.WriteLine(CleanHTMLTag(GetValue(result, Pattern)));
            XMLmovie_theater += String.Format("\t<where-to type=\"movie-theater\" id=\"{0}\" name=\"{1}\" />\n", Salle,CleanHTMLTag(GetValue(result, Pattern)));
            // On recupere la liste des films
            Pattern = @"<a class=""link1"" href=""/film/fichefilm_gen_cfilm=(\d*).ht"
                    + @"ml"">[img][/img]])*?/(\d*?).jpg)""(?:[^<^>]*?)alt="""
                    + @"([^<^>]*?)""(?:[^<^>]*?)/></a></td>(?:(?:.|\n)*?)<h5>([^<^>]"
                    + @"*?)</h5>((?:.|\n)*?)((?:(?:\s|\n*?)<tr><td(?:[^<^>]*?)""#F4F"
                    + @"4F4"">(?:(?:.|\n)*?)</table></td></tr>(?:\s|\n*?))+)";

            MatchCollection ListFilms = Regex.Matches(result, Pattern, 
            // A l issue de cette RegExp on a :
            // Champ 1 = ID    du film
            // Champ 2 = Image du film
            // Champ 3 = ID de l'image du film
            // Champ 4 = Titre du film
            // Champ 5 = Catégorie et durée du film format : xxxxx (duree)
            // Champ 6 = Zone contenant les notations et le casting, les recuperer dans la premiere RegEx serait trop couteux.
            // Champ 7 = Le reste, contenant les horaires a Parser.
RegexOptions.IgnoreCase );
            foreach (Match tmpMatch in ListFilms)
            {
                    String szTmpMovie="";
                    String szTmpShow = "";
                    String FilmID = CleanHTMLTag(tmpMatch.Groups[1].Value);
                    String FilmIMAGEURL = CleanHTMLTag(tmpMatch.Groups[2].Value);
                    String FilmIMAGELocal   = @"\covert-art\" + CleanHTMLTag(tmpMatch.Groups[3].Value)+".jpg";
                    String FilmTITRE = CleanHTMLTag(tmpMatch.Groups[4].Value);
                    String FilmCAT_DUREE = CleanHTMLTag(tmpMatch.Groups[5].Value);
                    String FilmNOTATION  = tmpMatch.Groups[6].Value;
                    String FilmHORAIRES  = tmpMatch.Groups[7].Value;
// formatter l'output ici ...
           }
       }
        static void Main(string[] args)
        {
            LoadSalle("C12345");
        }

Le problème en gros consiste a trouver la bonne expression reguliere pour capturer ce qui nous interesse.
Ca demandes de la patience et beaucoup de travail pour certains sites.

Et des que le site changes sont HTML : on ré ecrit ...

Maintenant on a peut être une autre piste de recherche. Qui est interessé par le fait que l'on regardes une emission TV : la chaine elle même. Quelqu'un a essayé de contacter les chaines officielles voir si elle ne pourraient pas tout simplement nous fournir un flux XML des programmes de la semaine ?

edit : tiens, vais envoyer un mail a TF1 pour voir !
 
B

benoit329

Guest

Users who are viewing this thread

Similar threads

Salut @azzuro , merci pour ta réponse Bin pour le moment il ne me le refait plus. Mais il faut dire que je suis passé de : -MP1 1.16 à MP1 1.23 -win7 à win10. -firedtv à wintv quadhd Et aussi, mon scythe 123812H-3000 était mort et je l'ai remplacé. Je voulais signaler que pour le moment je n'avais plus de problème. Mais je ne...
Salut @azzuro , merci pour ta réponse Bin pour le moment il ne me le refait plus. Mais il faut dire que je suis passé de : -MP1...
Bonsoir, Ces derniers temps j'ai un problème de chaine qui change. Je m'explique, je trouve une chaine à la place d'une autre. Je...
Replies
2
Views
7K
C'est le site de racacax donc, tu choisis racacax sur mon plugin et, ça le fait automatiquement.
C'est le site de racacax donc, tu choisis racacax sur mon plugin et, ça le fait automatiquement.
Bonjour à tous, Je vous propose le nouveau plugin XmlTvFR pour récupérer le guide télé français. Configuration du plugin XmlTvFR...
Replies
34
Views
22K
MP2 demande de définir les raccourcis qu'une seule fois sur le serveur. Toute information est sauvegardée dans une banque de donnés sur le serveur auquel les clients se connecte individuellement pour pouvoir utiliser cette info. Il suffit donc de sauvegarder cette banque de donnés avant de reinstaller le PC serveur. A première vue...
MP2 demande de définir les raccourcis qu'une seule fois sur le serveur. Toute information est sauvegardée dans une banque de donnés...
Bonjour à tous, Donc, je possède plusieurs pc répartis dans plusieurs pièces de la maison, mon serveur de fichiers (nommé...
Replies
3
Views
3K
Turns out any channel or group corruption will cause the manual control tab to not display without generating any visible error. There may be information in the log but I haven't found that yet either. In my case I had groupmap entries that did not have valid channels. Once I deleted the groupmap entries that didn't have a...
Turns out any channel or group corruption will cause the manual control tab to not display without generating any visible error...
Hi all, I have a long time running multiseat MediaPortal, with TVServer on separate computer. But since today, 'Manual Control'...
Replies
4
Views
2K
Bonjour à Tous ! Chez moi, le lien du guide brut ne fonctionne toujours pas, il fait 4 ko au lieu 55 mo :( Une solution ? Merci ;) Carpe Diem !
Bonjour à Tous ! Chez moi, le lien du guide brut ne fonctionne toujours pas, il fait 4 ko au lieu 55 mo :( Une solution ? Merci...
Bonjour, Je regarde un peu partout les forums et j'observe que les XML TV francophones se font de plus en plus rares. J'utilisais...
Replies
8
Views
34K
Top Bottom