Kodi-vStream / venom-xbmc-addons

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

Votre avis sur parsetitle #1246

Closed LordVenom closed 7 years ago

LordVenom commented 7 years ago

Voila comment ça fonctionne

sPattern = '(?P<title>.+)\sSaison\s(?P<season>.+)'
ResultTitle = oParser.titleParse(sName, sPattern)
sResultTitle['qual'] = aEntry[3]

print sResultTitle

ça retourne un dict {title:montitre, season:02} ect.. que guielement sais traduire et colorer. Reste quelque reglage a faire mais pour le traitement c'est pas mal mais il faut que les sites soit un peux logique sur alluc même pas la peine.

TmpName commented 7 years ago

Mais c'est pour mettre ou ? guielement sais deja traduire et colorer, tu veux encore refaire la fonction TraiteTitre() ?

LordVenom commented 7 years ago

Oui et non comme j'avais dit je cherche un autre system et je suis toujours pas satisfer du traite titre y a que toi qui comprend ceux qu'il fait lolll.Mais je fait des test en off je voulais juste ton avis sur le traitement si tu voie une limite ou une logique qui m’échappe peux être.

TmpName commented 7 years ago

Ben je vois une limite ^^, la complexite du regex. Tu vas mettre quoi comme regex pour traiter ces 2 titres en meme temps ? "blabla saison 1" "saison 1 blabla" Et c'est pas des cas complexes. Beacoup plus facile avec la methode en place.

LordVenom commented 7 years ago

Ha mais c'est destiner au site pas au coeur, le coeur lui coloriser et dispatche les saisons anné ect.. si il sont la.

TmpName commented 7 years ago

Ha ok, j'avais pas compris. Alors j'ai peur pr la surcharge de calcul, un calcul de regex dans la partie site, puis encore dans le Gui (meme si du coup il sera plus leger). Y a pas moyen de faire que avec la partie GUI, y aura jamais plus performant, tu en aurais besoin ailleurs et avant le traitement ?

LordVenom commented 7 years ago

Le plus rapide et aussi le plus simple en terme de dev futur ces que les sites gere les oGuiElement.setTitle() oGuiElement.setSaison() ext.. et arette les Output qui donne des urls de dingue.

Mais bon en compromis tu (oParser.title) le title et tu retourne le resultat dans addmovie puis guielement .format le titre et dispatche les saison episode année ect..

Dans le Gui y a pas de calcul juste un Format soit c'est du code mais question vitesse c'est respectable.

J'ai deja fait un bon ménage sur les addtv ect.. qui sont gerer direct dans les fichiers sites eux même.virer de Gui.

TmpName commented 7 years ago

Ha oui gros prb sur les urls. Mais si le titre est brut, ca va juste donner "title=nom de la serie Saisons 4 epsiode 8" je trouve pas ca enorme comme code en plus, compare au boulot de recuperer ces infs sur cxhaque fichier sites de maniere independante.

Par contre je pense encore avoir vu des [color] passer dans des cOutputParameterHandler.

LordVenom commented 7 years ago

MovieTitle et la a cause de l'abense de titre propre dans guielement si ont peux tirer un titre propre ben du titre c'est dejas ça de virer et moi il me pompe l'air ce movietitle je sais jamais ceux qui y a dedans.

TmpName commented 7 years ago

Pareil, et il y a souvent des bugs a cause de ca. Le code utilise un coup l'un, un coup l'autre.

La par contre moi je suis pour: 1 - Virer sMovieTitle. 2 - Forcer un titre clean dans sTitle, la j'entend titre complet avec saison episode, caracteres speciaux, mais PAS de couleurs. 3 - Couleur uniqument via oGui.addMovie mais jamais oOutputParameterHandler.addParameter.

Mais d'ailleurs il vient d'ou ce parametre ? Dans le code on utilise que sMovieTitle pkoi on voit sTitle en parametre dans les liens ? Prb dans guielement ?

