PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → [WD10] Remplir une listbox depuis un fichier m3u
[WD10] Remplir une listbox depuis un fichier m3u
Débuté par ltdnico, 10 jan. 2006 13:35 - 10 réponses
Posté le 10 janvier 2006 - 13:35
Bonjour,

Je suis débutant en WinDev et j'aimerais savoir si je peux faire ceci :

Dans mon programme, je souhaiterais que la listbox Liste1 se remplisse à
l'aide des données contenues dans le fichier suivant :
http://www.listetv.monsite.com/playlist.m3u

Voici la structure de ce fichier, je vais détailler plus bas ce que je
voudrais sélectioner comme item de ma liste ainsi que l'action à faire
lors de la sélection d'un item puis le clic sur le bouton Bouton1.

#EXTM3U
#EXTINF:0,2 - France 2
rtsp://listetv.monsite.com/201
#EXTINF:0,3 - France 3 national
rtsp://listetv.monsite.com/202
#EXTINF:0,5 - France 5
rtsp://listetv.monsite.com/203
....

En gros, je veux que mes items soient affichés comme ceci :
2 - France 2
3 - France 3 national
5 - France 5

Je veux que lorsque je clique sur un item puis sur le bouton Bouton1,
l'adresse rtsp:// correspondant à l'item soit mise dans une variable
dans le but de l'envoyer à un programme tiers.

Est-ce possible ? Quelqu'un d'expérimenté aurait-il une solution ?
Posté le 10 janvier 2006 - 16:23
Personne n'a de solution ?
Posté le 11 janvier 2006 - 09:47
Salut,

je veux bien t'aider mais j'ai besoin de savoir qu'est-ce que tu n'es pas
capable de faire au juste?

Mathieu
Posté le 11 janvier 2006 - 10:32
tu comptes faire du streaming???
ca m'interesse

NiCo avait prétendu :
Bonjour,

Je suis débutant en WinDev et j'aimerais savoir si je peux faire ceci :

Dans mon programme, je souhaiterais que la listbox Liste1 se remplisse à
l'aide des données contenues dans le fichier suivant :
http://www.listetv.monsite.com/playlist.m3u

Voici la structure de ce fichier, je vais détailler plus bas ce que je
voudrais sélectioner comme item de ma liste ainsi que l'action à faire
lors de la sélection d'un item puis le clic sur le bouton Bouton1.

#EXTM3U
#EXTINF:0,2 - France 2
rtsp://listetv.monsite.com/201
#EXTINF:0,3 - France 3 national
rtsp://listetv.monsite.com/202
#EXTINF:0,5 - France 5
rtsp://listetv.monsite.com/203
...

En gros, je veux que mes items soient affichés comme ceci :
2 - France 2
3 - France 3 national
5 - France 5

Je veux que lorsque je clique sur un item puis sur le bouton Bouton1,
l'adresse rtsp:// correspondant à l'item soit mise dans une variable
dans le but de l'envoyer à un programme tiers.

Est-ce possible ? Quelqu'un d'expérimenté aurait-il une solution ?



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Posté le 11 janvier 2006 - 11:29
Pierre BOUSQUET a écrit :
tu comptes faire du streaming???
ca m'interesse



Oui, en gros c'est pour créer un logiciel de lecture et enregistrements
des flux vidéos de la freebox. En effet, free propose à ses abonnés
disposant du service télévision un service pour regarder la télévision
depuis leur ordinateur. Pour cela, il faut utiliser Video LAN Client
(VLC média player).

Moi j'aimerais récupérer les flux pour les enregister. Hors, il suffit
dans le cas présent de récupérer la liste des flux (le fichier m3u) dans
une listbox. Lorsque l'utilisateur clique sur France 3 puis sur
regarder, cela ouvre VLC avec en paramètre l'url donnée par le m3u. Pour
l'enregistrement, c'est le même système sauf que les paramètres de VLC
changent.

