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

Logiciel encore d'actualité ? Toujour la même erreur : FileNotFoundError(2, 'No such file or directory')) #75

Open rellik777 opened 3 years ago

rellik777 commented 3 years ago

Bonjour,

J'aurai aimé savoir si le logiciel était toujours d'actualité ? Après plusieurs tentatives infructueuses je me posais la question sur la possibilité d'exporter un ForumActif vers un phpbb. debug.log

Peut être est-ce moi qui ai mal fait quelque chose, ce n'est pas impossible, j'ai pourtant bien suivi la documentation.

rellik777 commented 3 years ago

Un petit avancement, en désactivant l'export des émoticones, j'arrive déjà à exporter les membres du forum avec quelques déconnexion mais c'est normal :

Exporter les émoticones

export_smilies=false

INFO     : Lalf 3.0a0
DEBUG    : OS : win32
INFO     : Récupération des statistiques
DEBUG    : Connection au forum
DEBUG    : Récupération du sid
DEBUG    : Récupération du tid
DEBUG    : Messages : 265864
DEBUG    : Sujets : 15832
DEBUG    : Membres : 1044
INFO     : Récupération des émoticones
DEBUG    : Récupération des émoticones (page 0)
INFO     : Récupération des membres
DEBUG    : Récupération des membres (page 0)
INFO     : Récupération du membre 1
INFO     : Récupération du membre 4
INFO     : Récupération du membre 6
INFO     : Récupération du membre 7

Mais après, pas de récupération des groupes ni de récupération des forums :

INFO     : Récupération des groupes
INFO     : Récupération des forums
INFO     : Sauvegarde de l'état courant.
ERROR    : Une erreur est survenue. Essayez de relancer le script. Si vous rencontrez la même erreur (KeyError('f85',)), créez un rapport de bug à l'adresse suivante SI ELLE N'A PAS ENCORE ÉTÉ SIGNALÉE :
https://github.com/Roromis/Lalf-Forumactif/issues
Traceback (most recent call last):
  File "c:\miniconda\lib\site-packages\lalf\__init__.py", line 58, in main
    bb.export()
  File "c:\miniconda\lib\site-packages\lalf\node.py", line 116, in export
    child.export()
  File "c:\miniconda\lib\site-packages\lalf\node.py", line 112, in export
    self._export_()
  File "c:\miniconda\lib\site-packages\lalf\forums.py", line 238, in _export_
    self.get_subforums_infos(response.text)
  File "c:\miniconda\lib\site-packages\lalf\forums.py", line 262, in get_subforums_infos
    self.forums[oldid].status = 1 if "verrouillé" in alt else 0
KeyError: 'f85'

A voir à quoi ça correspond.

rellik777 commented 3 years ago

Bon j'avance un peu, mais pas beaucoup, à première l'erreur précédente était due une rubrique petites annonces qui ne pouvait être traitée par lalf. Du coup suppression de la rubrique, j'arrive à ça maintenant :

Récupération des forums
Sauvegarde de l'état courant.
ERROR    : Une erreur est survenue. Essayez de relancer le script. Si vous rencontrez la même erreur (ValueError("invalid literal for int() with base 10: ''",)), créez un rapport de bug à l'adresse suivante SI ELLE N'A PAS ENCORE ÉTÉ SIGNALÉE :
https://github.com/Roromis/Lalf-Forumactif/issues
Traceback (most recent call last):
  File "c:\miniconda\lib\site-packages\lalf\__init__.py", line 58, in main
    bb.export()
  File "c:\miniconda\lib\site-packages\lalf\node.py", line 116, in export
    child.export()
  File "c:\miniconda\lib\site-packages\lalf\node.py", line 112, in export
    self._export_()
  File "c:\miniconda\lib\site-packages\lalf\forums.py", line 238, in _export_
    self.get_subforums_infos(response.text)
  File "c:\miniconda\lib\site-packages\lalf\forums.py", line 270, in get_subforums_infos
    self.forums[oldid].num_topics = int(row("td").eq(2).text())
ValueError: invalid literal for int() with base 10: ''

D'après Roromis commented on 15 Apr 2016

Il y a beaucoup d'options pour configurer la page d'accueil, je ne devrais probablement pas l'utiliser pour exporter les forums.... J'essayerai de corriger ça dès que possible. En attendant, si vous avez le même problème, dans le panneau d'administration, ouvrez l'onglet Affichage, cliquez sur le lien Page d'accueil > Structure et hiérarchie dans le menu à gauche, puis sous Séparer les catégories sur l'index, sélectionnez Moyen.

A tester

rellik777 commented 3 years ago

Bon, l'astuce de Roromis n'a pas fonctionné,

