Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi thread pour la recherche & ajout de lien direct (utilisable dans Tmdb Helper) #3447

Open
wants to merge 9 commits into
base: Beta
Choose a base branch
from

Conversation

detobel36
Copy link
Contributor

@detobel36 detobel36 commented Jan 1, 2022

Je suis de nouveau la avec une grosse pull request... Promis c'est la dernière avant un bout de temps 😄

Introduction

Je souhaitais pouvoir lancer directement un film. Je suis donc tombé sur TmdbHelper. Il permet de lancer le player d'une autre extension. Super, c'est ce que je voulais ! Sauf que ce n'est pas directement disponible dans vStream (d'autres addon le font mais vStream est plus complet pour récupérer des films FR).
J'ai donc adapté vStream pour qu'il soit possible de lancer un film depuis TmdbHelper. Voici le fichier que vous devez utilisé (bien évidemment il faut aussi installé le code lié à cette PR 😉 ):

Fichier à mettre dans TmdbHelper
{
    "name" : "[COLORblue]vStream[/COLOR]",
    "plugin" : "plugin.video.vstream",
    "priority" : 101,
    "is_resolvable" : "false",
    "search_movie": "plugin://plugin.video.vstream/?function=quickSearch&site=cSearch&title={title}&year={year}&cat=1",
    "play_movie" : "plugin://plugin.video.vstream/?function=playVideo&site=cSearch&title={title}&year={year}&cat=1"
}

Description

Dans cette pull request j'ai donc:

  • déplacé la recherche "globalSearch" dans un fichier search.py
  • multi thread la recherche (pour ceux qui sont "non technique": j'ai fais en sorte que la recherche se fasse en parallèle)
  • ajouter un lien (pas de nouveau menu dans vStream, seulement un "lien" accèssible par d'autres applications de Kodi) permettant de directement lancer un film (playVideo) ou faire une recherche (quickSearch).
  • ajout d'une option pour choisir si le film lancé doit obligatoirement être VF ou s'il peut être VF et VOSTFR ou encore si on accepte tout.

Pour faire cela, j'ai du:

  • faire en sorte que les résultats d'une recherche soient associé à un host. Donc les résultats dans le fichier gui.py sont stocké dans un dictionnaire et non plus dans une liste
  • faire en sorte de "passer" les informations d'un appel de méthode à l'autre. En effet, certains site donne directement l'information de la langue, d'autres c'est seulement quand on choisi le film ou le host ect ect... Donc toutes les informations sont copié d'un appel à l'autre

Limitation

  • Pour l'instant cela ne fonctionne que avec les films. Pour les séries, il faudra aller sur chaque site renseigner la saison et l'épisode dans les cOutputParameterHandler.
  • Le fait de faire les actions en parallèle augmente la vitesse où on récupère des résultats. Mais cela dépend de votre matériel... En effet, si vous avez un seul CPU multi-coeur, ça va rien changer. Si vous avez un deux coeur, vous pouvez avoir au mieux un résultat 2 fois plus rapidement 😄 Bref, sur un raspberry pi 4 par exemple vous pouvez avoir jusqu'à 4 opérations faites en même temps. Avant vStream traitait les informations "une à une" (en tout cas pour la recherche), maintenant il pourra (c'est pas pour ça qu'il va le faire à tous les cout mais c'est possible) faire la recherche sur 4 sites différents "en même temps".
    Il faut nuance tout ça hein... A priori vous avez une connexion internet, donc le vStream va quand même finir par traiter les choses "une à une" mais les certaines opérations seront plus rapide.

Bug connu

  • J'ai déjà eu des plantages de l'application en faisant des tests (bon après j'y allait un peu "bourrin"). Donc à voir...
  • Parfoir les "notifications" pour dire qu'un site a été "résolve" pop... Je ne sais pas trop pourquoi. A priori, ça ne dérange pas la lecture.
  • Si un hébergeur fourni un lien de vidéo qui n'est pas valide (j'ai eu le cas avec Gounlimited), le player va essayer de le lancer, va croire que tout est bon et plantera "plus tard"... La solution: obligatoirement faire une "recherche" pour choisir un autre lien que Gounlimited.

La suite

  • Actuellement il n'y a aucun filtre sur la qualité du film lancé. Il faudra faire des modifications plus profonde dans les sites.
  • Détecté de manière plus fiable quand une vidéo ne se lance pas et essayer de lancer un autre lien
  • Retenir le lien de la vidéo en cache pour pouvoir directement essayer de relancer la vidéo (sans devoir refaire toute la recherche)
  • Je dois encore lancer Pylint pour être que j'ai pas fait des fautes niveau "variable inutilisé" ou "méthode inutilisé".

Screen

settings
Paramètre permettant de choisir la langue

search
Nouveau popup lorsqu'on fait une recherche

result
Résultat (lorsqu'on clic sur les liens, le film se lance directement (vu que c'est directement la liste des hosters))