Donc ce que je n'arrive pas à faire :
- Récupérer le m3u sur l'ordinateur client;
- Traiter le m3u et supprimer les informations inutiles;
- Remplir la liste avec les informations souhaitées;
- Faire en sorte que lors d'un clic sur France 3 (exemple) l'url
(rtsp://machintruc) correspondant à France 3 soit enregistrée dans une
variable.

Voià, j'espère avoir été assez clair.

Mathieu, j'ai également vu votre réponse et je souhaite que ces
renseignements vous suffiront pour m'aider.

Cordialement.
Posté le 11 janvier 2006 - 12:03
ca tombe bien je l'ai fait hier soir...
pour récupérer le m3u c simple j'ai utilisé un logiciel de DL type DAP
et j'ai récupéré le fichier en dur
pour lire le fichier (fOuvre()):
- ignorer la premiere ligne
- lignes paires = nom de la chaine
(Extraitchaine(fLitLigne(IdFichier),2,"-")
- lignes impaires le fLitLigne() récupère le rtsp://

maintenant reste à se connecter au flux, c une autre paire de manches,
hier j'ai simplement mis un champ conf avec une adresse rtsp://, c pas
si simple...

NiCo avait écrit le 11/01/2006 :
Pierre BOUSQUET a écrit :
tu comptes faire du streaming???
ca m'interesse



Oui, en gros c'est pour créer un logiciel de lecture et enregistrements
des flux vidéos de la freebox. En effet, free propose à ses abonnés
disposant du service télévision un service pour regarder la télévision
depuis leur ordinateur. Pour cela, il faut utiliser Video LAN Client
(VLC média player).

Moi j'aimerais récupérer les flux pour les enregister. Hors, il suffit
dans le cas présent de récupérer la liste des flux (le fichier m3u) dans
une listbox. Lorsque l'utilisateur clique sur France 3 puis sur
regarder, cela ouvre VLC avec en paramètre l'url donnée par le m3u. Pour
l'enregistrement, c'est le même système sauf que les paramètres de VLC
changent.

Donc ce que je n'arrive pas à faire :
- Récupérer le m3u sur l'ordinateur client;
- Traiter le m3u et supprimer les informations inutiles;
- Remplir la liste avec les informations souhaitées;
- Faire en sorte que lors d'un clic sur France 3 (exemple) l'url
(rtsp://machintruc) correspondant à France 3 soit enregistrée dans une
variable.

Voià, j'espère avoir été assez clair.

Mathieu, j'ai également vu votre réponse et je souhaite que ces
renseignements vous suffiront pour m'aider.

Cordialement.



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Posté le 11 janvier 2006 - 12:52
Pierre BOUSQUET a écrit :
ca tombe bien je l'ai fait hier soir...
pour récupérer le m3u c simple j'ai utilisé un logiciel de DL type DAP
et j'ai récupéré le fichier en dur
pour lire le fichier (fOuvre()):
- ignorer la premiere ligne
- lignes paires = nom de la chaine
(Extraitchaine(fLitLigne(IdFichier),2,"-")
- lignes impaires le fLitLigne() récupère le rtsp://

maintenant reste à se connecter au flux, c une autre paire de manches,
hier j'ai simplement mis un champ conf avec une adresse rtsp://, c pas
si simple...


Ah oui, apparement je me suis mal exprimé. Mon appli devra en fait lire
le fichier depuis internet.

En fait :
- L'appli consulte le fichier à l'adresse suivante :
http://listetv.mosite.com/playlist.m3u (j'ai pas trouvé comment
télécharger directement avec une fonction windev)
- Elle stoque dans un fichier temporaire le contenu du fichier (je
suppose que c'est faisable facilement).
- Elle traite le fichier (là j'ai pas trop compris, pourriez vous donner
un exemple concret ? Je suis débutant, faut pas l'oublier :))
- On remplit la liste avec les informations souhaitées (le nom des chaînes)
- Lors d'un double clic sur un item de la liste, on envoie le rtsp://...
en paramètre à VLC (en fait, je suppose qu'il y a une fonction en
W-langage qui permet de lancer un programme tiers avec des paramètres
[C:\VLC\vlc.exe "params..."]), j'ai abandonné le bouton pour une
solution plus simple : Si Rec est cochée, le double clic sur l'item
entraîne l'enregistrement. Si ReadRec est cochée, on demande à VLC
d'enregistrer et d'afficher le flux. Cela permet de regarder le flux, de
l'enregistrer, ou de regarder et enregistrer en même temps.
- Lorsque l'on quitte le programme, le fichier temporaire est détruit.

Voilà, je pense avoir bien décrit le fonctionnement de ce que je
voudrais mais pas moyen d'y arriver pour le moment.
Merci pour votre aide :)
Posté le 11 janvier 2006 - 14:21
pour télécharger le fichier via HTTP il y a une procédure sympa ici :
http://www.windasso.org/cgi-bin/gesmod.exe…

sinon pour le lire

b est entier
ChaineLue est chaine
Id est entier = fouvre(Nomfichier)

Si Id=-1 ALORS RETOUR

//Sauter la 1ere ligne
flitligne(Id)
BOUCLE
b++
ChaineLue=flitligne(Id)
SI ChaineLue=EOT alors SORTIR
SI EstPair(b)
// ChaineLue=le nom de la chaine TV
SINON
// ChaineLue= le rtsp://
FIN
FIN
fFerme(Id)

NiCo avait soumis l'idée :
Pierre BOUSQUET a écrit :
ca tombe bien je l'ai fait hier soir...
pour récupérer le m3u c simple j'ai utilisé un logiciel de DL type DAP
et j'ai récupéré le fichier en dur
pour lire le fichier (fOuvre()):
- ignorer la premiere ligne
- lignes paires = nom de la chaine
(Extraitchaine(fLitLigne(IdFichier),2,"-")
- lignes impaires le fLitLigne() récupère le rtsp://

maintenant reste à se connecter au flux, c une autre paire de manches,
hier j'ai simplement mis un champ conf avec une adresse rtsp://, c pas
si simple...


Ah oui, apparement je me suis mal exprimé. Mon appli devra en fait lire
le fichier depuis internet.

En fait :
- L'appli consulte le fichier à l'adresse suivante :
http://listetv.mosite.com/playlist.m3u (j'ai pas trouvé comment
télécharger directement avec une fonction windev)
- Elle stoque dans un fichier temporaire le contenu du fichier (je
suppose que c'est faisable facilement).
- Elle traite le fichier (là j'ai pas trop compris, pourriez vous donner
un exemple concret ? Je suis débutant, faut pas l'oublier :))
- On remplit la liste avec les informations souhaitées (le nom des chaînes)
- Lors d'un double clic sur un item de la liste, on envoie le rtsp://...
en paramètre à VLC (en fait, je suppose qu'il y a une fonction en
W-langage qui permet de lancer un programme tiers avec des paramètres
[C:\VLC\vlc.exe "params..."]), j'ai abandonné le bouton pour une
solution plus simple : Si Rec est cochée, le double clic sur l'item
entraîne l'enregistrement. Si ReadRec est cochée, on demande à VLC
d'enregistrer et d'afficher le flux. Cela permet de regarder le flux, de
l'enregistrer, ou de regarder et enregistrer en même temps.
- Lorsque l'on quitte le programme, le fichier temporaire est détruit.

Voilà, je pense avoir bien décrit le fonctionnement de ce que je
voudrais mais pas moyen d'y arriver pour le moment.
Merci pour votre aide :)



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Posté le 11 janvier 2006 - 15:18
Merci pour la réponse, je vais voir ce que je peux faire :)

Pierre BOUSQUET a écrit :
pour télécharger le fichier via HTTP il y a une procédure sympa ici :
http://www.windasso.org/cgi-bin/gesmod.exe…

sinon pour le lire

b est entier
ChaineLue est chaine
Id est entier = fouvre(Nomfichier)

Si Id=-1 ALORS RETOUR

//Sauter la 1ere ligne
flitligne(Id)
BOUCLE
b++
ChaineLue=flitligne(Id)
SI ChaineLue=EOT alors SORTIR
SI EstPair(b)
// ChaineLue=le nom de la chaine TV
SINON
// ChaineLue= le rtsp://
FIN
FIN
fFerme(Id)
Posté le 11 janvier 2006 - 18:30
Le plus simple pour recuperer un fichier c'est de la manière suivante:

SI HTTPRequête("http://listetv.mosite.com/playlist.m3u") ALORS
fSauveTexte("playlist.m3u",HTTPDonneRésultat(HTTPRésultat))
SINON
Erreur(ErreurInfo(errComplet))
FIN


Ensuite pour ce qui est de te liste,
lorsque tu utilises le listeajoute, ajoute un glien. C'est la meilleur
facon de stocker l'adresse de ton flux.

Tu peux ensuite récupérer cette adresse de 2 manières:
nomliste..valeurmemorisee
ou
nomliste (tout simplement si tu as coché la case 'Retourne la valeur
spécifiée avec la fonction glien')

Mathieu
Posté le 11 janvier 2006 - 18:45
Ok merci pour les infos :)

Mathieu Kurth a écrit :
Le plus simple pour recuperer un fichier c'est de la manière suivante:

SI HTTPRequête("http://listetv.mosite.com/playlist.m3u") ALORS
fSauveTexte("playlist.m3u",HTTPDonneRésultat(HTTPRésultat))
SINON
Erreur(ErreurInfo(errComplet))
FIN


Ensuite pour ce qui est de te liste,
lorsque tu utilises le listeajoute, ajoute un glien. C'est la meilleur
facon de stocker l'adresse de ton flux.

Tu peux ensuite récupérer cette adresse de 2 manières:
nomliste..valeurmemorisee
ou
nomliste (tout simplement si tu as coché la case 'Retourne la valeur
spécifiée avec la fonction glien')

Mathieu