Guts / elgeopaso

Statistiques dynamiques sur les offres d'emploi en géomatique publiées sur le forum francophone GeoRezo
https://elgeopaso.georezo.net
GNU General Public License v3.0
2 stars 0 forks source link

Le problème d'encodage dans le RSS dégrade l'analyse automatique #28

Open Guts opened 4 years ago

Guts commented 4 years ago

Constat

Comme constaté dans #11 et discuté avec @yjacolin, l'encodage des offres telles que publiées dans le flux RSS est problématique, les caractères spéciaux étant mal rendus dans les titres et dans les descriptions des offres, l'analyse automatique est largement dégradée (et ça fait tâche sur le site accessoirement).

Exemples

Offre 331168

image

image

image

Tickets liés

biratchet commented 4 years ago

Sauf erreur de ma part, coté GeoRezo, nous avons également ce pb d'encodage quand ce type d'annonce est affichée sur la page d'accueil du portail, mais il y a seulement les 6 dernières annonces affichées. Par ailleurs, d'autres briques du portail sont concernées par ce diagnostic, mais je ne suis pas sûr qu'une solution globale existe. Voir sur la page d'accueil, les "briques" des GéoBlogs et des blogs francophones, du coté des éditeurs. Courage @yjacolin !

yjacolin commented 4 years ago

Bruno, cela n'a rien à voir. sur la page d'index, ce sont des problèmes d'encodage HTML des accents qui sont tronqués.

Dans le cas ici, c'est les utilisateurs qui font du copié-collé avec un encodage windows mélanger à un encodage UTH8. Le résultat est désastreux. je vais essayer de trouver une solution mais il est possible qu'il faille éditer les annonces une par une.

Guts commented 4 years ago

Pourquoi les annonces apparaissent-elles niquel dans le forum ? il y a un traitement particulier par FluxBB ?

yjacolin commented 4 years ago

Au niveau du code, il y a un traitement particulier pour les flux RSS (dev custom si je ne me trompe pas)

biratchet commented 4 years ago

Merci @yjacolin Pour les utilisateurs qui font du copié/collé de leurs annonces, est-il envisageable de proposer:

Guts commented 4 years ago

S'il y a une sorte d'API pour créer les posts dans le forum, je peux facilement déduire un formulaire de saisie sur elgeopaso

marcisenmann commented 4 years ago

Salut, Tout d'abord merci Julien pour ton investissement pour remettre en route tout cela. C'est vraiment le top ! Au moins un point positif du confinement.

Sur la problématique d'encodage, je ne suis pas expert. J'ai l’impression qu'il y en a un peu moins en ce moment mais c'est plutôt calme côté modération d'offres JOB. J'en vois tout de même une ce matin ! : https://georezo.net/forum/viewtopic.php?id=119675

L'idée de Bruno me semble pas mal non ? Proposer un éditeur qui impose l'encodage que nous voulons ? Car effectivement, les recruteurs doivent faire souvent du copier/coller. En attendant la nouvelle génération du service JOB avec formulaire de saisie des offres et listes déroulantes associées (pour type de contrat, domaine d'activité, localisation...).

Concernant la problématique du formatage des entêtes, je vais refaire un message aux collègues modérateurs comme piqure de rappel. Normalement, je les corrige systématiquement mais je peux en rater.

On se tient au jus, je regarde tout cela de plus près ces prochains jours,

Bien à vous,

Marco

biratchet commented 4 years ago

Le principal pb que je vois dans la solution que je propose, c'est que l'éditeur de texte en ligne serait coté GeoRezo, donc un patch de plus dans le code actuel, déjà maintenu difficilement par @yjacolin. La cible devrait être plutôt une refonte complète du module [job], mais là nous sommes sur un projet qui dort depuis quelques années, même si je crois me souvenir qu'Yves avait fait une maquette.

Guts commented 4 years ago

@yjacolin, d'après https://github.com/Guts/elgeopaso/issues/33#issuecomment-621111238, si je comprends a fait en sorte de remplacer à la volée les caractères mal encodés avant que les offres ne soient publiées dans le RSS c'est ça ?

Tu m'as aussi parlé d'un paramètre dans l'URL à passer. Avant j'avais https://georezo.net/extern.php?fid=10&show=200.

C'est toujours OK ou je peux avoir plus d'offres ?

yjacolin commented 4 years ago

d'une manière temporaire j'ai rajouté &georezo=jma pour pouvoir aller au delà de 200, sans le paramètre georezo on bloque à 200.

yjacolin commented 4 years ago

j'ai fait 2 choses :

Guts commented 4 years ago

Bravo 👏 !

Par contre l'URL https://georezo.net/extern.php?fid=10&show=500&georezo=jma ne me renvoie pas 500 résultats, mais... 64 !

Guts commented 4 years ago

Note que c'est un département que j'apprécie particulièrement mais bon ;)