Liens

Cette PR peut être en lien avec les issues suivantes:

Mot de la fin

⚠️ Je pense qu'il vaut mieux merge cette PR: #3439 avant la PR que vous lisez actuellement... Ce sera plus simple à refactor.

@alKODIque
Copy link
Contributor

alKODIque commented Jan 1, 2022

Bonjour @detobel36

Ta modif m'intéresse beaucoup...
J'ai énormément ''bidouiller'' afin d'arriver a obtenir le lien direct via un player tmdb helper. Jusqu'ici, j'avais réussi pour les films et aussi les séries mais puisqu'il y avait regroupement par source (et que j'utilisait la ligne de la recherche globale): seulement le premier lien disponioble depuis la première source active trouvé était présenté.. (sur le fichier .json, j'ai nommé le player Pastebin'' pour le différencier du player vStream mais si d'autres sources sont actives, il fonctionnera avec les autres sources) Etant une utilisatrice de la source Pastebin de vStream, ceci fonctionnait bien en désactivant toute les autres sources:

{ "name" : "Pastebin", "language" : "fr", "plugin" : "plugin.video.vstream", "priority" : 1000, "search_movie" : [ "plugin://plugin.video.vstream/?function=showSearch&sCat=1&site=globalSearch&siteUrl=http%3a%2f%2fvenom&title=Recherche%20(Films)&action=activate&searchtext={title}", {"title": "{clearname}"} ], "search_episode" : [ "plugin://plugin.video.vstream/?function=showSearch&sCat=2&site=globalSearch&siteUrl=http%3a%2f%2fvenom&title=Recherche%20(S%c3%a9ries%2fAnim%c3%a9s)&action=activate&searchtext={showname}", {"title": "{showname}"}, {"position": "{season}"}, {"season": "{season}", "episode": "{episode}"} ] }

J'ai laissé de l'info ici: https://lesalkodiques.com/docs/liste-de-tutos/tmdb-helper/installer-les-players/ et ici: https://lesalkodiques.com/docs/liste-de-tutos/tmdb-helper/les-players/

Mais bon, ce n'était pas accessibles pour tous les utilisateurs tandis que ce que tu proposes par contre l'est! Puisque la modification est fait directement a l'intérieur de vStream.

Je vais tester avec grand intérêt ta modification d'ici 1 ou 2 jours 👍

@sizanic
Copy link
Collaborator

sizanic commented Jan 1, 2022

j'attendais ton retour @alKODIque car je sais que tu proposes un player tmdbhelper pour lancer un film dans vStream.

Tu conclus que ce code est dans vStream et que ce sera donc plus intéressant.
Mais dans ce que propose @detobel36 , il faut aussi mettre en place un player.json 🤔

J'essaie de voir ce que ce code apporte de plus pour l'utilisation avec tmdbHelper ?
Est-ce pour avoir des liens directs vers les hosters plutot que par sources ? Cela est indépendant de tmdbHelper car pourrait même être mis en place pour les recherches globales de vStream 🤔

Si je suis bien,
cela permet de proposer tous les liens plutôt que le premier trouvé ?

@alKODIque
Copy link
Contributor

alKODIque commented Jan 1, 2022

