Roromis / Lalf-Forumactif

Script permettant de convertir un forum hébergé par Forumactif en forum phpbb.
https://roromis.github.io/Lalf-Forumactif/
GNU General Public License v3.0
21 stars 13 forks source link

AttributeError: 'NoneType' object has no attribute 'group' #45

Closed ArnoHolo closed 8 years ago

ArnoHolo commented 8 years ago

Hello, j'ai cette erreur...

Traceback (most recent call last):
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/__init__.py", line 58, in main
    bb.export()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 116, in export
    child.export()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 112, in export
    self._export_()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/groups.py", line 149, in _export_
    oldid = int(urlpattern.fullmatch(link.attr("href")).group(1))
AttributeError: 'NoneType' object has no attribute 'group'

Je suis sous Mac OS X, et j'ai bien installé les librairies. Ça a bien extrait les utilisateurs, donc je pense que ce n'est pas un problème de librairies.

D'ailleurs voilà ce que j'ai dû installer, pour compléter la documentation du site :

installer brew : http://brew.sh/

brew install python

brew install gocr

brew install Caskroom/cask/anaconda

export PATH="/Users/<username>/anaconda3/bin:$PATH”

conda install pip

pip install lxml

pip install pyquery

lancer script : python lalf.py

Voilà mon fichier de débug :

debug.txt

Roromis commented 8 years ago

Non effectivement, ce n'est pas un problème de bibliothèque. Le commit febc5c3 devrait supprimer l'erreur.

Peux tu vérifier que tous les groupes sont exportés? Si tu ne veux pas attendre la fin de l'exportation, tu peux interrompre le script et exécuter ces commandes dans une session python pour afficher les noms des groupes exportés :

from lalf.bb import load
bb = load()
print([g.name for g in bb.children[2].children])

Quelques questions à propos de l'installation:

Je remarque dans ton fichier debug.log que tu as beaucoup d'utilisateurs. Est-ce qu'un dossier usermails a été créé pendant leur exportation?

ArnoHolo commented 8 years ago

Merci !

Nouvelle erreur :

Traceback (most recent call last):
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/__init__.py", line 58, in main
    bb.export()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 116, in export
    child.export()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 112, in export
    self._export_()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/groups.py", line 151, in _export_
    stylematch = stylepattern.fullmatch(link.attr("style"))
TypeError: expected string or bytes-like object

Effectivement, ça doit être python3. Je l'avais déjà d'installé il y a quelques mois.

Pour Anaconda, c'est parce que pip ne fonctionnait pas et n'était pas disponible dans brew. Mais peut-être qu'il y a moyen de l'avoir quand même avec ? J'avoue ne pas avoir trop longtemps cherché.

Pas de dossier usermails, non... (Et oui, c'est un forum de 2000 utilisateurs environ.)

Roromis commented 8 years ago

Bon visiblement les groupes ne sont pas listés de la même façon chez toi que chez moi... J'ai encore tenté de faire une correction (217e52b).

Visiblement pip est inclus dans la formule python3, mais il faut exécuter pip3 au lieu de pip (et python3 au lieu de python). Tes problèmes viennent peut-être de là?

Pas de dossier usermails, non... (Et oui, c'est un forum de 2000 utilisateurs environ.)

Ok, merci!

ArnoHolo commented 8 years ago

Merci !!

Ça a permis d'extraire les groupes, et c'est passé aux messages.

Cependant, une autre erreur :

Traceback (most recent call last):
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/__init__.py", line 58, in main
    bb.export()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 116, in export
    child.export()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 116, in export
    child.export()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 116, in export
    child.export()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 116, in export
    child.export()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 116, in export
    child.export()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 112, in export
    self._export_()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/posts.py", line 128, in _export_
    timestamp = parse_date(e("table td span.postdetails").contents()[3])
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/util.py", line 119, in parse_date
    post_date, post_time = string.split(" - ")
ValueError: not enough values to unpack (expected 2, got 1)

J'ai essayé avec python et python3, mais après coup je me suis rendu compte que le premier lançait python 3.5.1, bref peu différent.

Roromis commented 8 years ago

Tu as l'erreur dès le premier post, ou des posts sont exportés?

As-tu bien configuré le format de date (voir documentation)?

Si c'est le cas, dans le fichier lalf/topics.py, ligne 128, peux-tu ajouter la ligne suivante (avec des espaces en début de ligne, pas de tabulations):

            # Get the date and time of the post
            print(e("table td span.postdetails").outerHtml()) # ajoute cette ligne
            timestamp = parse_date(e("table td span.postdetails").contents()[3])

Puis relance le lalf, et envoie moi les dernières lignes du fichier debug.log (en incluant une dizaine de lignes avant ERROR : Une erreur est survenue...). Il y aura du code html, vérifie qu'il n'y a rien de privé dedans (normalement il n'y aura que des titres de messages, tu peux les censurer si tu veux).

ArnoHolo commented 8 years ago

Des posts sont bien exportés et la date est bien réglée.

J'ai relancé et j'ai toujours la même erreur à la fin du débug.log. Les lignes d'avant l'erreur sont :

DEBUG    : Récupération des messages du sujet 4785 (page 50)
DEBUG    : Connection au forum
DEBUG    : Récupération du sid
DEBUG    : Récupération du tid
INFO     : Récupération du message 303858 (sujet 4785)
INFO     : Récupération du message 303859 (sujet 4785)
INFO     : Récupération du message 303860 (sujet 4785)
INFO     : Récupération du message 303867 (sujet 4785)
INFO     : Récupération du message 303910 (sujet 4785)
INFO     : Récupération du message 303919 (sujet 4785)
INFO     : Récupération du message 303980 (sujet 4785)
INFO     : Sauvegarde de l'état courant.

Je pense que c'est parce que le script recherche un tiret (-) mais quand il s'agit d'un message du jour (j'ai retrouvé le topic en question), il n'y en a pas. ("Aujourd'hui à 10:00")

Roromis commented 8 years ago

Ah ok, Forumactif a changé le format des dates des messages récents. Je fais mes tests sur un vieux forum donc je ne m'en suis pas rendu compte... C'est corrigé (6ec9dd4).

Roromis commented 8 years ago

Je ferme ce ticket puisqu'on est passé à un autre problème.