PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → WINDEV ET FONCTIONS DLNA
WINDEV ET FONCTIONS DLNA
Débuté par fabiencanal, 30 juil. 2016 09:37 - 8 réponses
Posté le 30 juillet 2016 - 09:37
Bonjour à tous,

Voilà, j'essaye d'utiliser les fonctions DLNA de Windev mais sans succès.

En fait j'aurai juste besoin de lister le contenu d'une bibliothèque UPNP.
Il existe des fonctions DLNA dans Windev mais qui ne semble pas stable.

Par exemple la fonction UPNPListePériphérique qui est censé listé tous les périphériques DLNA ne le fait qu'une fois sur 10 chez moi. Parfois elle ne trouve aucun périphériques, parfois un seul, etc. J'ai beau essayé sur différent ports, ou en augmentant le temps de recherche, mais rien à faire.

De plus même lorsque je trouve mon périphérique (Un NAS Synology), il n'existe pas de fonction permettant de lister le contenu partagé par un périphérique DLNA. (Pas à ma connaissance en tout cas)

Est-ce que quelqu'un connaitrait une astuce pour faire ce listing ? Ou aurait développé une application qui fait ce genre de choses?

Merci d'avance.
Posté le 03 août 2016 - 11:40
Please HELP !
Membre enregistré
953 messages
Posté le 03 août 2016 - 15:47
bonjour,

avez vous regardez du côté du dépôt de source , si quelqu'un avait déjà proposé un outil ??
=> http://http://depot.pcsoft.fr/

Sinon, pour vos soucis de liste UPNP, peu être un simple problème de FireWall , temps sur votre poste que le NAS Synology.....

Mais mieux vaux, stocker l'UUID de votre périphérique UPNP.

( membre .NomUnique de la variable upnpperipherique )


Sinon, ( je n'ai pas de code complet à vous fournir désolé ), mais voici un petit bout de code pour lire la racine d'un périphérique UPNP.
Il faut utiliser le service : urn:schemas-upnp-org:service:ContentDirectory:1
( donc s'assurer avant que votre périphérique possède ce service... )
dont voici la documentation :
http://upnp.org/specs/av/UPnP-av-ContentDirectory-v1-Service.pdf

_tab_upnp_periph est un tableau de upnpPériphérique
_tab_upnp_periph = UPNPListePériphérique("upnp:rootdevice",51300)
SI ErreurDétectée ALORS
Info(ErreurInfo(errComplet))
SINON
POUR TOUT _upnp_periph DE _tab_upnp_periph
Trace(_upnp_periph.Nom)
Trace(_upnp_periph.NomUnique)

POUR TOUT _service DE _upnp_periph.Service
Trace("Service type : "+_service.Type)
Trace("Service URL Control : "+_service.URLContrôle)

SI _service.Type="urn:schemas-upnp-org:service:ContentDirectory:1" ALORS
_browse_result est un tableau de chaîne=UPNPExecuteAction(_service,"Browse",0,"BrowseDirectChildren","*",0,0,"")
SI PAS ErreurDétectée ALORS
Trace("Browse Result : ")
POUR TOUT _result DE _browse_result
Trace(_result)
FIN
FIN
FIN
FIN
FIN


Le premier paramètre correspond à l'Object ID , 0 = la racine.
Vous allez obtenir une chaine XML , avec toutes les informations....
il va falloir par contre éplucher la doc !!! :(

Voici un exemple de résultat que j'obtiens en se connectant sur un Universal Media Server :

<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/"><container id="302" childCount="1" parentID="0" restricted="true"><dc:title>Joué récemment</dc:title><upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="PNG_TN">http://192.168.254.99:5001/get/302/thumbnail0000Jou%C3%A9+r%C3%A9cemment</upnp:albumArtURI><upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="PNG_TN">http://192.168.254.99:5001/get/302/thumbnail0000Jou%C3%A9+r%C3%A9cemment</upnp:albumArtURI><upnp:class>object.container.storageFolder</upnp:class></container><container id="303" childCount="1" parentID="0" restricted="true"><dc:title>Nouveau média</dc:title><upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="PNG_TN">http://192.168.254.99:5001/get/303/thumbnail0000Nouveau+m%C3%A9dia</upnp:albumArtURI><upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="PNG_TN">http://192.168.254.99:5001/get/303/thumbnail0000Nouveau+m%C3%A9dia</upnp:albumArtURI><upnp:class>object.container.storageFolder</upnp:class></container><container id="304" childCount="1" parentID="0" restricted="true"><dc:title>Chris</dc:title><upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="JPEG_TN">http://192.168.254.99:5001/get/304/thumbnail0000Chris</upnp:albumArtURI><upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="JPEG_SM">http://192.168.254.99:5001/get/304/thumbnail0000Chris</upnp:albumArtURI><dc:date>2016-07-29T12:06:40</dc:date><upnp:class>object.container.storageFolder</upnp:class></container><container id="305" childCount="6" parentID="0" restricted="true"><dc:title>Web</dc:title><upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="JPEG_TN">http://192.168.254.99:5001/get/305/thumbnail0000Web</upnp:albumArtURI><upnp:albumArtURI xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" dlna:profileID="JPEG_SM">http://192.168.254.99:5001/get/305/thumbnail0000Web</upnp:albumArtURI><upnp:class>object.container.storageFolder</upnp:class></container></DIDL-Lite>


Mais, il existe très certainement des composants .NET tout prêt à l'emploi, que vous pourriez intégrer dans votre projet.... pour vous éviter de tout recoder.....

bon courage en tout cas et bon dèv
Posté le 02 novembre 2016 - 15:45
Bonjour Christophe,
Merci pour votre réponse (Je viens juste de la voir...)

J'ai beau essayé, mais je n'arrive pas à avoir des résultats stables.
J'écris ça:

Télé est un upnpPériphérique
Télé = UPNPCherchePériphérique("uuid:4D454930-0100-1000-8001-20C6EBC55A46", 51300)
SI ErreurDétectée ALORS
Info(ErreurInfo(errComplet))
SINON
Trace(Télé.Nom)
FIN

ça ne marche que une fois sur 10.

Je ne pense pas que ça vienne de mon Firewall, j'ai autorisé tout ce qu'il était possible d'autorisé...
Membre enregistré
953 messages
Posté le 02 novembre 2016 - 17:58
bonjour Fabien,

mieux vaut entièrement désactiver votre FireWall pour être certain que cela ne vient pas de là....

c'est un FireWall windows ?
Posté le 03 novembre 2016 - 12:58
Bonjour Christophe,
Oui il s'agit du "simple" firewall de Windows 7.
Je vais le désactiver complètement mais j'ai peur que ça ne change rien...
Merci quand même de votre aide.
Posté le 04 novembre 2016 - 22:18
Bonjour,
Même avec le pare feu désactivé, je n'ai pas de résultats stables.
Parfois ça liste mes périphériques, parfois non!
Membre enregistré
962 messages
Posté le 06 novembre 2016 - 12:35
hello,
voir ici : http://www.developpez.net/forums/d1553570/environnements-developpement/windev/utilisation-upnp-dlna/…
une solution possible en assemblage dotnet.

--
Ami calmant, J.P
Posté le 11 novembre 2016 - 16:20
Bonjour Jurassic Porc,

Merci bien !
Je vais essayer ça.