Je n'ai pas testé encore alors il m'est difficile de me prononcer, d'autant plus que je ne m'y connais pas comme vous... j'imagine que le fichier json servant de player pour tmdb helper doit etre modifié puisque GlobalSearch est dépalcer dans un search.py...

Mais de ce que j'en comprend: oui!! ce serait vraiment intéressant : dans l'état actuel, tout ce qui se produit avec le palyer vstream.json: c'est qu'il fait seulement un recherche globale... donc si on clique sur un épisode: nous aterrissons sur le dossier de la série. le ''pastebin.json'' que j'avais fait lui, permettait d'aterrir directement sur l'épisode choisie... (mais comme j'expliquais, je l'ai nommé pastebin puisque j'utilise cette source)

Meme si présentement ceci est fonctionnel seulement avec les films (Je parle de la solution de @detobel36 ) c'est tout de même avantageux puisque lorsqu'on appui sur ''Play'' depuis TMDb Helper: nous obtenons les liens au lieu d'obtenir des dossiers contenant des liens

Je pourrai tester dans 1 jour ou 2 :)

@alKODIque
Copy link
Contributor

alKODIque commented Jan 1, 2022

J'ajoute aussi qu'avec cette possibilité, je crois qu'il sera possible avec un player json, d'appeler ''Play'' mais aussi ''Search''... ce qui n'est pas le cas acxtuellement. ainsi:
Play: ira récupérer le premier lien disponible et agira vraiment comme ''PlayMedia''... Ensuite, comme fallback, le ''Search'' pourra être choisi qui lui présentera une série de liens...

Bref: vivement que je test hihi

@sizanic
Copy link
Collaborator

sizanic commented Jan 1, 2022

Merci alkodique, je comprends mieux ce que ça peut apporter par rapport à l'actuel.

@alKODIque
Copy link
Contributor

alKODIque commented Jan 2, 2022

Tant qu'a y être, j'ai une question @detobel36 :

A quoi sert le ''priority'' dans le json, et comment la déterminer?? J'ai jamais compris l'utilité puisque je code pas.... Je vois que ton nouveau json indique la ''Priority 101''.... - sur celui que j'ai partagé plus haut, c'est 1000 (et je ne me souviens plus dutout ou et pourquoi j'ai inscris 1000, j'ai tellement fait d'essais-erreurs lol)

Ca m'a toujours intrigué! ;)

@detobel36
Copy link
Contributor Author

detobel36 commented Jan 2, 2022

Merci pour les retours 😄

Pour bien expliquer la différence avec la solution "précédente": dans ma solution, on "parcours" les sources, puis les films qui correspondent, puis les hosters et enfin on affiche le résultat à l'utilisateur. En gros, ça fait la rechercher et ça permet à l'utilisateur de simplement "cliquer" sur le résultat pour avoir son film.
La recherche globale, elle ne fait que la première étape: chercher sur chaque source. Donc après l'utilisation à encore au moins 2 "clics" pour lancer son film.
Ma solution permet également de "directement" lancer un film depuis TmdbHelper sans devoir faire d'action dans vStream.

Le fichier ".json" existera quoi qu'il arrive. C'est TmdbHelper qui fonctionne comme ça.

A quoi sert le ''priority'' dans le json, et comment la déterminer??

Je pense que ça permet juste de choisir "l'ordre" dans laquelle sera affiché ton "json" dans la liste des choix de TmdbHelper. Donc si par exemple tu as installé "Gaia" et bien en fonction de la priorité, vStream sera avant ou après Gaia.
Mais j'ai jamais vraiment testé si c'était ça 😝

@alKODIque
Copy link
Contributor

alKODIque commented Jan 2, 2022

Merci...
En fait, je crois que cette ''priority'' était utile il y a quelques années, avec l'extension ''Mod'' ExtendedInfo , Meta et Openmeta qui utilisaient également les players json... Mais avec TMDb helper, j'ai l'impression que cette ''Priority'' est inutile car l'addon fonctionne autrement (et beaucoup mieux a mon avis)... Maintenant, dans la configuration des players, il est possible via les paramètres TMDb Helper de configurer notre player par défaut et ensuite, de choisir des players ''fallback'' si rien n'est trouvé.

C'est donc probablement un vestige des anciens players qui a la base ont été fait pour ces anciens addons j'imagine :)

