Open DavidHenryThoreau opened 2 years ago
Ben tout le code est dans le fichier resources/hosters/youtube.py
Il y a 2 modes de fonctionnement, via le plugin youtube et via yt1s qui ne marche plus.
C'est pas trop dur a faire, on peut faire un check sur un plugin et si il n'est pas dispo basculer sur le second.
Par contre je ne trouve pas d'info sur comment utiliser le plugin tu n'aurais pas l'url d'appel dans les logs ?
Dans le fichier c'est la ligne (pour le plugin youtube, il me faudrait celle du plugin invidious)
api_call = 'plugin://plugin.video.youtube/play/?video_id=' + videoID
Je ne connaissais pas mais je suis heureuse de coonnaître maintenant l'existance de cet addon ;)
J'ai installé dans le but de tester mais je crois que nous sommes limité par région... Par contre, ça fonctionne très bien!!
Il y a probablement des paramètres à voir sur le github du développeur pour la configuration car dans l'état actuel, nous ne pouvons pas modifier la langue. La zone est grisée dans les paramètres..
Ceci dit, voici la ligne que tu demandes @TmpName :
VideoPlayer::OpenFile: plugin://plugin.video.invidious/?action=video&videoId=
Mais l'addon demande la dépendance Inter-Addon Procedur Call
lors de l'installation. J'ai du installer depuis le dépôt sinon j'avais un échec d'installation.
Je joins aussi mon log au cas ou tu veuilles voir ce que ça dit lors d'une recherche :) (Voir à partir de la ligne 424)
Alors essayez de remplacer le host youtube.py par
# -*- coding: utf-8 -*-
# vStream https://github.com/Kodi-vStream/venom-xbmc-addons
# type
# https://www.youtube.com/embed/etc....
# https://www.youtube.com/watch?v=etc...
# http://www.youtube-nocookie.com/v/etc...
# https://youtu.be/etc...
import time
from resources.hosters.hoster import iHoster
from resources.lib.handler.requestHandler import cRequestHandler
from resources.lib.comaddon import VSlog
import xbmcaddon
class cHoster(iHoster):
def __init__(self):
iHoster.__init__(self, 'youtube', 'Youtube')
def _getMediaLinkForGuest(self):
# 0 = Plugin invidious
# 1 = Plugin Youtube
MODE = 0
api_call = ''
if MODE == 0 and not xbmcaddon.Addon('plugin.video.invidious'):
VSlog('Plugin Invidious non installe')
MODE = 1
if MODE == 1 and not xbmcaddon.Addon('plugin.video.youtube'):
VSlog('Plugin Youtube non installe')
if 'plugin' in self._url:
api_call = self._url
else:
videoID = self.__getIdFromUrl(self._url)
if MODE == 1:
api_call = 'plugin://plugin.video.youtube/play/?video_id=' + videoID
else:
api_call = 'plugin://plugin.video.invidious/?action=video&videoId=' + videoID
if api_call:
return True, api_call
else:
return False, False
def __getIdFromUrl(self, sUrl):
id = ''
if 'plugin' not in sUrl:
id = sUrl
id = id.replace('http:', '')
id = id.replace('https:', '')
id = id.replace('//', '')
id = id.replace('www.youtube.com', '')
id = id.replace('www.youtube-nocookie.com', '')
id = id.replace('/embed/', '')
id = id.replace('/watch?v=', '')
id = str(id)
else:
id = sUrl
return id
Si le plugin Invidious est installé, il est prioritaire, sinon ca bascule tout seul sur le plugin youtube. Il y a 2 / 3 message en logs qui peuvent etre utiles
Personne pour tester ?
Personne pour tester ?
Désolée, de mon côté j'avoue ne pas avoir vu l'intérêt puisque je possède déjà ma clé API Youtube personnelle et que je n'ai aucun probl;me avec les BA.. Je ne souhaite donc pas installer un addon supplémentaire qui ne me servira pas ;)
Par contre, si tu as besoin pour tester et que personne d'autre ne se manifeste, je peux intaller et tester pour toi, ça va me faire plaisir
Et moi, personnellement je n'ai pas de clef API mais les bandes annonces ont toujours démarrés. Je n'ai jamais compris ce débat autour des bandes annonces 😄
Lol, ben moi pareil ^^, flemme d'installer un plugin en plus. Mais si certain veulent utiliser ce plugin, je peux indiquer comment tester en modifiant le fichier.
Alors essayez de remplacer le host youtube.py par
# -*- coding: utf-8 -*- # vStream https://github.com/Kodi-vStream/venom-xbmc-addons # type # https://www.youtube.com/embed/etc.... # https://www.youtube.com/watch?v=etc... # http://www.youtube-nocookie.com/v/etc... # https://youtu.be/etc... import time from resources.hosters.hoster import iHoster from resources.lib.handler.requestHandler import cRequestHandler from resources.lib.comaddon import VSlog import xbmcaddon class cHoster(iHoster): def __init__(self): iHoster.__init__(self, 'youtube', 'Youtube') def _getMediaLinkForGuest(self): # 0 = Plugin invidious # 1 = Plugin Youtube MODE = 0 api_call = '' if MODE == 0 and not xbmcaddon.Addon('plugin.video.invidious'): VSlog('Plugin Invidious non installe') MODE = 1 if MODE == 1 and not xbmcaddon.Addon('plugin.video.youtube'): VSlog('Plugin Youtube non installe') if 'plugin' in self._url: api_call = self._url else: videoID = self.__getIdFromUrl(self._url) if MODE == 1: api_call = 'plugin://plugin.video.youtube/play/?video_id=' + videoID else: api_call = 'plugin://plugin.video.invidious/?action=video&videoId=' + videoID if api_call: return True, api_call else: return False, False def __getIdFromUrl(self, sUrl): id = '' if 'plugin' not in sUrl: id = sUrl id = id.replace('http:', '') id = id.replace('https:', '') id = id.replace('//', '') id = id.replace('www.youtube.com', '') id = id.replace('www.youtube-nocookie.com', '') id = id.replace('/embed/', '') id = id.replace('/watch?v=', '') id = str(id) else: id = sUrl return id
Si le plugin Invidious est installé, il est prioritaire, sinon ca bascule tout seul sur le plugin youtube. Il y a 2 / 3 message en logs qui peuvent etre utiles
Après avoir remplacé le youtube.py par le code modifié :
J'ai ces informations dans les journaux avec le thème fTV (impossible de voir les bandes annonce) :
2022-09-19 13:05:56.282 T:826 INFO <general>: VideoPlayer::OpenFile: plugin 2022-09-19 13:05:56.282 T:4476 INFO <general>: Creating InputStream 2022-09-19 13:05:56.282 T:4476 ERROR <general>: CVideoPlayer::OpenInputStream - error opening [plugin] 2022-09-19 13:05:56.282 T:4476 INFO <general>: CVideoPlayer::OnExit() 2022-09-19 13:05:56.397 T:826 INFO <general>: CVideoPlayer::CloseFile() 2022-09-19 13:05:56.397 T:826 INFO <general>: VideoPlayer: waiting for threads to exit 2022-09-19 13:05:56.397 T:826 INFO <general>: VideoPlayer: finished waiting WARNING <general>: CGUIWindowManager - HandleAction - ignoring action 0, because topmost modal dialog animation is running
Avec le thème Estuary de base ça fonctionne bien je peux voir les bandes annonces.
Ha parce que ca depend des themes aussi ?
Si le bouton de lancement d'une ba ne fonctionne pas avec un certain thème, ça peut vouloir dire tout simplement que ce skin propose son propre bouton avec sa propre action de lancement d'une BA. Et ce n'est donc pas l'action de vStream. Et donc vStream n'y peut rien.
C'est noté pour le thème, comme je le disais au-dessus, l'intégration invidious fonctionne bien avec le thème de base, si c'est possible d'intégrer la prise en charge de invidious dans le script host youtube.py :+1:
Pourquoi pas, de toute facon ca ne ralentira pas le code. Je te fais ca de suite, avec le principe du precedent code.
C'est ajouté dans la version Version 2.1.0
j'ai enfin testé pour voir ce que ça donne.
Déjà, si j'ai bien compris, il faut paramétrer le nom d'une instance. ça m'a permis de voir les Tendances et les Populaires.
MAIS impossible de lancer une bande annonce depuis vStream !
J'ai raté quelque chose ?
Ca vient peut etre de moi. J'avais fais une bourde sur le fichier du hoster YT du coup j'ai remodifié le fichier.
Il est impossible de visualiser les bandes annonces avec Invidious :
2023-08-03 15:03:24.720 T:1216 error <general>: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <class 'AttributeError'>
Error Contents: Invalid action 'play_video'
Traceback (most recent call last):
File "/storage/.kodi/addons/plugin.video.invidious/lib/plugin.py", line 223, in <module>
dispatch(*argv)
File "/storage/.kodi/addons/plugin.video.invidious/lib/plugin.py", line 219, in dispatch
InvidiousPlugin(url, int(handle)).dispatch(**parseQuery(query))
File "/storage/.kodi/addons/plugin.video.invidious/lib/plugin.py", line 27, in dispatch
super(InvidiousPlugin, self).dispatch(**kwargs)
File "/storage/.kodi/addons/script.module.iapc/lib/iapc/tools/plugin.py", line 63, in dispatch
raise AttributeError(__invalid_action__.format(name)) from None
AttributeError: Invalid action 'play_video'
-->End of Python script error report<--
Parce que tu n'utilises pas la dernière version de Invidious.
J'utilise la dernière version présente dans le dépôt : la 2.2.4 : https://github.com/lekma/repository.lekma/tree/master/nexus/plugin.video.invidious
2023-08-08 18:01:13.090 T:1227 info <general>: [PLUGIN] vStream: load site cGui and call function viewBA
2023-08-08 18:01:13.920 T:1227 info <general>: [PLUGIN] vStream: SQLITE 3 as DB engine for tmdb
2023-08-08 18:01:15.249 T:1227 info <general>: [PLUGIN] vStream: playertype from config: dvdplayer
2023-08-08 18:01:15.250 T:1227 info <general>: [PLUGIN] vStream: player initialized
2023-08-08 18:01:16.089 T:1228 error <general>: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <class 'AttributeError'>
Error Contents: Invalid action 'play_video'
Traceback (most recent call last):
File "/storage/.kodi/addons/plugin.video.invidious/lib/plugin.py", line 223, in <module>
dispatch(*argv)
File "/storage/.kodi/addons/plugin.video.invidious/lib/plugin.py", line 219, in dispatch
InvidiousPlugin(url, int(handle)).dispatch(**parseQuery(query))
File "/storage/.kodi/addons/plugin.video.invidious/lib/plugin.py", line 27, in dispatch
super(InvidiousPlugin, self).dispatch(**kwargs)
File "/storage/.kodi/addons/script.module.iapc/lib/iapc/tools/plugin.py", line 63, in dispatch
raise AttributeError(__invalid_action__.format(name)) from None
AttributeError: Invalid action 'play_video'
-->End of Python script error report<--
2023-08-08 18:01:16.260 T:1072 error <general>: Playlist Player: skipping unplayable item: 0, path [plugin://plugin.video.invidious/?action=play_video&video_id=wx0mwd9l93Q]
Le depot "lekma" ?
Pour moi, la version officielle est celle qui est référencée par Kodi : https://kodi.wiki/view/Add-on:Invidious
Disponible dans le dépot de kodi :
https://github.com/TheAssassin/kodi-invidious-plugin
This repository has been archived by the owner on Apr 30, 2023. It is now read-only.
Lors de précédents tests cette version ne permettait pas de visualiser des vidéos, et le dépôt est en lecture seule, c'est pourquoi j'ai trouvé une autre extension mise à jour et fonctionnelle.
"fonctionnelle" ? Du coup ca c'est moins sur.
Apparement celle qui est read only marchait y a quelques mois, quand on a rajoute le code. Et si on passe par kodi on arrive sur celle de @sizanic , pas sur que la tienne soit officielle.
La derniere issue du repo TheAssassin fait justement référence à ce conflit d'addon, car ils utilisent le même addon-id https://github.com/TheAssassin/kodi-invidious-plugin/issues/26
En réponse, cette issue du repo "Lekma" sur le même sujet affirme que maintenant il n'y plus de sujet car l'autre repo ont archivé leur addon (ce qui revient à dire qu'ils le retirent du marché).
https://github.com/lekma/plugin.video.invidious/issues/81
Je suis prêt à reconnaitre, au vu des derniers développements par la team Lekma, qu'il faudrait maintenant passer sur celui-ci.
Il faudrait que la team Kodi dé-réference l'ancien (qu'elle l'enleve de leur repo).
Il y en a ici qui sont avec la vielle version archivée ?
Depuis que l'extension 'plugin.video.youtube impose d'avoir un compte pour accèder à l'API j'utilise https://github.com/lekma/plugin.video.invidious au lieu de YouTube.
Est-ce qu'il serait possible d'ajouter dans les paramètres de configuration de modifier le type d'extension pour voir les bandes annonce ? invidious au lieu de youtube ?
ERROR <general>: EXCEPTION: Unknown addon id 'plugin.video.youtube'