ERROR    : Une erreur est survenue. Essayez de relancer le script. Si vous rencontrez la même erreur (ValueError('invalid literal for int() with base 10: "Ce site vous offre la possibilité d\'organiser une pêche entre copains, pour cela contactez l\'administrateur afin qu\'il vous donne accès à l\'écriture. Modalités sur demande.\\ncontact@extreme-peche-au-',)), créez un rapport de bug à l'adresse suivante SI ELLE N'A PAS ENCORE ÉTÉ SIGNALÉE :
https://github.com/Roromis/Lalf-Forumactif/issues
Traceback (most recent call last):
  File "c:\miniconda\lib\site-packages\lalf\__init__.py", line 58, in main
    bb.export()
  File "c:\miniconda\lib\site-packages\lalf\node.py", line 116, in export
    child.export()
  File "c:\miniconda\lib\site-packages\lalf\node.py", line 112, in export
    self._export_()
  File "c:\miniconda\lib\site-packages\lalf\forums.py", line 238, in _export_
    self.get_subforums_infos(response.text)
  File "c:\miniconda\lib\site-packages\lalf\forums.py", line 270, in get_subforums_infos
    self.forums[oldid].num_topics = int(row("td").eq(2).text())
ValueError: invalid literal for int() with base 10: "rubrique à accès restreint, contactez l'administrateur afin qu'il vous donne accès à l'écriture. Modalités sur demande.\nemail@contact.com

Je vais tenté de balancer toutes les sous rubriques en rubriques classiques voir ce que ça va donner.

rellik777 commented 3 years ago

J'avance à tâtons mais j'avance quand même. Alors il semblerait (j'ai bien écrit il semblerait) que le script n'arrive pas à traiter les sous-forums, si je passe les sous-forums en forum classique par catégorie, le script a l'air d'aller un peu plus loin, si je les repasse en sous-forum le script ne va pas plus loin. Je vais faire une tentative en configurant mon forum sans sous-forum d'ici quelques jours et je vous donnerai le résultat.

rellik777 commented 3 years ago

Encore une petite avancée ce matin ;). J'ai remarqué que le script n'arrivait pas à traiter les forums avec des descriptions exotiques, donc pour réussir l'export les catégories et les forums doivent avoir des descriptions simples voir pas de description du tout ça facilitera encore plus l'export.

rellik777 commented 3 years ago

Petites nouvelles du jour. A première vue l'export des catégories et messages du forum c'est bien déroulé, j'ai obtenu un save.pickle de plusieurs centaines de Mo et en le consultant avec notepad on constate qu'il y a du contenu qui correspond au contenu du FA. Mais maintenant ça galère sur l'export des emails des membres :

INFO     : L'adresse email de l'utilisateur pseudomembre2048 n'a pas pu être exportée.
INFO     : Récupération du membre 2048
INFO     : L'adresse email de l'utilisateur pseudomembre n'a pas pu être exportée.
INFO     : Récupération du membre 2048
INFO     : L'adresse email de l'utilisateur pseudomembre n'a pas pu être exportée.
INFO     : L'adresse email de l'utilisateur pseudomembre1 n'a pas pu être exportée.
INFO     : Récupération du membre 1
DEBUG    : Connection au forum
DEBUG    : Récupération du sid
DEBUG    : Récupération du tid
INFO     : L'adresse email de l'utilisateur pseudomembre1 n'a pas pu être exportée.
INFO     : Récupération du membre 1
INFO     : L'adresse email de l'utilisateur pseudomembre1 n'a pas pu être exportée.
INFO     : L'adresse email de l'utilisateur pseudomembre2050 n'a pas pu être exportée.
INFO     : Récupération du membre 2050
INFO     : L'adresse email de l'utilisateur pseudomembre2050 n'a pas pu être exportée.

Mais comme ça le fait sur toutes les tentatives d'export d'adresse email, je suis bloqué par FA et je ne vois plus les emails des membres, je me retrouve avec des moitiés d'adresse email genre ; emaildumembre*****@hotmail.fr du coup impossible de saisir les adresses emails correctement. Je vais essayer de contourner le blocage de FA en créant un fichier qui recense les emails des membres afin de limiter les recherches sur FA et voir ce que ça va donner, ou bien essayer de passer par un autre compte administrateur. Mais ça ne sera pas pour aujourd'hui du coup.

rellik777 commented 3 years ago

Test avec un autre compte administrateur, mais même IP, toujours bloqué par FA ; la solution pour l'instant est donc de faire un fichier texte à part contenant les pseudonymes des utilisateurs et leurs emails genre :

pseudo du membre : 
emaildu@membre.fr

et de faire des copier/coller dans lalf

rellik777 commented 3 years ago

Relance du script pour export des email