@detobel36
Copy link
Contributor Author

Je viens de voir que ça marche pas trop sur Kodi 18 (dû à Python2). Je verrai pour fix ça.

@alKODIque
Copy link
Contributor

Est-ce que ça en vaut vraiment la peine sachant ceci? #3397

@detobel36
Copy link
Contributor Author

Moi, personnellement, ça dépend si Kodi 19 est adapté pour Raspberri Pi 3...
Si "non", alors je continuerai à maintenir la fonctionnalité pour la version 18 😝

@sizanic
Copy link
Collaborator

sizanic commented Jan 4, 2022

dans ma solution, on "parcours" les sources, puis les films qui correspondent, puis les hosters et enfin on affiche le résultat à l'utilisateur.
La recherche globale ne fait que la première étape: chercher sur chaque source.

C'est parce que résoudre les hosters de tous les résultats peut être très long.
Ainsi, on ne résout le hoster que pour le résultat sélectionné par l'utilisateur.

Je suis d'accord que ce genre de résolution complete est interessante pour lancer le film depuis tmdb, mais lors d'une recherche globale, il faut voir les performances (en prenant en compte le multi-thread bien sûr).

@TmpName
Copy link
Collaborator

TmpName commented Jan 4, 2022

Heu la perso je m'inquiete.
Tu as testé si les benefices en temps sont vraiment interessant ?
On a deja testé ca aussi, et kodi supporte tres mal le Multithread, deja que sans j'arrive a le planter 2 fois par semaine, cette application est codée avec les pieds ....

C'est parce que résoudre les hosters de tous les résultats peut être très long.
Ainsi, on ne résout le hoster que pour le résultat sélectionné par l'utilisateur.

Pareil, en fonction de l heure de la journée, de la date de sortie du film, je suis sur d'etre plus rapide que ton code pour trouver un hoster viable, pendant que lui va tous les interroger.

@sizanic
Copy link
Collaborator

sizanic commented Jan 4, 2022

@TmpName
tu cites mon message où je dis qu'on a fait expres de ne pas résoudre tous les hosters car ce serait trop long, pour dire que c'est plus rapide de sélectionner un seul hoster 🤔
Tu redis la même chose en fait, tu n'a pas dû me comprendre.
Au moins on est d'accord 😄

@detobel36
Copy link
Contributor Author

Pareil, en fonction de l heure de la journée, de la date de sortie du film, je suis sur d'etre plus rapide que ton code pour trouver un hoster viable, pendant que lui va tous les interroger.

Attention, il ne fait ça que si tu lui donne l'URL que j'ai créé hein 😉 Il ne fait pas ça pour la recherche "normale" 😄

@TmpName
Copy link
Collaborator

TmpName commented Jan 4, 2022

@sizanic oui je suis 100% d'accord avec toi, la reponse etait pas pour toi, mais pour @detobel36 ^^

@sizanic
Copy link
Collaborator

sizanic commented Jan 4, 2022

ok, a utiliser dans l'url d'un player tmdb.
Donc en toute connaissance de cause pour celui qui le met en place 👍🏻

@detobel36
Copy link
Contributor Author

ok, a utiliser dans l'url d'un player tmdb.
Donc en toute connaissance de cause pour celui qui le met en place 👍🏻

Exact.
Dans la recherche "de base" j'ai juste rajouter le multi-thread. A la limite on peut le mettre en option...
Ou revenir en arrière si c'est trop instable.

@Arias800
Copy link
Contributor

