Kodi-vStream / venom-xbmc-addons

Addon de Streaming français pour Xbmc
GNU General Public License v3.0
495 stars 275 forks source link

fonction dl an play pour certains m3u8 #2240

Closed ghost closed 6 years ago

ghost commented 6 years ago

bonjour, donc pour éviter les coupures avec les m3u8 qui me les brises :) genre ne_tu a certaines heures. j'ai commencé ce code la . (en test) A la base j'étais partis sur du dl pure ensuite j'ai changer de directions plusieurs fois pour finalement trouver la meilleur solutions pour moi crée un fichier m3u8 avec des fichiers locaux (kodi le permet) Dl et play en meme temps avec threading et urllib3 qui normalement est installé par request vu qu'il l'utilise. pour l'instant ne_tu tu_ne il y en aura d'autre que je n'ai pas encore testé

edit: la classe est annoté , peu de modifs dans les autres fichiers. prise en charge dans default,menu context, petite modif host

LordVenom commented 6 years ago

Je suis pas sur mais pour moi urllib3 c'est une lib à importer https://kodi.wiki/view/Add-on:Urllib3

Importer par request qui lui et importer par vstream mais pas dans les imports obligatoire et pas sur que ce soit compatible Kodi 16.

ghost commented 6 years ago

alors le code fonctionne sur kodi 16.1 mais l'import d'urllib3 sur kodi 16.1 j'ai pas testé au départ j'utilisé requests puis quand j'ai vu que request en faite utilise urllib3 pour ce que je voulais faire j'ai changé et aussi pour la gestion des exceptions qui est pas top dans requests edit: add ru_tube

LordVenom commented 6 years ago

J'ai peur que si ont force urllib3 l'installation de vstream soit refuser à kodi 16.

request lui tourne sous 16, 17,18

https://kodi.wiki/view/Add-on:Requests

ghost commented 6 years ago

la je teste une modif sur kodi 16.1 en important urllib3 depuis le module request ça tourne correctement

TmpName commented 6 years ago

Donc ton code permet du coup de dl des fichiers fragmentes pour une playlist m3u ?

ghost commented 6 years ago

oui il dl les fichiers a l'intérieur des m3u8 fait un m3u8 local en gros

TmpName commented 6 years ago

C'est bon ca, je sais pas pour l'integration dans Vstream, mais tres beau projet, moi aussi j'ai des prb avec netu et meme pas myen de faire de la mise en cache.

ghost commented 6 years ago

pour le moment ça fonctionne j'ai test sur kodi 16.1 17.1 17.6 -4 host testé et pris en charge il y en a d'autres et pour les hosts non gerer par vstream la fonction ext peut faire le job reste a la modif selon l'utilisation qu'on veut en faire ( juste dl et merge, faire un m3u8 aussi et retourner l'url du m3u8 final pour play? etc.. a voir

edit: kodi 16 urllib3 est inclu dans requests krypton et > urllib3 est séparé de requests

petite modif a voir ex: sur tune certains fichier sont des mp4 pour l'instant j'ai fait en sorte que l'host return false false et ça s'arrete la peut etre mettre une popup info

TmpName commented 6 years ago

On fait quoi pour l'integration dans Vstream ? Ca marche bien sur un kodi recent sans rajouter de dependance ?

ghost commented 6 years ago

Aucune dépendance supplémentaires n'est nécessaire Vstream utilisé deja request donc dans tous les cas urllib3 est inclu Request en a besoin et l'installe kodi 17 ou l'intègre sous kodi 16 Donc fonctionne reste à intégrer details mineur une popup info en cas de fichier introuvable.

TmpName commented 6 years ago

Et tu vas l'integrer comment ? Activer "DL+visualiser" pour netu ?

ghost commented 6 years ago

Via le fichier hoster.py une entrée menu clic droit ( dl play reprise )si le hoster est compatible m3u8 Tout est dans l'url en haut je n'utilise pas dl et visualisé ça aurait fait une usine à gaz (et les m3u8 sont bloqué pour cette fonction d'après mes souvenirs )la tu clic ça play et dl enregistre position si tu stop et reprend le dl la ou tu t'es arrêté si le dl n'est pas finis

TmpName commented 6 years ago

Et en bypassant la fonction AddtoDownloadListandview() dans Cdownload ? Suffit de l'activer avec isDownloadable() dans le fichier netu.py, et la bypasser dans le fichier download.py si le lien est en netu (ou m3u8). A partir de la tu fais tout ce que tu veux, tu as l'url complete non decodee de memoire. Si c'est m3u8 > ta fonction sinon fonction classique.

Par contre j'ai pris l'exemple de netu, mais faudra l'activer dans tout les fichier hoster qui genere des m3u8. Et pas moyen de savoir si c'est un m3u8 au debut de la fonction (avant de demarrer le mode classique, car le lien n'est pas decode) faudrait faire par rapport au nom du host.

ghost commented 6 years ago

J'y est pensé au début et après avoir regardé le code j'ai décidé de faire un truc à part plus simple

TmpName commented 6 years ago

En bypassant dans download.py, tu peux bypasser avant la barre de progression ou le dialog explorer. Sinon sauvegarde dans fichier temporaire du systeme, mais faudra faire gaffe a ce que ca soit automatiquement supprime, apres pour ceux qui ont un disque ssd, je pense qu'ils voudront mettre le tampon sur un disque externe, mettre ca dans la config de Vstream ?