MacgateTV Plugin

Plugin lecteur de chaine TV en Ligne
Bonjours à tous,

Je me lance, je me suis crée un petit plugin pour lire certaine chaine tv qui son disponible en ligne depuis plex, je le partage donc avec vous aujourd'hui.
Il n'est pas encore fini mais est suffisamment fonctionnel pour le moment.

Il y a actuellement 11 chaîne fonctionnel:
[list]

[*]BFM-TV
[*]i>Télé
[*]France 24
[*]Orange Sport (Pas toujours en disponible)
[*]Canal+ Sport (Pas toujours en disponible)
[*]Canal+ (Programmes en claire uniquement)
[*]Live Sport
[*]KTO
[*]Arianespace (Pas toujours en disponible)
[*]NASA TV
[*]Public Senat
[/list]

j'ai 5 chaînes non fonctionnel qui n’apparaisse pas mais dont j'ai les flux.
Pour problème lier à plex ou autre, je n’arrive pas à faire marcher ces flux...

[list]

[*]direct8 "rtmp://85.17.84.196:80/rtpdirect8live/live/live"
[*]LCP "rtmp://stream2.lcp.yacast.net/lcp_live/lcptnt
[*]NRJ 12 "mms://vipnrj.yacast.net/nrj_tv12"
[*]Renault TV "rtv.fms.visionip.tv/rtv/mp4:proF_CHA_NOM_NOP_2_3m_FIN_H264_640_360_1024.mp4"
[*]PlayerOne TV "rtmp://91.121.83.12:1935/live"
[/list]

j'ai enfin trouver 3 flux parfaitement lisible depuis Quicktime-player sur mac qui me permettre de lire 3 grand chaine en direct

[list]

[*]M6 en direct... "http://m6-apple-live.adaptive.level3.net/apple/m6replay_iphone/m6live/m6live.m3u8"
[*]NRJ12 en direct... "http://nrj-apple-live.adaptive.level3.net/apple/nrj/nrj/nrj12.m3u8"

[/list]
les 2 premier flux marche tout le temps dans Quicktime Player. Ces liste de lecture en .m3u8 son particulier elle son lier à des fichier video .ts de 10 seconde environ. Le fichier m3u8 va pare la suite s'actualiser tout les 60 seconde avec 6 nouvelle video TS, en gros c'est comme sa que je crois comprend le principe de fonctionnement de ces flux .m3u8 (je peut me tromper). Quicktime s'en accommode parfaitement alors que vlc lui a qu'elle que petit problème notamment pour M6 pas de son du tout. donc sur plex sa marche pas bien sur si quelqu’un y arrive sa m'interres...

Et enfin:

TF1 en direct avec ip française "http://live.iphone.tf1.fr.edgesuite.net/fr/master_iphone.m3u8?token=1300140770_598d7d7617420ad64eff67d67f1dcc4b"

Quand à ce flux il doit avoir le même fonctionnement mais il requiers ce token qui est composer "timestamp_quelque-chose-encoder-parMD5" je pense que la premier partie du toke le timstamp est est un timstamp plus 1 heure ce qui correspond à la période de validité du flux pour finir et le MD5 lui je n'est pas réussi à trouver ce qu'il encodait j'ai bien essayer plein de chose le "timstamp-1h" ou alors le "timstamp+timstamp-1h" j'ai essayer pas mal de truc mais en vain pour le moment, donc je n'arrive pas a générer la deuxième partie du token ce qui m’orrais permit de faire un générateur de lien pour le flux tf1 avec période de validité de 1h. de tout façon ses type de flux ne son pas encore gerer par plex que je sache donc si des personne on des idée sur ce sujet et comment lire ces flux dans plex sa pourrais faire un plugin très intéressent avec ces flux de très bonne qualité qui plus est.

Voilas j'espere que vous pourer m'aider à avancer dans ce projet.
tout ces flux son bien sur lisibles depuis l’étranger (saufe tf1 heureusement pour moi les vpn existes) c'est pour sa que j'ai fais ce plugin car je suis actuellement à Dublin je peut maintenant suivre les informations française et international sans problème ;)

Cordialement.