LordVenom commented 7 years ago

sTitle et le titre afficher sMovietitle et le title qui seras utiliser dans la base de donnée, pour reutilisation par exemple.

TmpName commented 7 years ago

J'ai plus le code en memoire mais y a vraiment besoin du titre affiche ? On le passe a la fonction qui l'affiche et on l'oublis direct sans le repasser en url ? Si je suis assez clair.

LordVenom commented 7 years ago

La tu m'en demande trop avec tous les changements je me suis perdu et c'est vraiment pas le plus motivant comme taff donc tranquillement mais surement.

LordVenom commented 7 years ago

En gros quand ont passe une saison ou autre par guielement il faudrais utiliser xbmc.getInfoLabel('ListItem.season') pour récuperer l'info et pas un output mais la tous et mélanger certain arrive par guielement d'autre en out et sMovieTitre c'est juste le titre passer dans str_conv de config titre propre sans couleur sans saison puisque les saisons sont gerer dans guielement.

D'ou mon code si une info n'est pas au bon format elle et ignorer et basta masque perdu ont n'en parle plus.

Donc ça fait deux traitement de parse en plus dans les fichiers sites mais plus aucun derniere sur str_conv qui lui et drastique pour cause de BDD.Mais pas facille a mêtre en place le regex sur du titre et trés chiant mais les deux fonctionne en même temp donc ont peux faire ça tranquille jusqu'a l’épuration du code qui commence sérieusement a en avoir besoin.C'etait pas penser pour autant de source lol

LordVenom commented 7 years ago

Le soucis c'est la nivagation meme avec xbmc.getInfoLabel si tu fait un Back il a oublier donc ont peux passer en url le dict {Season :03, title:montitre} pour pouvoir le reutilser ont peux pas faire autrement.Le soucis c'est le host qui ajoute le nom du host a titre et donc transforme le dict en str de la il le comprend plus.

LordVenom commented 7 years ago

1 - Virer sMovieTitle. / pas possible pour le back xbmc a tout oulier même le titre. Mais dans les param tu aurais plus plusieur titre genre filename movie ect.. 2 - Forcer un titre clean dans sTitle, la j'entend titre complet avec saison episode, caracteres speciaux, mais PAS de couleurs. D'ou l'idée d'un dict qui comtient toute les info séparer et seul l'affichage le colorise mais ça surement gener pour le context menu. a voir...

3 - Couleur uniqument via oGui.addMovie mais jamais oOutputParameterHandler.addParameter. c'est simple a faire mais pour le moment pas de dict ancien traitement et dans le futur pas de dict pas de traitement purement et simplement.

LordVenom commented 7 years ago

note trouver comment modifier Hoster setDisplayName sans modifier tout les hosts.

TmpName commented 7 years ago

Mais le dictionnaire tu voudrais le faire passer comment ? par oOutputParameterHandler.addParameter ou oGui.addMovie ? Dans les 2 cas tu passes au meme endroit le titre complet qui va etre parse et qui pourait renvoyer tes infos au bon endroit, si j'ai bien compris. Car en parametre Stitle="Season 03 montitre" ou un sDict = {Season :03, title:montitre} c'est pas plus court.

TmpName commented 7 years ago

Sinon autre soucis. Pour viewinfo on utilise sFileName = oInputParameterHandler.getValue('sFileName')

Pkoi ne pas utiliser sTitle = oInputParameterHandler.getValue('sTitle') qui est plus facilement nettoyable ?

def setFileName(self, sFileName): self.__sFileName = self.str_conv(sFileName) Probleme la fonction str_conv qui a l'origine servait juste a formater les titres dans un format compatible avec la base de donnee, fait aussi un triatement via regex. Et elle est bugguee du coup ca fait deconner viewinfo.