Du nouveau par rapport à ça ?
(au-delà de la liste des conflits qui s'allonge mdr).

@sizanic
Copy link
Collaborator

sizanic commented Feb 27, 2022

J'ai laissé plusieurs commentaires de codes qui nécessitent une réponse avant de continuer...

@Arias800
Copy link
Contributor

C'était juste pour savoir si il y avait eu des avancés, vu qu'en ce moment je suis plutôt occupé sur Catchup TV, donc je ne regarde pas trop ce qui se passe ici.

@detobel36
Copy link
Contributor Author

@sizanic Heu... Je n'ai pas vu où étaient les questions...

Sinon j'ai "rebase" sur la branche Beta. Par contre, je n'ai pas eu l'occasion de tester après mon rebase (il me faut un peu de temps, je n'ai pas de "setup de test" pret). Si quelqu'un à l'occasion 😉

@@ -302,7 +302,7 @@ def showLinks():
oOutputParameterHandler.addParameter('sHost', sHost)
oOutputParameterHandler.addParameter('sLang', sLang)
oOutputParameterHandler.addParameter('sDesc', sDesc)
oGui.addLink(SITE_IDENTIFIER, 'showHosters', sTitle, sThumb, sDesc, oOutputParameterHandler)
oGui.addLink(SITE_IDENTIFIER, 'showHosters', sTitle, sThumb, sDesc, oOutputParameterHandler, oInputParameterHandler)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Il n'est pas utile de passer oInputParameterHandler en paramètre

car à tous moment, il suffit de faire :

oInputParameterHandler = cInputParameterHandler()

Pour le récupérer 🤔

Copy link
Contributor Author

@detobel36 detobel36 Feb 28, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

En fait non... Enfin, il me semble que non.

Car les "input" sont récupéré sur base de l'URL. Sauf que l'URL ici ne bouge pas. On appel les méthodes python "à la main". Donc l'URL ne bouge pas, mais les paramètres, eux, changent...

Si ce n'est pas clair, je prendrai le temps d'expliquer avec un exemple concret 😉

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Car les "input" sont récupéré sur base de l'URL. Sauf que l'URL ici ne bouge pas.

Oui, le tout premier url d'appel initial ne bouge pas donc cInputParameterHandler() contient toujours les même paramètres.

On appel les méthodes python "à la main". Donc l'URL ne bouge pas, mais les paramètres, eux, changent...

Le oInputParameterHandler que tu passes en paramètres d'une méthode à l'autre, contient toujours les paramètres initiaux correspondant à l'URL initiale.

Je ne vois pas comment oInputParameterHandler pourrait contenir autre chose juste en le passant en paramètre.

Il y a bien des moments où tu reconstruit un oInputParameterHandler

    if not oInputParameterHandler:
        oInputParameterHandler = cInputParameterHandler()

Mais pour autant, tu ne le valorises pas avec d'autres valeurs de paramètres (et ce n'est pas possible de toute façon). donc il contient les paramètres de l'URL initiale.

Copy link
Contributor Author

@detobel36 detobel36 Feb 28, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non non, les paramètres sont bien passé d'une méthode à l'autre...
Prenons _4kstreamz.py:

On appel le showMovies
source

La méthode "retourne" ceci:

oGui.addMovie(SITE_IDENTIFIER, 'showLinks', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler)

source

Le code "détecte" que c'est la méthode showLinks qui doit être appelé. Donc oOutputParameterHandler est passé en paramètre de showLinks:

def showLinks(oInputParameterHandler = False):

source

showLinks retourne ceci:

oGui.addLink(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, sThumb, sDesc, oOutputParameterHandler, oInputParameterHandler)

source

La encore, le code appel showHosters en lui passant le input:

def showHosters(oInputParameterHandler = False):

source

Et finalement:

cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb, oInputParameterHandler=oInputParameterHandler)

source

Et tout ça "marche", car ici dans le gui, je récupère l'input passé en paramètre.

    def addLink(self, sId, sFunction, sLabel, sThumbnail, sDesc, oOutputParameterHandler='', oInputParameterHandler = False):
        # Pour gérer l'enchainement des épisodes
        if not oInputParameterHandler:
            oInputParameterHandler = cInputParameterHandler()

Ce qui est également très important à noter, c'est ceci: https://github.com/detobel36/venom-xbmc-addons/blob/tmdbHelperDirectLink/plugin.video.vstream/resources/lib/search.py#L234