La question est "qui génère le token quand on utilise le player TF1 ?" Si c'est généré du coté client il faut désassembler (ou faire tourner dans un débugguer) le client pour comprendre comment marche le code qui génère le token et le re-écrire pour Plex (ca me semble la solution la plus probable). Si le token est généré par un service web (par exemple qui fait un redirect) : c'est plus simple, il faut juste faire la même requete et voir si ca marche. Pour tester ca tu peux utiliser fiddler, c'est un logiciel qui permet de voir les requetes HTTP faites.

Je vais un peu tester ce plugins dès que j'ai le temps, bonne chance pour la suite :)


je sais pas il est peut être générer coter serveur quoi que c'est possible que se soit dans l'app iPhone elle même si sa t'intéresse de décompiler une app iPhone pour tf1 c'est l'app gratuit tf1.fr
sinon pour mac fiddler sa marche pas c'est une appli windows7 si j'ai bien compris, mais j'ai "charles" comme équivalent sur mac. Le problème c'est que c'est dure de faire fonctionner ces app sur mon iPhone :/
Sinon ce qui serais cool serais de choper le code serveur c'est sur cette fois qui compare les token et voire comment il crée le token de comparaison et à ce moment la on fait la même chose en machine arrière et on refait le bon token mais j'arrive pas à trouver le service :/

Bref de tout façon tout sa ne servira à rien puisque ces flux ne son pour le moment pas lisible dans plex enfin je pense :unsure:

si tu as l’appli sur l’iphone et que tu veux observer ce qu’il se passe sur le réseau la solution facile c’est de brancher un mac avec internet sur la prise ethernet et de partager le réseau via l’airport. l’iphone se connecte à l’airport donc tout le traffic de l’iphone va passer à travers le mac. il suffit ensuite d’analyser le traffic sur le mac avec urlsnarf, wireshark ou tout autre logiciel du genre :slight_smile:

Salut!



D’autres m3u8 de chaînes françaises qui marchent dans QuickTime Player :



DirectStar : http://cupertino-streaming-1.hexaglobe.com/rtpdirectstarlive/smil:directstar-ipad.smil/playlist.m3u8

France24 : http://stream7.france24.yacast.net/iphone/france24/fr/iPad.f24_fr.m3u8

BFM TV : http://http5.iphone.yacast.net/iphone/bfmtv/bfmtv_ipad.m3u8

IDF1 : http://stream7.idf1.yacast.net/iphone/idf1/live01/idf1_live01hd.m3u8

NRJ Paris : http://nrj-apple-live.adaptive.level3.net/apple/nrj/nrj2/nrjparis.m3u8

NRJ Urban : http://nrjlive-apple-live.adaptive.level3.net/apple/nrj/nrjlive-1/nrjurban.m3u8

NRJ Dance : http://nrjlive-apple-live.adaptive.level3.net/apple/nrj/nrjlive-2/appleman.m3u8

NRJ Pure : http://nrjlive-apple-live.adaptive.level3.net/apple/nrj/nrjlive-3/appleman.m3u8

NRJ Pop Rock : http://nrjlive-apple-live.adaptive.level3.net/apple/nrj/nrjlive-4/appleman.m3u8

BFM Business : http://stream7.bfmbiz.yacast.net/iphone/bfmbiz/bfmbiz_live01.m3u8



Je voudrais bien pouvoirs faire sa sauf que je suis dans une sorte de résidence d’étudiant donc j'ai pas d’accès physique à la box pour me connecter en RJ45 tous se passent en wifi :/ Si quelqu'un pourrais se pencher sur sa et juste trouver comment est encodée la deuxième partie du token ou juste le fichier qui encode après je peut faire le code qui généra ce token automatiquement si vous voulez ;)



merci pour ces liens ;) Si tu arrive à trouvez quelque chose pour tf1 se serais cool ;)


