[weboob] [weboob - Feature #403] ICapVideo may support paths

Nicolas Duhamel nicolas.duhamel2 at gmail.com
Mon Nov 29 21:38:16 CET 2010


 On Mon, 29 Nov 2010 19:27:11 +0100, Romain Bignon wrote:
> On 29/Nov - 17:26, Nicolas Duhamel wrote:
>> Alors prenons l'exemple d'AlloshowTv, si on entre dans le répertoire
>> "series",
>> Pour lister les différentes séries le backend doit parcourir de
>> nombreuses pages
>> (cf:
>> http://www.alloshowtv.com/series/categories.php?cat=S&action=all),
>> alors que
>> pour lister les derniers ajouts il suffit de les retrouver sur la
>> page d'acceuil.
>>
>> D'un autre coté rien n’empêche ici de créer un répertoire virtuel
>> "lastadd".
>
> Je pense en effet que le / ne doit contenir que des répertoires, pas
> de content.

 Je ne parlais pas de "/" mais de "/series".

>
>> Imaginons un répertoire contenant de nombreux autres répertoires
>> mais aucun contenu,
>> il est alors impossible de le savoir à l'avance à moins de parcourir
>> tout le répertoire,
>> pour se rendre compte que l'on a que des objets PathNode, ce qui peu
>> être long si cette
>> information est découpée en plusieurs pages.
 
> Attends je ne comprends pas. Pourquoi ce serait plus long ? Avec ta
> méthode de
> retourner deux listes, on a tous les objets NodePath et content d'un
> coup.
> Donc en itérant les deux, on a de la même manière tous les nœuds d'un 
> coup (sous
> entendu sans faire davantage de requêtes).

 Je retourne des listes dans l'implantation actuelle, puisque c'est la 
 manière la
 plus simple, mais rien n’empêche de retourner des generator, comme je 
 compte faire
 pour le backend alloshowtv avec la liste des séries, on a donc pas 
 forcément tous les
 objets d'un coup.

 
>> Je trouve que retourner une simple liste nous prive d'informations
>> qui peuvent être utiles
>> pour optimiser la navigation.
>
> Idem, je ne comprends pas ce que ça change.
 On ignore tant qu'on a pas parcouru l'objet retourné si
 - le path contient d'autre path
 - le path contient des objets
 - en quelle quantité

 En utilisant un objet iterable donc qui peu se comporter exactement 
 comme tu
 le demande, mais qui possède également deux attributs, paths et 
 content, qui sont soit
 des listes soit des generator, on conserve ces informations.
 Si l'attribut est une liste on connait ça taille, si c'est un generator 
 on en
 conclus qu'il est potentiellement très grand, et on sait tout de suite 
 si il est nul.

 for obj in iter_path():
  ...

 for path in iter_path().path:
  ...

 for item in iter_path().content:
  ...


 Je rends les armes ;-) , on n'a peu être pas la même vision des choses, 
 je vais
 l'implanter avec un iterable simple comme tu le demandes.
 
>> En lisant ton explication, je remarque que tu voudrais que les paths
>> soient communs entre les
>> backends, c'est vrai que ça pourrait être utile, mais ça nécessite
>> de parcourir l'intégralité du
>> contenu du path sélectionné pour chaque backends et d'en faire
>> l'union. Imagine une requête series
>> sur le backend alloshowtv et dpstream.
>> cf: http://www.alloshowtv.com/series/categories.php?cat=S&action=all
>> http://www.dpstream.net/serie.html
>> ça risque de prendre un certain temps!
>
> Les requêtes sont faites en parallèle. Et si le gars ne veut 
> parcourir qu'un
> seul backend, il lui suffit dans videoob de faire « backends only
> alloshowtv ».

 Autant pour moi ;-)

 Bonne soirée
 Nicolas



More information about the weboob mailing list