addMovieDB(ID,fonction,sLabel ,icone, ......)

 if oOutputParameterHandler.getValue('sMovieTitle'):
     sTitle = oOutputParameterHandler.getValue('sMovieTitle')
     oGuiElement.setFileName(sTitle)

Je commence a douter de l'utilite de sMovieTitle, depuis un moment il n'y a plus de sMovieTitle propre (avec juste un titre), on est oblige d'y passer par exemple la saison ou la langue, car a la page d'apres ce n'est pas memorise. D'ou le patch dans str_conv. page 1 > sMovieTitle = titre page 2 > sMovieTitle = titre saison 4 page 3 > sMovieTitle = titre saison saison 4 VF episode 8

Par contre la fonction TraiteTitre, elle est capable de donner le titre propre, sans deco, sans la langue, et sans faire de calcul regex en plus, suffirait de mettre self.setFileName(sTitle) vers la ligne 304.

Probleme, dans de rares cas, on utilise la vielle methode, c'est a dire par exemple sMovieTitle = Saison4 episode 8 nom de serie sLabel (passe via addMovieDB) = Saison4 episode 8 nom de serie NOM_DE_HOSTER VF Et la pas de bol, on se retrouve avec le cas inverse, et le code actuel marche mieux.

Je pense que ca rejoint ton idee pr le dictionnaire, mais comment le faire passer d'une page a l'autre ?

Et on ne peut pas faire un traitement pour les 2, faut pas deconner.

PS: je reprend mon soufle, suite dans 10mn)

TmpName commented 7 years ago

Methode 1 : tout passer par sLabel On ne se sert plus de sMovieTitle, le titre est donne par TraiteTitre() Avantage:

Inconvenient

Methode 2: le dictionnnaire La par contre je te laisse continuer, car je ne vois pas du tout ou l'inserer ^^. Mais d'apres ce que je comprend au lieu d'avoir sMovieTitle = titre en vrac on aurait sMovieTitle=(titre;:blabla,'saison':4,'episode:8) Mais si c'est ca faudrait recuperer les infos de TraiteTitre() et les repasser en ligne de commande, mais comment ?

TmpName commented 7 years ago

Bon j'ai peu etre une idee, c'est la fonction traitetitre qui genererait ton dictionnaire et qui le rajouterait dans oOutputParameterHandler dans addFolder() juste avant le

sItemUrl = self.__createItemUrl(oGuiElement, oOutputParameterHandler)

Mais dans ce cas on vire sMovieTitle, sinon ca va faire 3 parametres contenant le titre.

LordVenom commented 7 years ago

Mais les site ont besoin d'un movietitle pour le retour arriere.

LordVenom commented 7 years ago

Bon imagine la ont a
"siteUrl": oGuiElement.setSiteUrl,#indispensable "sTmdbId": oGuiElement.setTmdbId, "sImbdId": oGuiElement.setImdbId,#inutile ? "sYear": oGuiElement.setYear

defoix sSaison et sEpisode

url = siteUrl=url&title=montitre saison 1 episode 4&sTmdb=2155&episode=4&saison=1& ect..

url=siteUrl=url&title={title:montitre,saison:1,episode:4,tmdb:2155}

Pas de rapelle saison = et l'usage devrais être simplifier.

Come l'addon ne peux pas ce souvenirs de info bien obliger de les passer en param

LordVenom commented 7 years ago

voila un param

{'function': 'showHosters', 'sMovieTitle': 'Ai%20Shoujo%20Pollyanna%20Monogatari%20Episode%20005%20%5bVF%5d', 'siteUrl': 'http%3a%2f%2fwww.adkami.com%2findex.php%3fpage%3dmanga%26id%3d1874%26episode%3d005%26version%3d1%26genre%3d1', 'site': 'adkami_com', 'title': '%5bCOLOR%20lightcoral%5dE005%5b%2fCOLOR%5d%20Ai%20Shoujo%20Pollyanna%20Monogatari%20%5bCOLOR%20lightcoral%5d%5bVF%5d%5b%2fCOLOR%5d'}

title ne "peux pas être suprimer puisqu'il et directement donner dans le creation de l'element

sItemUrl = '%s?site=%s&title=%s&%s' % (sPluginPath, oGuiElement.getSiteName(), urllib.quote_plus(oGuiElement.getTitle()), sParams)

LordVenom commented 7 years ago

Solution modifier oListItem = xbmcgui.ListItem(oGuiElement.getTitle(), oGuiElement.getTitleSecond(), iconImage=oGuiElement.getIcon(), thumbnailImage=oGuiElement.getThumbnail()) oListItem.setInfo(oGuiElement.getType(), oGuiElement.getItemValues())

c'est ce oGuiElement.getTitle() qui doit avoir le format.

LordVenom commented 7 years ago

{'function': 'showHosters', 'siteUrl': 'http%3a%2f%2fwww.adkami.com%2findex.php%3fpage%3dmanga%26id%3d1874%26episode%3d005%26version%3d1%26genre%3d1', 'site': 'adkami_com', 'title': '%7b%27lang%27%3a%20%27vf%27%2c%20%27episode%27%3a%20%27005%27%2c%20%27title%27%3a%20%27Ai%20Shoujo%20Pollyanna%20Monogatari%27%7d'}

LordVenom commented 7 years ago

Bon j'avance mais ça bug arrive au hoster.

LordVenom commented 7 years ago

Bon je vais pas tarder a faire la mise a jour ont continue de regarder aprés comme ça ont a du temp pour les test.

TmpName commented 7 years ago

Y a un test a faire pr le retour arriere pour tester l'obligation de smovietitle ? Car chez moi, il n'y a pas de chargement, rien qui bouge dans les logs, c'est juste un re-affichage de la page memorise. Enfin je dis ca sans avoir fait de test, mais je trouve ca bizarre.

Donc en resume qui vont passer en parametre (et pr moi ca suffit) function': 'showHosters siteUrl': 'vvv:/site/adresse/page' site': 'site_com' 'title': Titre A AFFICHER 'data' (par exemple) : {title:montitre,saison:1,episode:4,tmdb:2155,'years':2015} 'post':'balbla' (certains sites ont un parametre en plus pr le code)

sMovieTitle ???

Maintenant ma question N°1, je suis dans le fichier site, j'ai extrait via regex la chaine de caractere "Nom de serie Saison 7 VF", j'en fais quoi ? sachant que je veux aussi afficher a la fin du titre "WEBRYP opnlad"

Faire 'data' : {title:montitre,saison:1,episode:4,tmdb:2155,'years':2015,'bonus':'WEBRYP Opnld'} et Traitetitre() rajoute en fin de titre le "bonus" ? Du coup 'title': Titre A AFFICHER ne sert plus a rien du tout.

Et la question N°2, comment garder la compatibilite entre les versions ? Faire un second repertoire, pour les nouvelles sources pr 1 mois, le temps que tout le monde switche ?

ghost commented 7 years ago

Pour ta premiere phrase chez moi souvent le retour arriere rapelle la fonction precedente Fonctionnement normal je pense le cache de kodi ne fonctionne pas souvent

LordVenom commented 7 years ago

Le cache a une limite d'utilisation il faut + de 25 entrer pour l'activer il me semble.

LordVenom commented 7 years ago

Je travail sur toute tes questions j'ai pas encore la réponse puisque je suis pas sure des retours code mais si j'arrive a passé un Dict peux importe que tu le face toi même ou via le parse le resultat et le même il suffis d'utiliser les bons mot clef voir guielement function traitetitle.Je travailler pour coloriser a la sortis et plus a l'entrer pour avoir un titre= propre dans l'url. maintenant c'est possible avant c'etait pas possible.

Pour la compatibiliter a voir un pire il aurons un texte brut.

