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.

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.