Comment l'API tabulaire et/ou explore.data.gouv.fr détecte le format URL?

Bonjour,

Dans mon jeu ci-dessous j’ai deux champs qui comportent une URL ; « yt:defaultThumbnailUrl » et « ytsb:customUrl ».
Mais il n’y a que « yt:defaultThumbnailUrl » qui est reconnu comme format URL (et cliquable dans la visualisation des données).
https://explore.data.gouv.fr/fr/datasets/67e5de7e2c7005cdcfb2190a/#/resources/c45b6dee-e948-41f2-8351-43c17092abf4
Nb: ne pas confondre avec mon champ « yt:customUrl » qui ne contient pas une URL.

Serait-ce les caractères « @ » qui induirait en erreur la détection ?
Est-ce contournable avec la variante URL encodée du caractère « %40 » ?

Bonjour,
Toute la partie détection des formats est fait par notre brique csv-detective, en l’occurrence pour les URL c’est ici. En effet la présence d’un @ invalide le test, tout autre caractère ne devrait pas poser problème.

1 « J'aime »

Je comprends qu’il voudrait définir comme URL toutes données qui seraient seulement un nom de domaine mais pas un type email (ou le type twitter :thinking:)…

On pourrait changer comme ci-dessous ;

    a = 'http://' in val
    b = 'https://' in val
    c = 'www.' in val
    d = any([x in val for x in ['.fr', '.com', '.org', '.gouv', '.net']])
    e = not ('@' in val)
    return (a or b or (c and e) or (d and e))

Voici le changement envisagé : Refactor URL detection by Pierlou · Pull Request #121 · datagouv/csv-detective · GitHub

Merci, je suis pas sûr de bien comprendre la regexp ; vous risquez pas de perdre le support des URL en ‹ http:// › ?

Non, le « s » est optionnel. Dans les tests la valeur « http://data.gouv.fr » est bien considérée comme valide.