LordVenom commented 7 years ago

hum

function': 'showHosters siteUrl': 'vvv:/site/adresse/page' site': 'site_com' 'title': si dict affichage couleur sinon juste title {title:montitre,saison:1,episode:4,tmdb:2155,'years':2015}

Non les besoin supplémentairement seront toujours en outputt puis output = sysarg

LordVenom commented 7 years ago

Pour exemple c'est propre non ? 7ms tranquille

https://regex101.com/r/ei6lul/2

Note il reste 1 petit bug mais c'est pour l'exemple je vire les - avec un replace et op.

TmpName commented 7 years ago

Oui mais ca ne marche que si tout est dans le bon ordre. "Saison 4 ma serie" marchera pas. C'est impossible de prendre tout les cas possible avec un seul regex, (enfin si mais laisse tomber le monstre), il vaut mieux plusieurs regex et une boucle.

Par contre c'est super cette fonction pour partager les regex ^^, je connaissais pas.

LordVenom commented 7 years ago

Oui oui mais peux importe la c'est le regex de parstitle mais tu peux faire en supr search ect.. temps que à la fin du retourne un Dict propre pas de soucis.

Et tous ce qui et inutile les - les saisons Saisons Episode en tream ect.. une foix parse fini ont en parle plus Le coeur vas pas tourner dans tous les sens pour evaluer toute les possibiliter.

Logiquement au final si tu veut réaffiche une info tu fait output [title] et il vas lui même recolorer tout. le but etant de garder le Dict propre et du plus avoir de titre [color = & ] dans guielement et de facto dans l'url de l'addon.

LordVenom commented 7 years ago

Bon ça tourne sans smovietitre mais le host n'affiche pas les couleurs et les saisons simple il y a une balise [color= dans le host ça vas être chiant.

Edit non mais rien le IsFolder fait des truc bizarre j'ai du faire autrement.

LordVenom commented 7 years ago

C'est impossible de prendre tout les cas possible avec un seul regex, (enfin si mais laisse tomber le monstre), il vaut mieux plusieurs regex et une boucle.

un exemple ?

TmpName commented 7 years ago

Un exemple, mais non fonctionnel, c'est juste pr te montrer l'horreur que ca peut etre.

https://regex101.com/r/4MBiJ2/1

Il deconne plein pot, il faudrait utiliser \G qui demarre au debut ou a la fin du dernier regex detecte pour n'avoir qu'un chaine de detection, mais ca deconne chez moi.

Maintenant imagine le croise avec celui de Traitetitre qui est plus efficace ...

LordVenom commented 7 years ago

Je parler d un exemple de la boucle.

Note: je suis triste ça ma prix un plombe pour mon exemple...

TmpName commented 7 years ago

Ben la boucle y 'en a une dans TraiteTitre.

LordVenom commented 7 years ago

Alors la tu m'a perdu...

LordVenom commented 7 years ago

Sinon toujour dans le fichier site

              sPattern = 'Episode\s(?P<episode>.+)'
                sResultTitle = oParser.titleParse(aEntry[2], sPattern)
                sPattern = 'Saison\s(?P<season>.+)'
                sResultTitle.update(oParser.titleParse(sSaison, sPattern))
                ou sResultTitle['title'] = "mon titre

Mais bon je suis loin d'un bon resultat toujours en Off pour le moment.

TmpName commented 7 years ago

En fait TraiteTitre est une boucle qui traite tout les regex un par un.

LordVenom commented 7 years ago

Pour finir:

pour recuperer un titre propre oInputParameterHandler.getValue('title') inutile d'envoyer en plus un movietitle

stitle d'une fonction addmovie, adddir ect.. ce divise toute seul en 3 sTitle vas etre transformer pour couleur scleantitle seras renvoyer d'en l'url title="titre propre sans couleur" sfilename deriver de cleantitle transformer pour la creation de dossier ou BDD