Pour TF1 ça me paraît difficile, si c'était moi j'inclurais dans le code de l'appli iPhone un élément discriminant à faire passer dans le MD5, donc à moins d'avoir accès au source ça va être difficile (c'est prévu pour, en même temps). J'ai pas l'appli sous la main là, mais un truc bête à tenter c'est :

- itunes -> clic droit sur l'appli TF1 -> afficher dans le finder
- dupliquer l'appli TF1
- changer l'extension du fichier en .zip
- dézipper le fichier
- inspecter le contenu pour trouver une référence au MD5 quelque part...

Bon y'a peu de chances que ça donne quoi que ce soit mais ça vaut quand même le coup d'essayer. Le coup du sniffing réseau ça ne sert à rien, l'encryptage intervient avant l'envoi de la requête, au niveau de l'appli.

faut desassembler avec un ptit IDA Pro et voir ce que ca donne mais j’ai plus ca sous la main :slight_smile:



quand on charge l'url de tf1 dans firfox le serveur nous renvoie cette réponse :

Reference #18.5755293e.1300236338.23570ed


ce qui pourrais bien correspondre au code de référence utilise pour comparer, tout ce que je sais c'est que ce code change tout les seconde puisque il est lier au timstamp que l'on retrouve au milieux de de cette référence en l'occurrence "1300236338" si sa vous aide...

Sinon pour de-compiler voici l'app dans un zip, je l'ais extrait du ipa et virer tout les images inutile...

après faut utiliser http://otx.osxninja.com/ par exemple sur l'app dans le paquet "TF1.fr" se qui vous sortira de l’assembleur x86 et ensuite reste à trouver quelle que chose :(
sinon il y a .sh suspect dans le paquet mais je pense que c'est les développeur qui l'on laisser traîner la mais sa sert surment à rien.

peut-être une piste de réflexion, en regardant le direct de Direct8 sur http://www.direct8.fr/direct/ et en passant l’useragent à safari pour iPad, le direct passe par du streaming HTTP en H.264 au lieu de Flash via cette adresse :



http://cupertino-streaming-1.hexaglobe.com/streaming/direct8/playlist.m3u8



là aussi ça passe via une clé MD5 qu’on peut retrouver dans le fichier.

Bonjours a tous je continue a travailler sur mon plugin et aujourd’hui je me heurte a un problème très étrange en utilisant la fonction “RTMPVideoItem” qui génère un lien vidéo qui va être par la suite lu par plex il me crée cette url :


<br />
http://www.plexapp.com/player/player.php?url=http%3A//www.wat.tv/get/podcast&clip=5919717.mp4%3Ftoken%3Df18163469e378ba01c698aeec7ff7d1a%252F4d83bebc%26context%3Dtf1%26sitepage%3DTF1NEWS&width=640&height=480&live=true



la les problèmes arrive depuis la nouvelle mise à jour de plex les urls vidéo son lut depuis webKit comme le montre cette extrait de log:


Mar 19, 2011 01:43:21 [0xb0b04000] DEBUG - Request: GET /video/:/webkit?url=http%3A%2F%2Fwww.plexapp.com%2Fplayer%2Fplayer.php%3Furl%3Dhttp%253A%2F%2Fwww.wat.tv%2Fget%2Fpodcast%26clip%3D5919717.mp4%253Ftoken%253Df18163469e378ba01c698aeec7ff7d1a%25252F4d83bebc%2526context%253Dtf1%2526sitepage%253DTF1NEWS%26width%3D640%26height%3D480%26live%3Dtrue&prefix=/video/macgatetv [::ffff:127.0.0.1] (1 live)<br />
Mar 19, 2011 01:43:21 [0xb0b04000] DEBUG -  * url => http://www.plexapp.com/player/player.php?url=http%3A//www.wat.tv/get/podcast&clip=5919717.mp4%3Ftoken%3Df18163469e378ba01c698aeec7ff7d1a%252F4d83bebc%26context%3Dtf1%26sitepage%3DTF1NEWS&width=640&height=480&live=true<br />
Mar 19, 2011 01:43:21 [0xb0b04000] DEBUG -  * prefix => /video/macgatetv<br />
Mar 19, 2011 01:43:21 [0xb0b04000] DEBUG - WebKit: [plexapp.com/player/player.php?url=http%3A//www.wat.tv/get/podcast&clip=5919717.mp4%3Ftoken%3Df18163469e378ba01c698aeec7ff7d1a%252F4d83bebc%26context%3Dtf1%26sitepage%3DTF1NEWS&width=640&height=480&live=true]<br />
Mar 19, 2011 01:43:21 [0xb0b04000] DEBUG - Found corresponding plug-in: /Users/admin/Library/Application Support/Plex Media Server/Plug-in Support/Data/com.plexapp.plugins.macgatetv<br />
Mar 19, 2011 01:43:21 [0xb0b04000] DEBUG - Resetting to state playing



or gros problème cette vidéo n'est pas lue par webkit pour je ne sais quelle raison faite le test cliquer sur le lien http://www.plexapp.com/player/player.php?url=http%3A//www.wat.tv/get/podcast&clip=5919717.mp4%3Ftoken%3Df18163469e378ba01c698aeec7ff7d1a%252F4d83bebc%26context%3Dtf1%26sitepage%3DTF1NEWS&width=640&height=480&live=true] depuis firefox tout marche et depuis safari et chrome sa marche pas les 2 dernier navigateur utilisant webkit pour fonctionner.
Drôle de bug qui n'est pas de mon ressort plus qu'a attendre un correctif. Je suppose que c'est le le lecteur flash qui supporte pas webkit.
Avez vous le même problème ?

vu que c’est un flux MP4, peut-être vaut-il mieux passer par QuickTime?

sinon pour le live de TF1, ceci donnera peut-être des pistes :



Une piste de plus, j’ai trouvé 5 flux d’un même extrait passé sur TF1 :



http://etf1-apple-live.adaptive.level3.net/apple/etf1/etf1live/stc_5_0.m3u8

http://etf1-apple-live.adaptive.level3.net/apple/etf1/etf1live/stc_4_0.m3u8

http://etf1-apple-live.adaptive.level3.net/apple/etf1/etf1live/stc_3_0.m3u8

http://etf1-apple-live.adaptive.level3.net/apple/etf1/etf1live/stc_2_0.m3u8

http://etf1-apple-live.adaptive.level3.net/apple/etf1/etf1live/stc_1_0.m3u8

Pour TF1, j’ai trouvé d’où vient le timestamp :



http://api.tf1.fr/time-server/iphone/



reste à trouver le MD5, y’a peut-être quelque chose à voir avec ça :

http://api.tf1.fr/tf1-programs-obfuscation/iphone/

C’est encore mieux que ça…



l’iPhone envoie une requête POST à l’adresse http://api.wat.tv/services/Delivery avec comme argument :



country=FR&udid=601328aeced0e18cb7f39fbf24ae5fc64430b650&userAgent=Mozilla%2F5.0+%28iPhone%3B+U%3B+CPU+like+Mac+OS+X%3B+en%29+AppleWebKit%2FXX+%28KHTML%2C+like+Gecko%29&method=getLiveUrl&appName=iphone/Tf1/1.1.3&context=WIFI&mediaId=5259359&adId=&authKey=8d181e9dcdb2acdf6ba9cc68e8dd6949%2F1301339420



et la réponse :



{“code”:“200”,“message”:“http://live.iphone.tf1.fr.edgesuite.net/fr/master_iphone.m3u8?token=1301342963_bcfd26e3bc77e888ec2b5d5f89520b24",“adDuration”:"",“adOrder”:"”}



C’est le serveur qui donne le token (donc inutile de vouloir le recréer, il doit correspondre à une session côté serveur)

Par contre il y en a un autre au niveau du POST (authkey)

token singulièrement similaire chez TMC (filiale de TF1)

http://live.iphone.tmc.tv/tmclive_wifi.m3u8?token=1301337510_3704af72767816c916779edd48805aa2



très intéressant mais j'ai pas compris comment tu fessais pour avoir ta réponse en json :mellow:
tu envoie ta requête POST comment car si on utilise http://api.wat.tv/services/Delivery? avec ta requête derrière j’obtiens toujours ce json

{"code":400,"message":"Missing arguments"}


dit moi comment tu fais ton envois POST ;)
Merci pour tes recherche sa progresse :D


J'ai juste sniffé les échanges, directement à partir de l'iPhone. Et de toutes façons il faut avoir le bon MD5 sur authkey pour que ça passe (il change à chaque fois)

Sinon j'ai jeté un œil au live sur le site de TF1, là ça passe par ça :
http://ko.live.vercoop.com/streamingvideo/cjmall/stream/stream_192k.m3u8

Le fichier est librement accessible, mais n'en débouche pas moins sur un cul de sac