L'adresse email de l'utilisateur pseudomembre39 n'a pas pu être exportée.
Récupération du membre 39
Sauvegarde de l'état courant.
ERROR    : Une erreur est survenue. Essayez de relancer le script. Si vous rencontrez la même erreur (KeyboardInterrupt()), créez un rapport de bug à l'adresse suivante SI ELLE N'A PAS ENCORE ÉTÉ SIGNALÉE :
https://github.com/Roromis/Lalf-Forumactif/issues
Traceback (most recent call last):
  File "c:\miniconda\lib\site-packages\lalf\__init__.py", line 63, in main
    user.confirm_email()
  File "c:\miniconda\lib\site-packages\lalf\ocrusers.py", line 212, in confirm_email
    self._export_()
  File "c:\miniconda\lib\site-packages\lalf\ocrusers.py", line 138, in _export_
    response = self.session.get_admin("/admin/index.forum", params=params)
  File "c:\miniconda\lib\site-packages\lalf\session.py", line 174, in get_admin
    return self.get(path, **kwargs)
  File "c:\miniconda\lib\site-packages\lalf\session.py", line 137, in get
    response = self._get(path, **kwargs)
  File "c:\miniconda\lib\site-packages\lalf\session.py", line 72, in _get
    return self.session.get(self.url(path), **kwargs)
  File "c:\miniconda\lib\site-packages\requests\sessions.py", line 531, in get
    return self.request('GET', url, **kwargs)
  File "c:\miniconda\lib\site-packages\requests\sessions.py", line 504, in request
    prep = self.prepare_request(req)
  File "c:\miniconda\lib\site-packages\requests\sessions.py", line 436, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "c:\miniconda\lib\site-packages\requests\models.py", line 303, in prepare
    self.prepare_headers(headers)
  File "c:\miniconda\lib\site-packages\requests\models.py", line 439, in prepare_headers
    self.headers = CaseInsensitiveDict()
  File "c:\miniconda\lib\site-packages\requests\structures.py", line 43, in __init__
    self._store = OrderedDict()
  File "c:\miniconda\lib\collections\__init__.py", line 56, in __init__
    self.__update(*args, **kwds)
  File "c:\miniconda\lib\_collections_abc.py", line 576, in update
    if isinstance(other, Mapping):
  File "c:\miniconda\lib\abc.py", line 184, in __instancecheck__
    subtype = type(instance)
KeyboardInterrupt

Je n'ai pas du tout compris pourquoi ça a buggé (KeybordInterrupt()) je faisais juste des copier/coller des adresses email des membres

rellik777 commented 3 years ago

J'ai fait un test ce matin en créant un tableau avec un tableur type excel dans lequel j'ai mis les pseudonymes des membres du forum ainsi que leurs emails respectifs. Je lance lalf et je copie/colle les emails, c'est fastidieux mais ça fonctionne, sauf que vers la fin de l'export des emails :

ERROR : Une erreur est survenue. Essayez de relancer le script. Si vous rencontrez la même erreur (KeyboardInterrupt())

La rage ! Mais bon je vais nettoyer la liste des membres en supprimant les comptes inactifs histoire d'alléger l'export. Et pour couronner le tout, mon save.pickle s'est retrouvé à 0ko.

Et si par un grand moment d'égarement quelqu'un s'y connait en python et serait capable d'exploiter xlrd ou similaire, afin d'exporter les emails sans passer par la console d'administration de FA ça serait un grand plus. Sachant que l'export des emails sous lalf est actuellement impossible dû aux différents blocage de FA.

rellik777 commented 3 years ago

Bon export du jour pas réussi, à la création du fichier sql, j'ai l'erreur suivante :

Sauvegarde de l'état courant.
Création du fichier phpbb.sql
[################################################################################################################] 100%> c:\miniconda\lib\site-packages\lalf\topics.py(116)_dump_()
-> self.logger.warning("Le sujet %d est vide, sans un seul post (ce qui n'est pas possible). Sujet irrécupérable.", self.topic_id)
(Pdb)

J'essaie de trouver d'où ça peut venir, mais je ne vois pas.

rellik777 commented 3 years ago

Toujours pas d'avancement par rapport à la dernière tentative d'export, même erreur et ça ne va pas plus loin :-(

rellik777 commented 3 years ago

Petit avancement, l'erreur précédente était probablement due par les sujets mis en annonce ou en note, j'ai essayé en repassant les différents sujets en normal et ça a avancé beaucoup plus, j'ai réussi à générer un fichier sql de quelques dizaines de Mo, mais ce dernier est incomplet. L'erreur du jour est la suivante :

WARNING  : La propriété "cellspacing" du bbcode [table] n'est pas supportée.
WARNING  : La propriété "cellpadding" du bbcode [table] n'est pas supportée.
[################################################################################################################] 100%Traceback (most recent call last):
  File "c:\miniconda\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\miniconda\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\miniconda\Scripts\lalf.exe\__main__.py", line 7, in <module>
  File "c:\miniconda\lib\site-packages\lalf\__init__.py", line 77, in main
    bb.dump(sqlfile)
  File "c:\miniconda\lib\site-packages\lalf\node.py", line 149, in dump
    child.dump(sqlfile)
  File "c:\miniconda\lib\site-packages\lalf\node.py", line 149, in dump
    child.dump(sqlfile)
  File "c:\miniconda\lib\site-packages\lalf\node.py", line 149, in dump
    child.dump(sqlfile)
  [Previous line repeated 3 more times]
  File "c:\miniconda\lib\site-packages\lalf\node.py", line 146, in dump
    self._dump_(sqlfile)
  File "c:\miniconda\lib\site-packages\lalf\posts.py", line 67, in _dump_
    post = parser.get_post()
  File "c:\miniconda\lib\site-packages\lalf\htmltobbcode.py", line 238, in get_post
    self.root_node.get_bbcode(fileobj, self.bb, uid)
  File "c:\miniconda\lib\site-packages\lalf\htmltobbcode.py", line 149, in get_bbcode
    child.get_bbcode(fileobj, bb, uid)
  File "c:\miniconda\lib\site-packages\lalf\htmltobbcode.py", line 355, in get_bbcode
    Node.get_bbcode(self, fileobj, bb, uid)
  File "c:\miniconda\lib\site-packages\lalf\htmltobbcode.py", line 149, in get_bbcode
    child.get_bbcode(fileobj, bb, uid)
  File "c:\miniconda\lib\site-packages\lalf\htmltobbcode.py", line 500, in get_bbcode
    url = process_link(bb, self.url)
  File "c:\miniconda\lib\site-packages\lalf\htmltobbcode.py", line 80, in process_link
    scheme, netloc, path, params, query, fragment = urlparse(url)
  File "c:\miniconda\lib\urllib\parse.py", line 373, in urlparse
    splitresult = urlsplit(url, scheme, allow_fragments)
  File "c:\miniconda\lib\urllib\parse.py", line 440, in urlsplit
    raise ValueError("Invalid IPv6 URL")
ValueError: Invalid IPv6 URL
rellik777 commented 3 years ago

Après analyse des logs et des sujets qui engendrent l'erreur ci-dessus, il semblerait que ça provienne de bbcodes mal utilisés ou de messages mal saisie avec des bouts de code, par exemple un bbcode [img]https://xxx.fr[/img] qui serait saisit en [img]<a href="https://xxx.fr[/img] ou bien encore un bbcode [url=]https://xxx.fr[/url] ce ne sont que des exemples possibles car j'ai corrigé énormément de post sur le forum et je suis entrain de retenter un export complet ; mais en corrigeant quelques messages sur le forum, j'ai multiplié par 5 la taille de mon fichier SQL

rellik777 commented 3 years ago

Concernant l'erreur Invalid IPv6 URL, il y est fait mention sommairement dans le issues suivant ; https://github.com/Roromis/Lalf-Forumactif/issues/49 ; j'en suis à 98% d'export des messages de mon forum ; je n'ai trouvé que 2 solutions : soit supprimer le message incriminé en erreur, soit le modifier sous FA et refaire un export dans tous les cas.

rellik777 commented 3 years ago

Le script n'a pas l'air d'apprécié les messages contenant des balises xml aussi par exemple : <?xml version="1.0" encoding="ISO-8859-1"?> ou bien encore les codes similaire au xml ; je vais tester voir si intégré dans des balises [code] ça fonctionne mieux.

rellik777 commented 3 years ago

Après correction des messages posant des problèmes sur le forum généralement des balises qui étaient mal fermées par exemple :

[img]https://monserveurimage/img]
[img=https://monserveurimage[/img]
[url=https://monlienerronne.fr/url]https://monlienerronne.fr[/url]
[url=https://monlienerronne[/url].fr
[quote="pseudo"]blablabla blabla/quote]
[quote="pseudo"]blablable [url=monlien.fr]monlien/quote].fr[/url]

j'ai réussi à exporter un fichier sql utilisable, mais j'ai remarqué un petit bug lors de l'importation, il y a une option sur FA qui affiche les premiers messages d'un sujet si ce dernier possède présente plusieurs pages, ce qui engendre des erreurs sql lors de l'importation, des erreurs de duplicate key car les premiers messages sont recopiés sur les pages suivantes, mais l'ID du message ne change pas ; l'option est donc à décocher dans Panneau d'Administration -> Général -> Messages et emails -> Configuration -> Toujours afficher le premier message dans les sujets : Non