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

ValueError: Invalid IPv6 URL #49

Open ArnoHolo opened 8 years ago

ArnoHolo commented 8 years ago

J'ai le bug suivant :

Traceback (most recent call last):
  File "lalf.py", line 22, in <module>
    main()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/__init__.py", line 77, in main
    bb.dump(sqlfile)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 149, in dump
    child.dump(sqlfile)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 149, in dump
    child.dump(sqlfile)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 149, in dump
    child.dump(sqlfile)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 149, in dump
    child.dump(sqlfile)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 149, in dump
    child.dump(sqlfile)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 149, in dump
    child.dump(sqlfile)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/node.py", line 146, in dump
    self._dump_(sqlfile)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/posts.py", line 68, in _dump_
    post = parser.get_post()
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/htmltobbcode.py", line 228, in get_post
    self.root_node.get_bbcode(fileobj, self.bb, uid)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/htmltobbcode.py", line 139, in get_bbcode
    child.get_bbcode(fileobj, bb, uid)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/htmltobbcode.py", line 388, in get_bbcode
    BlockTagNode.get_bbcode(self, fileobj, bb, uid)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/htmltobbcode.py", line 356, in get_bbcode
    InlineTagNode.get_bbcode(self, fileobj, bb, uid)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/htmltobbcode.py", line 345, in get_bbcode
    Node.get_bbcode(self, fileobj, bb, uid)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/htmltobbcode.py", line 139, in get_bbcode
    child.get_bbcode(fileobj, bb, uid)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/htmltobbcode.py", line 458, in get_bbcode
    url = process_link(bb, self.url)
  File "/Users/ad/Workspace/Lalf-Forumactif-master/lalf/htmltobbcode.py", line 79, in process_link
    scheme, netloc, path, params, query, fragment = urlparse(url)
  File "/Users/ad/anaconda3/lib/python3.5/urllib/parse.py", line 295, in urlparse
    splitresult = urlsplit(url, scheme, allow_fragments)
  File "/Users/ad/anaconda3/lib/python3.5/urllib/parse.py", line 345, in urlsplit
    raise ValueError("Invalid IPv6 URL")
ValueError: Invalid IPv6 URL

En regardant dans le fichier debug.log, c'est lors de l'exportation d'un message qui contient les balises suivantes :

[url]www.url.com[/url]

[url=www.url.com]bla bla bla[/url]

Il faudrait donc l'ignorer ou le prendre en compte. Merci !

Roromis commented 8 years ago

En principe le bbcode [url] est géré sans problème.

Y a-t-il des caractères spéciaux dans les url du message? (Vérifie dans le bbcode et dans le html) Il y a probablement un crochet ouvrant [ ou fermant ].

jmarrec commented 8 years ago

Salut,

Loin moi l'idée de hijacker cette issue, mais j'ai le même traceback. En regardant le message en question il y a effectivement un problème, un utilisateur s'est planté en voulant insérer une photo (c'est un des 100 premiers messages du forum...). Le corps du message est le suivant

[img:e339]http://imageshack.us]

Est-il possible de modifier/ignorer ce message sans avoir besoin de relancer toute la procédure ? Peut-on modifier le pickle?

Merci pour ce projet et pour toute info que vous pourriez m'apporter pour débugger le truc !

jmarrec commented 8 years ago

Pour info pour l'instant j'ai fait ça salement, j'ai modifié posts.py, et ajouté après cette ligne et avant la 66: https://github.com/Roromis/Lalf-Forumactif/blob/56fdd73bbfe0c81d18f00f2173c578097a5aa8cc/lalf/posts.py#L65

     # Quick fix for 2 problematic messages
     if self.post_id in [98,2582]:
            print("\n\n PROBLEM")
            print(self.root)
            print(self.text)
            print("Changing self.text to 'error'")
            self.text = 'error'