marcisenmann commented 4 years ago

Le 13 Yves ? Merci pour ces actions dans la sphère complexe de l'encodage !

yjacolin commented 4 years ago

en fait les autres offres sont archivées :)

Guts commented 3 years ago

Pour suivi de ce problème d'encodage toujours bien présent, l'erreur est aussi clairement signalée par le validateur du W3C : https://validator.w3.org/feed/check.cgi?url=https%3A%2F%2Fgeorezo.net%2Fextern.php%3Ffid%3D10%26show%3D100

In addition, interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

    line 1, column 31: Obscure XML character encoding: UTF8 [help]

        <?xml version="1.0" encoding="UTF8"?>
                                       ^

    Your feed appears to be encoded as "UTF8", but your server is reporting "utf-8" [help]

https://validator.w3.org/feed/docs/warning/ObscureEncoding.html

Guts commented 3 years ago

Nouvelle piste qui semble être prometteuse : le texte semble en fait être encodé à de multiples reprises, ce qui explique qu'il y a toujours de multiples caractères HTML dans le rendu.

Petit script de démonstration :

#! python3  # noqa: E265

# standard
import html

# 3rd party
import feedparser

# variables
GEOREZO_JOB_FEED = "https://georezo.net/extern.php?fid=10"
# GEOREZO_JOB_FEED = "tests/fixtures/rss/georezo_encoding_horrible.xml"

entry_index = 1
# expected_summary_ = 

# parse feed
feed = feedparser.parse(url_file_stream_or_string=GEOREZO_JOB_FEED)

print("Without escaping: ", feed.entries[entry_index].summary[:150])
print("Escaping 1 time: ", html.unescape(feed.entries[entry_index].summary)[:150])
print("Escaping 2 times: ", html.unescape(html.unescape(feed.entries[entry_index].summary))[:150])
print("Escaping 3 times: ", html.unescape(html.unescape(html.unescape(feed.entries[entry_index].summary)))[:150])

Sortie :

Without escaping:  &lt;p&gt;Qui sommes-nous ?&lt;br /&gt;&lt;br /&gt;DVP Solar est une filiale du groupe Prodiel, grande entreprise d&amp;amp;rsquo;origine Espagnole sp&
Escaping 1 time:  <p>Qui sommes-nous ?<br /><br />DVP Solar est une filiale du groupe Prodiel, grande entreprise d&amp;rsquo;origine Espagnole sp&amp;eacute;cialis&amp;
Escaping 2 times:  <p>Qui sommes-nous ?<br /><br />DVP Solar est une filiale du groupe Prodiel, grande entreprise d&rsquo;origine Espagnole sp&eacute;cialis&eacute;e dan
Escaping 3 times:  <p>Qui sommes-nous ?<br /><br />DVP Solar est une filiale du groupe Prodiel, grande entreprise d’origine Espagnole spécialisée dans la réalisation de

Qu'en penes-tu @yjacolin ?

yjacolin commented 3 years ago

oui c'est exacte mais il faut reprendre tout le script php pour trouver les corrections à apporter. Ce n'est pas facile. D'autant que certains problèmes ne viennent pas du script mais du copier-coller de Word qui insère des caractères avec un encodage spécifique. C'est ce qui a posé problème la dernière fois.

Guts commented 2 years ago

piste technique : https://github.com/rspeer/python-ftfy

biratchet commented 2 years ago

Merci pour le partage de ta veille. Comme je dis souvent des conneries coté technique, je laisse le soin à @yjacolin de donner son avis.

yjacolin commented 2 years ago

oui je pense qu''il y a plusieurs encodage cumulé, reste à trouver où !