IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Récupérer guide des programmes [Débutant]


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2016
    Messages : 23
    Points : 20
    Points
    20
    Par défaut Récupérer guide des programmes
    Bonjour,
    Voici mon logiciel : http://forum-racacax.ga/viewtopic.php?f=69&t=1057
    Actuellement, j'utilise le guide des programmes de Play TV. Tout se fait sur mon serveur en PHP car je maitrise mieux. Mais actuellement, l'EPG est cherché sur le serveur à chaque fois que l'on clique sur une chaine et comme parfois, mon serveur tombe en panne, ce serait dommage pour les personnes ayant des playlists perso de patienter une plombe pour attendre que le serveur réponde où que l'erreur s'affiche.
    En PHP, actuellement, j'ai réussi à récupérer l'EPG de Télé Losirs (programme-tv.net). Cependant, j'essaie de le faire en VB. NET. J'ai fait en sorte que le logiciel télécharge toute les 100 secondes ça : http://www.programme-tv.net/programm...ce-moment.html et http://www.programme-tv.net/programm...ce-moment.html qu'il enregistre en local.

    Une chaine sur le programme TV ressemble à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     <div class="channel">
     
    <div class="channelItem">
        <span class="enliclass 1FC0C14F4CC14A4E4E431F42454A4649431FC0C14F4CC14A4E4E431EC1CB481E261E2A2C1945CB4E48 channel_logo" title="Programme de RTL 9">
                <img src="http://static.programme-tv.net/var/p/chaines/17.gif" alt="Le programme de RTL 9" class="channelLogoPrime" />
        </span>
     
        <a class="channel_label" href="/programme/chaine/programme-rtl-9-17.html" title="Programme de RTL 9">
            <span>Programme<br>RTL 9</span>
        </a>
    </div>
     
                                 <div class="programme">
     
     
    <div style="float:left;">
                            <a href="/cinema/14817-backdraft/" class="btn_play" title="Lancer la vidéo">Lancer la vidéo</a>
            		<span class="enliclass 1F424649434E4A1F2A2B252A2C1E414A42474BC14A44CB1F" title="Backdraft">
    			<img src="http://static.programme-tv.net/var/epgs/169/165x90/2/25517.jpg" alt="Cinéma : Backdraft" class="prime_broadcast_image" />
    		</span>
        </div>
    <div class="prog_desc">
        <span class="prog_heure">20:40</span>
        <span class="prog_type">Cinéma</span>
                <a href="/cinema/14817-backdraft/" class="prog_name" title="Backdraft">Backdraft</a>
     
     
                                <div class="grade_programs prime_grade_programs">
                        <div class="prime_grade_editorial">
                    <div class="star_editorial">
                    <ul>
                                                <li><img src="http://static.programme-tv.net/prog-tv/notation/star_full_red.png" alt=""  width="11px" /></li>
                                                <li><img src="http://static.programme-tv.net/prog-tv/notation/star_full_red.png" alt=""  width="11px" /></li>
                                                <li><img src="http://static.programme-tv.net/prog-tv/notation/star_full_red.png" alt=""  width="11px" /></li>
                                                                                                <li><img src="http://static.programme-tv.net/prog-tv/notation/star_empty.png" alt="" width="11px" /></li>
                                                        <li><img src="http://static.programme-tv.net/prog-tv/notation/star_empty.png" alt="" width="11px" /></li>
                                                                </ul>
                    </div>
                </div>
                </div>
     
     
     
                            <a href="/cinema/14817-backdraft/" class="btnTrailer">bande-annonce</a>
     
        <hr/>
        </div>            </div><!--/.programme-->
     
     
     
     
     
     
     
                                 <div class="programme">
     
     
    <div style="float:left;">
                            <a href="/cinema/121481-l-art-de-la-guerre/" class="btn_play" title="Lancer la vidéo">Lancer la vidéo</a>
            		<span class="enliclass 1F424649434E4A1F2A212A2B252A1E481E4AC1CB1E4B431E484A1E4CC343C1C1431F" title="L'art de la guerre">
    			<img src="http://static.programme-tv.net/var/epgs/169/165x90/54/541537.jpg" alt="Cinéma : L'art de la guerre" class="prime_broadcast_image" />
    		</span>
        </div>
    <div class="prog_desc">
        <span class="prog_heure">23:00</span>
        <span class="prog_type">Cinéma</span>
                <a href="/cinema/121481-l-art-de-la-guerre/" class="prog_name" title="L'art de la guerre">L'art de la guerre</a>
     
     
                                <div class="grade_programs prime_grade_programs">
                        <div class="prime_grade_editorial">
                    <div class="star_editorial">
                    <ul>
                                                <li><img src="http://static.programme-tv.net/prog-tv/notation/star_full_red.png" alt=""  width="11px" /></li>
                                                <li><img src="http://static.programme-tv.net/prog-tv/notation/star_full_red.png" alt=""  width="11px" /></li>
                                                                                                <li><img src="http://static.programme-tv.net/prog-tv/notation/star_empty.png" alt="" width="11px" /></li>
                                                        <li><img src="http://static.programme-tv.net/prog-tv/notation/star_empty.png" alt="" width="11px" /></li>
                                                        <li><img src="http://static.programme-tv.net/prog-tv/notation/star_empty.png" alt="" width="11px" /></li>
                                                                </ul>
                    </div>
                </div>
                </div>
     
     
     
                            <a href="/cinema/121481-l-art-de-la-guerre/" class="btnTrailer">bande-annonce</a>
     
        <hr/>
        </div>            </div><!--/.programme-->
     
     
     
     
     
     
                                                                                        </div>
    S'il n'y avait qu'un item, j'aurai su mais vu qu'il y en a plusieurs je ne trouve pas.

    J'aimerai bien récupérer la jaquette, les horaires de début et de fin (début du programme suivant) et le titre du programme en cours. En PHP, c'était facile, il suffisait de faire quelques explode et des strstr. Mais en VB. NET, je ne trouve pas.

    Pouvez-vous m'aider ?

    Merci

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    si tu veux juste transcrire ton code PHP en .NET :
    - l'équivalent d'explode est Split,
    - l'équivalent de strstr est IndexOf.
    Après tu peux aussi parser le XML pour avoir un arbre et le parcourir facilement, mais pas sûr que tu y gagnes beaucoup sur des petites sections de XML.

    Bon dev.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2016
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Salut,
    Merci mais j'ai testé split et IndexOf et malheureusement ça n'a pas fonctionné.

    Y-a-t-il des fonctions qui font "à partir de" et "jusqu'à" même s'il y a plusieurs occurrences ?

    Par exemple "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div> <span id="programme">Programme TF1</span> <span>Mes infos</span> </div> 
    <div> <span id="programme">Programme fr2</span> <span>Mes infos</span> </div>
    Si je veux récupérer les infos de TF1, en PHP, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $seg = explode('<span>Programme TF1</span>',$variable)[1]; // à partir de
    $seg = strstr($seg, '<span id="programme">', true); // jusqu'à
    Ici, j'ai déjà fait une chose, j'ai délimité le guide de TF1 donc il ne reste plus qu'à utiliser les mêmes fonctions pour récupérer le "Mes infos" de l'EPG.

    Mais comment faire à partir de et jusqu'à en VB.NET même s'il y a plusieurs occurrences de même valeur ? Il faudrait que ce soit la première occurrence qui soit comptabilisée.

    Merci d'avance

  4. #4
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2016
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Finalement j'ai opté pour une autre solution. J'ai intégré directement l'EPG dans la playlist. La playlist se télécharge toutes les 100 secondes et c'est bon.

  5. #5
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Il existe 2 fonctions bien pratiques pour obtenir du texte contenu entre 2 balises :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Private Function ParseBetween(Source$, Before$, After$) As String()
        Dim Results As New List(Of String)
        Dim T As New List(Of String)
        With T
            .AddRange(System.Text.RegularExpressions.Regex.Split(Source, Before))
            .RemoveAt(0)
            For Each Item$ In T
               Results.Add(System.Text.RegularExpressions.Regex.Split(Item, After)(0))
            Next
        End With
        Return Results.ToArray
    End Function
     
    Private Function ParseBetween(Source$, Before$, After$, Offset%) As String
        If String.IsNullOrEmpty(Source) Then 
            Return String.Empty
        End If
        If Source.Contains(Before) = True Then
            Dim Result$ = Source.Substring(Source.IndexOf(Before) + Offset)
            If Result.Contains(After) = True Then
                If Not String.IsNullOrEmpty(After) Then 
                    Result = Result.Substring(0, Result.IndexOf(After))
                End If
            End If
            Return Result
        Else
            Return String.Empty
        End If
    End Function
    Dans le cas où plusieurs occurrences seront probablement trouvées dans le contenu à parser il faut utiliser la fonction qui retourne un tableau de String (la 1ère fonction) :

    En partant du principe que tu veux obtenir le "Mes infos" de la chaîne "Programme TF1" (nom que tu connais déjà préalablement) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       Dim TextToParse = "<div> <span id=""programme"">Programme TF1</span> <span>Mes infos</span> </div>" & vbNewLine &
                                "<div> <span id=""programme"">Programme fr2</span> <span>Mes infos</span> </div>"
     
            Dim Result() As String = ParseBetween(TextToParse, "<span id=""programme"">Programme TF1</span> <span>", "</span>")
            For Each occur In Result
                MsgBox(occur)
            Next
    Tu peux parcourir le texte pour obtenir le nom des chaînes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       Dim TextToParse = "<div> <span id=""programme"">Programme TF1</span> <span>Mes infos</span> </div>" & vbNewLine &
                                "<div> <span id=""programme"">Programme fr2</span> <span>Mes infos</span> </div>"
     
      Dim Result() As String = ParseBetween(TextToParse, "<span id=""programme"">", "</span>")
            For Each occur In Result
                MsgBox(occur)
            Next
    A+

  6. #6
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2016
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Bonjour,
    Merci je vais tester

  7. #7
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Re,

    une autre solution, si tu arrives à détourer/trimer une partie du XML, serait d'utiliser les expressions régulières et les groupes de capture.
    Je dis ça juste pour info et compléter un peu le sujet ; si tu as un code fonctionnel pas besoin de t'embêter à travailler cette piste

    Bon dev
    Plus je connais de langages, plus j'aime le C.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2016
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    @wallace1 : Merci, ton code fonctionne très bien. Je ne vais pas l'utiliser pour le Guide des programmes car j'ai décidé de le faire autrement car étant donné qu'il y a aussi des chaines étrangères dans l'app, il faut le plus d'EPG mais je peux te garantir qu'il va beaucoup me servir pour améliorer mon logiciel.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2016
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Finalement il me sert pour récupérer la description du programme en cours et ça fonctionne très bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. AD : Récupérer les GUID des machines
    Par soad029 dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 30/07/2009, 15h42
  2. Intégrer des programmes dans une interface graphique avec GUIDE
    Par maserati222e dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 24/05/2007, 11h30
  3. Association des programmes aux fichiers: icônes
    Par jamesb dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/01/2005, 19h17
  4. existe t 'il des programme pour transformer les bases
    Par creazone dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 05/10/2004, 14h11
  5. guide des NURBS
    Par MrDuChnok dans le forum OpenGL
    Réponses: 7
    Dernier message: 10/01/2003, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo