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

Python Discussion :

Parse Liquidsoap metadata


Sujet :

Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut Parse Liquidsoap metadata
    Salut !

    J'utilise l'excellent moteur de streaming LiquidSap, mais j'ai un peu de mal avec le résultat de la commande alsa.metadata du serveur telnet.

    Voici un exemple de sa sortie:

    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
    --- 10 ---
    source_url="http://liquidsoap.local:8020/radio"
    title="anastacia - lumere lumera"
    --- 9 ---
    source_url="http://liquidsoap.local:8020/radio"
    title="bob tostes - strangers in the night"
    --- 8 ---
    source_url="http://liquidsoap.local:8020/radio"
    title="lucio battisti - amarsi un po"
    --- 7 ---
    source_url="http://liquidsoap.local:8020/radio"
    title="george white group - nothing compares to you"
    --- 6 ---
    source_url="http://liquidsoap.local:8020/radio"
    title="olivia - true colors"
    --- 5 ---
    source_url="http://liquidsoap.local:8020/radio"
    title="ritmo del mundo - what s love got to do with it"
    --- 4 ---
    source_url="http://liquidsoap.local:8020/radio"
    title="tania maria - come with me"
    --- 3 ---
    source_url="http://liquidsoap.local:8020/radio"
    title="antonio carlos jobim a sting - how insentive"
    --- 2 ---
    source_url="http://liquidsoap.local:8020/radio"
    title="dht - driver s seat"
    --- 1 ---
    source_url="http://liquidsoap.local:8020/radio"
    title="marg nelson - lady marmelade"
    Il ne ressemble à aucun format connu .. csv, json, xml ...
    Pouvez-vous me dire comment je pourrais faire un tableau Python?

    exemple de structure du tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [10] => [source_url] => "http://liquidsoap.local:8020/radio", [title] => "anastacia - lumere lumera",
    [9] => [source_url] => "http://liquidsoap.local:8020/radio", [title] => "bob tostes - strangers in the night"
    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par mickael.be Voir le message
    Il ne ressemble à aucun format connu .. csv, json, xml ...
    Pouvez-vous me dire comment je pourrais faire un tableau Python?
    Ce que vous montrez, c'est juste des lignes de texte qui, groupées par 3, constituent une unité d'information cohérente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    --- 10 ---
    source_url="http://liquidsoap.local:8020/radio"
    title="anastacia - lumere lumera"
    d'où vous voulez sortir les "champs":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    --- 10 ---
    source_url="http://liquidsoap.local:8020/radio"
    title="anastacia - lumere lumera"
    i.e. le tuple (10, "http://liquidsoap.local:8020/radio", "anastacia - lumere lumera")Donc vous écrivez une fonction get_blocks qui découpe les lignes en blocks de 3 et retourne une liste de "blocks" (qui pourraient être liste de lignes). Puis vous appliquez à chaque block une fonction get_data qui récupérera les données qui vous intéressent dans chaque block.

    Cela fait, c'est tout simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for block in get_blocks(data):
         print (get_data(block))
    Reste juste à écrire les fonctions get_blocks et get_data (ou montrer ce que vous avez essayé de faire si vous rencontrez des difficultés)

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    pour le moment, tout ce que suis arrivé à faire c'est avec une regex.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    regex = r'title="([^"]+)"'
        for m in re.finditer(regex, telnetResult):
            print m.group(1)
    ça me retourne tous les title.
    mais c'est pas sale une regex ? y'a pas mieux ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par mickael.be Voir le message
    mais c'est pas sale une regex ? y'a pas mieux ?
    Une regex n'est ni propre, ni sale... mais elle peut être utilisée salement
    Soit vous savez les utilisez et il va falloir attraper un peu plus que "title=..." soit vous utilisez les fonctionnalités de bases sur les chaînes de caractères i.e. vous le faites avec les outils que vous maîtrisez le mieux (comme indiqué dans ma réponse précédente).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Probleme de parsing de chaine, tronquer une chaine
    Par Voodo'o_d'ool dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/08/2008, 11h28
  2. Parsing et caractères spéciaux
    Par Shogun dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/10/2004, 17h43
  3. Réponses: 14
    Dernier message: 25/10/2004, 21h33
  4. conversion String en Date (parse trop permissif)
    Par ciloulou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/09/2004, 18h36
  5. [XML] Améliorer le parsing
    Par GLDavid dans le forum Modules
    Réponses: 3
    Dernier message: 19/07/2004, 16h46

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