Le videoParams = searchResult['params'] (ici) correspond au Outputparameters
Et on fait un:

newSearchResult['params'].mergeUnexistingInfos(videoParams)

Ce qui permet de rajouter les "output" à l'"input" existant...
Et c'est ici qu'on fait le call (donc pour reprendre mon exemple showLinks, showHosters, ...) en mettant l'input "à la main".

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pour être encore plus clair, il faudrait que je fasse un "vrai" exemple en exécutant vStream avec un seul hoster et des "print" de débug 😉

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

je vois bien que l'input est passé en paramètre.
Mais pour moi il contient toujours la même chose : les paramètres de l'url.
Je ne trouvais pas à quel moment il pouvait contenir autre chose, et donc l'intérêt de le passer en paramètre.

Mais là tu me dis :

newSearchResult['params'].mergeUnexistingInfos(videoParams)
Ce qui permet de rajouter les "output" à l'"input" existant...

C'est sans doute ce qu'il me manquait pour comprendre, je vais regarder cette partie...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quelque chose qu'il faut bien comprendre aussi c'est que je n'ai pas renommé toutes les variables, mais quand j'appel "à la main" les requêtes, je ne passe pas l'inputParamter mais bien l'outputParamters reçu par la méthode précédente ;)

Donc l'objet n'est pas un "input" mais bien un "output" (même si python pourrais "penser" que c'est un input).

Copy link
Collaborator

@sizanic sizanic Feb 28, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, je vois bien maintenant.

si le input n'est pas passé en paramètre, on le récupère comme avant avec un

if not oInputParameterHandler:
        oInputParameterHandler = cInputParameterHandler()

Et s'il est passé en paramètre, c'est toi qui l'a mis lors d'un appel implicite, en récupérant l'ancien output (que tu enrichis au besoin) ici : https://github.com/detobel36/venom-xbmc-addons/blob/8a46b897e5ca330f4781bf77a400672502822a82/plugin.video.vstream/resources/lib/search.py#L259

Tout ce que tu as mis en place permet de résoudre exactement la même problématique que j'ai eu pour les appels implicites lorsque je recherche des épisodes suivants d'une série. Avant d'appeler les addSeason et addEpisode, je devais passer des paramètres contextuels.

La solution que j'ai trouvé, était tout simplement de modifier l'url :

https://github.com/detobel36/venom-xbmc-addons/blob/8a46b897e5ca330f4781bf77a400672502822a82/plugin.video.vstream/resources/lib/upnext.py#L156

Tu noteras que le sParam que j'utilises provient plus haut de :

 sParams = oOutputParameterHandler.getParameterAsUri()`

Copy link
Contributor Author

@detobel36 detobel36 Feb 28, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sauf que tout ça ne marche pas quand tu es dans du multi thread...
La variable sys.argv est partagée par tous les threads il me semble...

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

En effet, ça ne marchera pas en multithread.

plugin.video.vstream/resources/language/French/strings.po Outdated Show resolved Hide resolved
plugin.video.vstream/resources/hosters/viki.py Outdated Show resolved Hide resolved
self.listRemainingPlugins = [plugin['name'] for plugin in listPlugins]
cGui.resetSearchResult()
return listPlugins
except Exception as error:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

je ne vois pas à quel moment peut arriver une exception.
Donc si un exception peut arriver apres le
self._progressInit()

Et je ne sais plus si ce progressInit ouvre la progressBar.

Donc je me demande s'il faut mettre un :
self._progressForceClose()

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne sais plus pourquoi j'ai mis ce except...
Je voulais faire en sorte que le code soit assez "robuste". Je pense rajouter self._progressForceClose(). Mais si ce n'est pas utile, pour moi, ça va de supprimer ce try except.

plugin.video.vstream/resources/lib/search.py Outdated Show resolved Hide resolved
def getMediaLink(self):
raise NotImplementedError()
def getMediaLink(self, autoPlay = False):
return self._getMediaLinkForGuest(autoPlay)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Plutot que descendre autoplay en paramètre de _getMediaLinkForGuest
on pourrait le garder et mettre un getter pour ceux qui veulent la valeur :

def getMediaLink(self, autoPlay = False):
        self.autoPlay = autoPlay
        return self._getMediaLinkForGuest()

Qu'en pense-tu ?

yearScore = self._isYearCorrect(result, searchInfo)
titleScore = self._isMovieTitleCorrect(result, searchInfo)
langScore = self._isLangCorrect(result, searchInfo)
catScore = self._isCategorieCorrect(result, searchInfo)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lorsqu'on lance une recherche, la catégorie doit être précisée.
Donc il ne devrait pas être nécessaire de vérifier la catégorie en retour car les résultats sont censés correspondre à la catégorie demandée.
Si ce n'est pas le cas, c'est la fonction de recherche de la source qui doit être corrigée, mais pas filtrée ensuite.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alors, il faut que je vérifie, mais il me semble que certains site ne permettent pas d'avoir la catégorie "directement". Une recharge générale retourne tous les résultats, et puis quand tu "sélectionne" un élément, ça peut changer de catégorie.

@sizanic
Copy link
Collaborator

sizanic commented Feb 27, 2022

ok, je ne dois pas maitriser le système de review 😄
Je viens de comprendre qu'il fallait soumettre pour qu'elle soit visible.

@detobel36
Copy link
Contributor Author

Du coup, j'ai fais un fixup...
Pour ceux qui ne connaitrait pas, ça permet aux personnes qui ont déjà review de ne pas devoir "tout" review mais seulement les corrections faites.

Ici en l'occurence: 89af7e7

Avant de merge, on "rebase" afin d'intégrer directement les fix dans les commits existant 😉

@sizanic
Copy link
Collaborator

sizanic commented Mar 4, 2022

Cette pull request est trop grosse.
Trop de modifications recouvrant plusieurs fonctionnalités.

Pour l'instant, j'ai mergé cette partie :

  • déplacer la recherche "globalSearch" dans un fichier search.py
  • multi thread la recherche

@Kodi-vStream Kodi-vStream deleted a comment May 9, 2022
@Kodi-vStream Kodi-vStream deleted a comment May 9, 2022
@detobel36
Copy link
Contributor Author

J'ai corrigé les conflits mais j'ai pas encore re-testé...

Je dois également repasser sur les remarques faites pour être sûr d'avoir fait les modifications 😉

@detobel36
Copy link
Contributor Author

Je test la fonctionnalité depuis quelques jours/semaines et personnellement je n'ai pas eu de gros bug...
Juste le nombre de résultat qui n'est pas toujours correcte suite au multi-thread (mais je suis même pas sûr que c'est lié à cette PR).

@sizanic
Copy link
Collaborator

sizanic commented Jul 10, 2022

Tu testes le multi-thread de la recherche ou le lien tmdb ?
Car le multi-thread de recherche est déjà repris dans vStream 🤔

@detobel36
Copy link
Contributor Author

Tu testes le multi-thread de la recherche ou le lien tmdb ? Car le multi-thread de recherche est déjà repris dans vStream 🤔

Le multi thread est utilisé par le lien tmdb...
Donc je test le fait d'utiliser le "lien direct" et quand je ne trouve pas ce que je veux, j'utilise le lien TMDB pour faire une recharge générale (exactement comme si je faisais cette recherche dans vStream).

Pour m'auto paraphraser, je n'ai pas trouvé de bug sur mon code, mais je pense avoir trouvé un bug dans la version déjà présenté sur ce qui a été merge.

@sizanic
Copy link
Collaborator

sizanic commented Jul 10, 2022

Dans tous les cas, sache qu'on ne t'a pas oublié, on va regarder cela prochainement 👍

@detobel36
Copy link
Contributor Author

detobel36 commented Oct 21, 2022

J'ai rebase et les premiers testes montrent que cela fonctionne toujours...

Je l'utilise au quotidien, donc je reviens vers vous si je trouve un bug.
Je vous laisse faire vos tests de votre côté.

@detobel36
Copy link
Contributor Author

J'ai rebase la PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants