Microdonnées (Schema.org) pour une personne

WRInaute discret
Bonjour bien.

J'ai un site sur Laurel & Hardy et je me trouve face à un problème.

Le site contient :
1 – une page pour chaque court-métrage des deux compères.
2 – une page pour chaque vidéo correspondante (quand elle est disponible).
3 – une page pour chaque interprète apparaissant dans 2 films au moins.

Les microdonnées pour 1 relèvent évidemment du schéma « Movie ». De là, on peut référencer (outre le titre du film, le résumé, etc.) chaque interprète (avec « actor ») et son rôle (avec « character »). Des test effectués chez le Gogol renvoient bien des microdonnées structurées.

Celles pour 2 relèvent du schéma « VideoObject ». On peut renseigner tout ce qu'il faut, je passe sur les détails. Des tests chez le Gogol, etc. Bref, ça fonctionne.

Pour 3 (interprètes), il me semble évident que le schéma est « Person ». Et là, c'est la misère. Il n'y a aucun lien possible vers le schéma « Movie » et ceux vers « CreativeWork » ne valent rien dans ce cas. Bref : impossible, à partir de la fiche d'un interprète, de lui associer ses films et les rôles qu'il a tenu. La propriété « performerIn » renvoie vers « Event » et si on joue à lui associer un nom de film, le Gogol braille qu'il lui faut une date et un lieu (forcément, pour un événement).

Je voudrais employer la ruse suivante mais je ne peux pas passer par le Gogol car il ne prend pas en compte « Person ». Voici, sachant que chaque film est dans une liste (d'où la balise <li>) :

<li itemprop="additionalType">
<span style="display:none">Film et rôle – </span>
<a href="../films/lamaisondelapeur.html">La maison de la peur</a> : l'héritier voulant aller au théâtre
</li>


J'emploie le bidule passe-partout « additionalType », je lui associe un <span> explicatif (qui ne doit pas s'afficher mais ça, c'est un détail) avec « Film et rôle – » et je mets le film (avec une adresse vers la page du film) et le rôle. C'est joli tout plein mis ça ne fait pas très « structuré » en l'occurrence...

Si vous avez une meilleure idée, je suis preneur.

Bien cordialement.

(Je vous mets l'adresse du site au cas où : https://laurel-hardy.fr/accueil.html)
 
WRInaute discret
En me relisant, je corrige un passage équivoque : quand je parle d'adresse vers la page du film, le lien est uniquement pour l'internaute. Ce n'est pas une microdonnée (d'où l'absence de : « itemprop="url" »), sinon le lien serait du film logiquement attribué à l'interprète.

« Person » semble être fait pour dépendre de schémas comme « Movie » ou « Book » mais pas pour se référer à ces mêmes schémas. Si c'est le cas, c'est illogique. Nombre de « Person(nes) » sont des interprètes de films ou des écrivains. Il n'y a pas plus de lien possible de « Person » vers « Movie » que vers « Book ». Cherchez l'erreur...
 
WRInaute discret
Re.

Bon, j'ai trouvé une solution qui vaut ce qu'elle vaut mais qui, a minima, ne génère pas d'erreur dans le vérificateur de Schema.org.

Avant, que je vous dise, j'ai eu la curiosité de m'adresser à une de ces prétendues intelligences artificielles. Oh là là... C'était littéralement bidonnant puisque la bougresse ne m'a donné quasiment que des réponses bidon, d'une parfaite inutilité et, surtout, archi-fausses. Elle est allée jusqu'à inventer des types et des propriétés inexistants dans Schema.org. Je lui ai fait remarquer à chaque fois, bien sûr, et elle me répondait (je cite) : Tu as parfaitement raison. La propriété Bidule n'existe pas. Voici la solution pour etc. Avec évidemment un nouveau délire. En plus, je ne supporte pas qu'une machine me tutoie. N'importe qui peut le faire sur ce forum, ce sera avec plaisir mais pas une machine même si elle se croit intelligente. Fin de la séquence rigolade.

Voici.

HTML:
<section class="liste">
<ol class="puce_chp" itemprop="additionalProperty" itemscope itemtype="https://schema.org/PropertyValue">
<li itemprop="additionalType">Filmographie</li>
<li itemprop="name">Film : Rôle</li>
<li itemprop="value"><a href="../films/laflotteestdanslelac.html">La flotte est dans le lac</a> : une canoteuse</li>
<li itemprop="value"><a href="../films/lesbricoleurs.html">Les bricoleurs</a> : une passagère du bus (sur l'impériale)</li>
<li itemprop="value" class="x"><a href="../films/lesroisdelagaffe.html">Les rois de la gaffe</a> : la cliente du café qui se fait portraiturer</li>
<li itemprop="value" class="x"><a href="../films/maisondetoutrepos.html">Maison de tout repos</a> : l'infirmière au bureau</li>
</ol>
</section>

La liste <ol> contient une propriété additionnelle (additionalProperty) dépendant du schéma PropertyValue.
On ajoute deux <li> définissant le type (ici, Filmographie) et le nom (ici, Film : Rôle). Ces <li> ne seront pas affichés (via une règle css) mais ils pourraient l'être, bien entendu, c'est un détail.
Ensuite, chaque paire Film : Rôle est ajoutée avec un <li itemprop="value">. À noter qu'il ne faut pas mettre l'adresse de la page des films avec <a itemprop="url" car Schema.org considère (logiquement d'ailleurs) que l'adresse fait référence à l'actrice/l'acteur. N'oublions pas que la structure ci-dessus fait partie du type Person :
HTML:
<main itemscope itemtype="https://schema.org/Person">
. Donc tout lien se rapporte à la personne sauf si un autre type est imbriqué. Or, c'est justement parce qu'il n'est pas possible d'imbriquer le type Movie que je dois procéder ainsi.

Mes aventures au pays du Schema.org pourront peut-être rendre service à quelqu'un.
 
WRInaute occasionnel
Bonsoir,

J'ai un peu testé par curiosité :

Code:
<article itemscope itemtype="https://schema.org/Article">
  <div itemprop="about mainEntity"
       itemscope
       itemtype="https://schema.org/Person"
       itemid="https://www.example.com/acteurs/nom-actrice.html">
    <link itemprop="additionalType" href="http://dbpedia.org/ontology/Actor">
    <h1 itemprop="name">Nom de l’actrice</h1>
    <link itemprop="url" href="https://www.example.com/acteurs/nom-actrice.html">
    <section class="liste"
             itemprop="subjectOf"
             itemscope
             itemtype="https://schema.org/ItemList"
             aria-labelledby="filmographie">
      <h2 id="filmographie" itemprop="name">Filmographie</h2>
      <ol class="puce_chp">
        <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
          <meta itemprop="position" content="1">
          <span itemprop="item"
                itemscope
                itemtype="https://schema.org/Movie"
                itemid="https://www.example.com/films/laflotteestdanslelac.html">
            <a itemprop="url" href="https://www.example.com/films/laflotteestdanslelac.html">
              <span itemprop="name">La flotte est dans le lac</span>
            </a>
            <link itemprop="actor" href="https://www.example.com/acteurs/nom-actrice.html">
          </span>
          : une canoteuse
        </li>
        <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
          <meta itemprop="position" content="2">
          <span itemprop="item"
                itemscope
                itemtype="https://schema.org/Movie"
                itemid="https://www.example.com/films/lesbricoleurs.html">
            <a itemprop="url" href="https://www.example.com/films/lesbricoleurs.html">
              <span itemprop="name">Les bricoleurs</span>
            </a>
            <link itemprop="actor" href="https://www.example.com/acteurs/nom-actrice.html">
          </span>
          : une passagère du bus (sur l'impériale)
        </li>
      </ol>
    </section>
  </div>
</article>

Je n'ai pas vérifié le contexte de tes pages "acteurs et filmographie". Je pense que cela reflète mieux : article sur une personne qui est acteur/trice avec une liste de sa filmographie. Mais je n'ai pas tous les objectifs ...

https://search.google.com/test/rich-results/result?id=QTRrJmvKyu7XuH69kewtdA (ici quelques éléments manquent encore)

A tester également dans le validateur schema.org.

Cordialement,

Eric
 
WRInaute discret
Salut et déjà : merci d'être passé. Apparemment le sujet passionne peu mais, bon, on ne peut pas s'intéresser à tout.

Mes connaissances en microdonnées sont juste suffisantes – et encore. Du coup, je ne connaissais pas DBedia que vous évoquez. Le validateur de Schema.org ne signale aucune erreur dans votre code.

J'ai 115 fiches d'actrices/acteurs. J'ai pu leur affecter les microdonnées selon le modèle que j'ai donné plus haut en automatisant une bonne partie des opérations (via Notepad++). Pour autant, le schéma que vous proposez me paraît plus qu'intéressant. Je vais le mettre de côté pour l'examiner en détail et, le cas échéant, voir comment automatiser son intégration (biscotte je n'ai pas trop envie de me farcir 115 fichiers .html à la main. Ouaf... !)

Encore merci.
 
WRInaute discret
Re-merci.

Sauf que je me marre quand je vois le Gogol donner ce genre de consignes. Il est quasiment impossible de faire indexer une vidéo par leur f... robot. J'ai abordé ce point dans cette discussion. Et manifestement je ne suis pas seul dans ce cas. Je ne parle pas de vidéos mises sur TuTube ; le proprio, c'est Gogol, il favorise donc les vidéos sur TuTube. Bon, ça, à la rigueur c'est compréhensible. Mais là où ça ne va plus, c'est quand une vidéo hébergée sur un site est rejetée au prétexte que « la vidéo n'est pas sur une page de lecture » ou que « la vidéo est un contenu complémentaire de la page » alors qu'il n'y a qu'elle sur la page. Au fou !

Je lirai quand même leurs infos, ça peut rendre service pour l'indexation sur un autre moteur.
 
WRInaute discret
Oui, je sais mais au temps pour moi, je n'ai pas été assez clair.

Les films (dans le dossier /films) sont balisés d'après Movie et les vidéos (dans le dossier /films_videos) d'après VideoObject, exemple :

HTML:
<main itemscope itemtype="https://schema.org/VideoObject">
<div style="display:none">
<span itemprop="url">https://laurel-hardy.fr/videos/films/endessousdezero.mp4</span>
<span itemprop="thumbnailUrl">https://laurel-hardy.fr/images/videos/films/endessousdezero.webp</span>
<span itemprop="actor">Stan Laurel</span>
<span itemprop="actor">Oliver Hardy</span>
<span itemprop="encodingFormat">video/mp4</span>
etc.

Les interprètes sont balisé(e)s d'après Person, c'est le sujet de ce fil, je ne le reprends pas ici, je rappelle juste que Person souffre à mon avis de graves lacunes. Impossible d'attribuer à une personne une fonction : auteur, acteur, chanteur, etc., mis à part pour un événement (avec la propriété performerIn).

Et je maintiens ce que j'ai écrit à propos du Gogol : impossible de faire indexer la moindre vidéo (pour ce qui me concerne mais je ne suis apparemment pas le seul). Les pages .html des vidéos (une par page) sont bien indexées mais pas les vidéos elles-mêmes.

Bien cordialement.
 
WRInaute discret
Certes mais je me suis (encore) mal exprimé. Pour un interprète, jobTitle = "Actrice" ou '"Acteur". Je l'utilise déjà. Exemple :

HTML:
<main itemscope itemtype="https://schema.org/Person">

<h1 itemprop="name">Bess Flowers</h1>
<span style="display:none" itemprop="jobTitle">Actrice</span>

<img itemprop="image" class="portrait_i" src="../images/interpretes/bessflowers.webp" alt="Bess Flowers">

<h2>23 novembre 1898 – 28 juillet 1984</h2>

<section class="texte" itemprop="description">

Dans cet exemple, on retrouve plusieurs propriétés de Person : le nom (c'est le truc de base pour tous les schémas), le métier donc, l'image, la description (un résumé de la biographie). J'aurais pu aussi ajouter les propriétés pour les dates (naissance, décès) mais c'est un gros boulot pour 115 entrées. Je le ferai un de ces jours, on peut automatiser ça en partie.

Avec Movie, c'est bonnard en effet, on peut faire pas mal de choses mais il n'y a rien qui permette de faire la liaison dans l'autre sens, j'entends : entre ce métier d'actrice/acteur et un film. Il n'y a aucune propriété dans le schéma Person comme « Rôle » par exemple. C'est-à-dire qu'il est impossible de faire le lien entre Person et le(s) rôle(s) de ladite (personne) dans un ou plusieurs films. Pour faire simple, quand on parcourt le schéma Person, on ne trouve rien qui renvoie à Movie.
 
Nouveau WRInaute
Bonjour,
J'arrive avec quelques mois de retard sur ce fil — mais le sujet est si plaisant que je n'ai pas résisté à y mettre le nez.

Tu soulèves un vrai point, et tu as raison sur le fond : schema.org ne fournit pas de propriété « a joué dans » côté Person, et c'est voulu. Le modèle décrit le lien acteur↔film depuis le film (actor), jamais depuis la personne. Ce n'est donc pas toi qui cherches mal — la propriété n'existe pas.

La sortie n'est pas de forcer un lien depuis la fiche Person, mais de raisonner en graphe plutôt qu'en arbre. Trois points concrets — et rien que des propriétés qui existent réellement, tu avais raison de te méfier des types inventés, tout ceci passe le validateur :

1. Un identifiant global (@ iD) par entité, et on laisse les fiches se référencer. Sur chaque page film, ton Movie a déjà actor. Si cet actor désigne l'URL de la fiche de l'interprète comme identifiant, et que la fiche Person porte ce même identifiant, le moteur fusionne les deux à travers les pages et reconstruit la filmographie de l'actrice. Le lien Person→films existe donc bel et bien : il est porté par les films et recollé par le moteur. Tu n'as pas à le dupliquer sur la fiche de la personne.

2. Pour le rôle, la propriété canonique est PerformanceRole (avec characterName). C'est un type schema.org réel (sous-type de Role) : sur le film, actor peut prendre un PerformanceRole contenant characterName (le rôle) et l'acteur. Le validateur l'accepte sans broncher — c'est le remplaçant propre de ton additionalProperty.

3. Si tu tiens à afficher la filmographie sur la fiche Person (pour le visiteur), la piste proposée plus haut — Person → subjectOf → ItemList de Movie — est la bonne. Elle est valide ; simplement, pour le moteur, elle fait doublon avec le point 1.

Un conseil qui t'épargnera bien des cheveux blancs : pour ce genre de graphe, le JSON-LD est nettement plus simple que la microdata. Fini les <span style="display:none"> et les imbrications impossibles : tu déclares tes entités dans un @graph et elles se pointent par @ iD. Ta microdata actuelle reste valide, les deux coexistent — mais le jour où tu ré-automatises tes 115 fiches, le JSON-LD t'enlèvera l'essentiel de la douleur.

Dernier point, et c'est le plus rentable aujourd'hui : pour des interprètes de second rôle comme Bess Flowers, le vrai levier n'est pas le résultat enrichi (Google n'en affiche pas ici) mais l'ancrage d'entité. Ajoute à chaque Person un sameAs vers sa fiche Wikidata / IMDb / Wikipédia. C'est ce qui fait reconnaître l'interprète comme une entité identifiée — par Google comme par les IA — et pour un site de passionné comme le tien, c'est le meilleur rapport effort/résultat.

Bien cordialement.
 
WRInaute discret
Salut bien et merci pour toutes ces infos.

Au vrai, j'ai appris tout-seul-comme-un-grand les bases du .html et du .css, plus un zeste de .js voire de .php les jours fastes mais je bafouille encore pas mal avec les microdonnées – que j'ai découvertes récemment, toutes proportions gardées. Alors le .json... Là, je ne bafouille plus, je reste coi. En résumé, il faut que je voie ça de plus près. Ça fait un bout de temps que j'entends parler de ce bidule sans savoir ce que c'est... Probable que ton message va m'inciter à le regarder plus en détail. Si j'ai des soucis, je reviendrai en parler.
2. Pour le rôle, la propriété canonique est PerformanceRole (avec characterName). C'est un type schema.org réel (sous-type de Role) : sur le film, actor peut prendre un PerformanceRole contenant characterName (le rôle) et l'acteur. Le validateur l'accepte sans broncher — c'est le remplaçant propre de ton additionalProperty.
Sur les fiches des films, il y a déjà un attribut « character » :
<span itemprop="actor"><a href="../interpretes/anitagarvin.html">Anita Garvin</a></span> : <span itemprop="character">Mme Culpepper</span>
C'est de celui-là que tu parles ? Si oui, il n'y a pas d'« additionalProperty » dans ce cas, « additionalProperty » ne figure pas sur les fiches des films.

« additionalProperty » ne figure que sur les fiches des interprètes :
<ol class="puce_chp" itemprop="additionalProperty" itemscope itemtype="https://schema.org/PropertyValue">
<li itemprop="additionalType">Filmographie</li>
<li itemprop="name">Film : Rôle</li>
[...]
<li itemprop="value"><a href="../films/laflotteestdanslelac.html">La flotte est dans le lac</a> : un canoteur</li>


D'où ta remarque suivante :
3. Si tu tiens à afficher la filmographie sur la fiche Person (pour le visiteur), la piste proposée plus haut — Person → subjectOf → ItemList de Movie — est la bonne. Elle est valide ; simplement, pour le moteur, elle fait doublon avec le point 1.
La filmographie est évidemment indispensable mais juste pour l'internaute et je peux supprimer les microdonnées qui y sont attachées su tu penses qu'elles font double emploi. Ça règlera du coup le problème d'« additionalProperty ».

J'ai peut-être mélangé des trucs, j'en suis désolé mais ça n'est pas aussi simple que ça en a l'air (tiens, dans un film Stan dit à Ollie : « Je ne suis pas aussi bête que tu en as l'air »).

Là, je bricole sur de nouvelles traductions pour quelques films. Comme BlimeyTV n'a pas l'air décidé à publier des versions restaurées en ce moment (je suppose qu'ils sont stricts avec les droits, il faut 95 ans révolus depuis la date de dépôt du film même si aucune plainte n'a jamais été déposée), j'en ai déniché ailleurs, en excellent état. Bon, dans pas longtemps, je m'attaque à .json.

Cordialement.

(Pour les cheveux blancs, il a neigé pour moi depuis pas mal d'années).
 
Nouveau WRInaute
Re, et content que ça t'ait donné envie de t'y pencher.
Rassure-toi tout de suite : le JSON-LD fait peur de loin, mais c'est en réalité plus simple que la microdata que tu bricoles. Deux différences qui changent tout :

  • Ça ne touche pas à ton HTML. Tu ne modifies la structure d'aucune de tes 115 fiches : tu ajoutes juste un petit bloc <script> (dans le <head> ou en bas de page). Ton HTML reste tel quel, le JSON-LD vit à côté.
  • C'est lisible : fini les <span style="display:none"> et les imbrications à rallonge, juste des paires « propriété : valeur ».
Le plus parlant, c'est ton propre cas. Voici la fiche de Bess Flowers reliée à un de ses films avec le rôle — et j'ai mis ses vrais identifiants Wikidata/IMDb, pas des trucs inventés, tu peux vérifier :

Code:
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Person",
      "[USER=81390]@iD[/USER]": "https://laurel-hardy.fr/interpretes/bessflowers.html#person",
      "name": "Bess Flowers",
      "jobTitle": "Actrice",
      "birthDate": "1898-11-23",
      "deathDate": "1984-07-28",
      "image": "https://laurel-hardy.fr/images/interpretes/bessflowers.webp",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q513849",
        "https://www.imdb.com/name/nm0283170/"
      ]
    },
    {
      "@type": "Movie",
      "[USER=81390]@iD[/USER]": "https://laurel-hardy.fr/films/laflotteestdanslelac.html#film",
      "name": "La flotte est dans le lac",
      "actor": {
        "@type": "PerformanceRole",
        "characterName": "une canoteuse",
        "actor": { "[USER=81390]@iD[/USER]": "https://laurel-hardy.fr/interpretes/bessflowers.html#person" }
      }
    }
  ]
}
</script>

(Adapte juste les URL à tes vrais noms de fichiers.) Trois choses à retenir :

  • Le @ iD (l'URL suivie de #ancre) est ce qui relie les deux fiches : le film pointe vers la personne, et partout où tu répètes ce @ iD, Google sait que c'est la même Bess Flowers. C'est ça, « raisonner en graphe ».
  • PerformanceRole + characterName = ton rôle (« une canoteuse »), proprement balisé.
  • sameAs vers Wikidata (Q513849) et IMDb (nm0283170) = l'ancrage d'entité dont je te parlais : c'est ce qui fait « exister » Bess Flowers pour Google et les IA.
Colle ce bloc dans le test des résultats enrichis de Google (ou le validateur schema.org) : tu verras l'entité se former sous tes yeux. Et si tu bloques sur l'automatisation des 115 fiches, reviens — générer ces blocs en série est très mécanique, on regardera ensemble.
Bien à toi.
 
WRInaute discret
Re. Et re-merci.

En effet, insérer un <script> ne pose pas de problème. Le schéma lui-même, on peut l'insérer dans tous les fichiers d'un coup (avec Notepad++), œuf corse. Mais il faut bien le remplir avec les données propres à chaque interprète et pour ça je ne vois pas d'autre soluce que de le faire a mano. Idem pour les liens vers Wikidata et l'Imdb. Mais c'est mon boulot, je peux m'en occuper petit à petit.

Je présume que :
– du coup, les microdonnées des .html des interprètes sont à virer.
– un schéma .json doit être possible aussi pour les .html des films (avec la même remarque : suppression des microdonnées). Si c'est le cas, pourrais-tu me passer ce schéma pour un film, par exemple « À bord du Miramar » (ou un autre, peu importe) ? Merci par avance.

Cordialement.

(Pour bien vieillir, il faut apprendre tous les jours. Dont acte.)
 
Nouveau WRInaute
Tes deux intuitions sont bonnes :

1. Oui, à terme tu retires la microdata des fiches : une seule source de vérité, et Google préfère le JSON-LD. Aucune panique si les deux cohabitent le temps de la bascule, tant qu'elles ne se contredisent pas — tu poses le JSON-LD, tu valides, tu enlèves l'ancienne microdata ensuite.

2. Oui, même logique pour les films. Voici « À bord du Miramar » (titre original Sailors, Beware!, 1927) avec ses vrais identifiants :

Code:
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Movie",
      "[USER=81390]@iD[/USER]": "https://laurel-hardy.fr/films/aborddumiramar.html#film",
      "name": "À bord du Miramar",
      "alternateName": "Sailors, Beware!",
      "datePublished": "1927",
      "director": [
        { "@type": "Person", "name": "Fred Guiol", "sameAs": "https://www.imdb.com/name/nm0347451/" },
        { "@type": "Person", "name": "Hal Roach",  "sameAs": "https://www.imdb.com/name/nm0730018/" }
      ],
      "sameAs": [
        "https://www.wikidata.org/wiki/Q3576621",
        "https://www.imdb.com/title/tt0018356/"
      ],
      "actor": [
        {
          "@type": "PerformanceRole",
          "characterName": "LE RÔLE (ex. « le steward »)",
          "actor": { "[USER=81390]@iD[/USER]": "https://laurel-hardy.fr/interpretes/NOM.html#person" }
        }
      ]
    }
  ]
}
</script>

Tu dupliques le bloc actor par interprète. Et comme son @ iD est le même que celui de la fiche de l'interprète, le lien film↔personne se fait tout seul dans les deux sens — c'est exactement ce que tu cherchais au départ.

Et surtout : j'ai pris les devants. Comme tes pages acteurs et actrices sont publiques, je suis allé chercher tes 116 interprètes et j'ai résolu automatiquement leurs identifiants — 92 trouvés sur Wikidata, dont 90 avec l'IMDb. La table complète est en pièce jointe : tu n'as plus qu'à coller les deux sameAs dans chaque fiche. Un échantillon pour te donner une idée :

Thelma Todd Q271146 nm0865298
Jean Harlow Q105719 nm0001318
James Finlayson Q963194 nm0278006
Edgar Kennedy Q714724 nm0448012
Charley Chase Q467023 nm2876823
Mae Busch Q153501 nm0123994
Eugene Pallette Q911472 nm0657874
Bess Flowers Q513849 nm0283170

Deux mises en garde honnêtes : c'est de l'appariement automatique, donc les têtes d'affiche sont sûres, mais vérifie d'un œil les seconds rôles obscurs (surtout ceux sans IMDb). Et il reste une vingtaine de figurants que Wikidata ne connaît pas — ceux-là, seul un sameAs IMDb (voire rien) sera possible, à la main.

Avec ça, la partie pénible est quasi pliée. Il ne te reste que les rôles — que toi seul connais mais que j'ai anticipés :-)
Bien à toi.
 

Fichiers joints

WRInaute discret
Bon, et bien grand merci.

Je vais commencer à faire tout ça – peinard. Chi va piano va sano. (d'après le regretté Desproges = Fais pas dans le piano, va dans les toilettes).

Pour la liste, je suppose que certains vont rester sans lien. Faire ces fiches m'en a appris, des choses, sur les seconds rôles, y compris que plusieurs d'entre eux étaient déjà quasi oubliés à cette époque, c'est dire. Pour Al Flores, par exemple, on ne trouve quasiment rien sur la Toile. Pour Gustav Schaffrath, le nain d'« À bord du Miramar », on a juste son année de naissance et rien sur son décès. Le reste à l'avenant.

Bien sûr, il y des seconds rôles moins « seconds » (si j'ose dire) : Charlie Hall, James Finlayson, Tiny Sandford, Edgar Kennedy, Anita Garvin, Jean Harlow, Thelma Todd, Dorothy Coburn, Viola Richard en sont de bons exemples – et l'éruptive Mae Busch.

Encore merci pour ton aide, bien cordialement. Ce site ne serait rien sans le talent de Laurel & Hardy. Puissent-ils faire un peu rire mes contemporains – qui en ont bien besoin !
 
Nouveau WRInaute
J’espère que ça t’aidera… ils ont bercé mon enfance comme celle de tant d’autres… et pour rebondir sur un de tes messages sur ce fil, l’entièreté de mes interventions a été générée par ia… mon intervention a un double effet, l’espoir de t’avoir aidé et en même temps de leur être te convaincre que l’ia c’est pas si mal
 
WRInaute discret
Ce n'est pas l'IA qui me gêne, je m'en sers parfois. C'est l'idée, pernicieuse, d'associer « Intelligence » et « artificiel ». D'ailleurs, dans le second, il y a « artifice ». Je maintiens qu'il n'y a d'intelligence que du vivant.

P. S. : comme il me semble avoir compris que .json était calqué sur les microdonnées, j'ai ajouté une ligne "description":, ainsi ça me permet de virer l'entièreté des microdonnées des fiches des acteurs. Je viens d'en faire un (Al Flores) pour voir et ce que je pensais est avéré : je m'en tiendrai à 3, 4 ou 5 par jour pour ne pas faire d'erreurs car ça demande de l'attention. Mais je ne suis pas pressé...

Cordialement.
 
Olivier Duffez (admin)
Membre du personnel
merci d'utiliser les balises "code" du forum afin que toutes ces URL ne soient pas cliquables, et que le @ ID ne fasse plus un lien vers le membre qui a eu la bonne idée de s'appeler ID
 
WRInaute discret
Bon, j'ai passé quelques heures à bricoler avec ces fichues microdonnées... Au moins ai-je appris deux ou trois trucs. Bon, il NE faut PAS mettre ce genre de bidule :

JSON:
"actor": [
        {
          "@type": "PerformanceRole",
          "characterName": "LE RÔLE (ex. « le steward »)",
          "actor": { "[USER=81390]@iD[/USER]": "https://laurel-hardy.fr/interpretes/NOM.html#person" }
        }
      ]

Sauf à comprendre quelque chose à ce USER=81390, etc. C'est quoi, ce numéro ? D'où vient-il ? Mais insérer l'identifiant dans une balise "actor" sous "PerformanceRole" ne vaut pas mieux, ça passe chez le Gogol mais ça plante chez Schema.org :

JSON:
"actor": [
        {
          "@type": "PerformanceRole",
          "characterName": "LE RÔLE (ex. « le steward »)",
          "actor": {
              "@iD": "https://laurel-hardy.fr/interpretes/__laurel.html#person"
           }
        }
      ]

C'est biscotte il faudrait ajouter un type "Name" en répétant le nom de l'acteur. Ouah... Mais il y a plus simple :

JSON:
"actor": [
{
"@type": "PerformanceRole",
"characterName": "Stan",
"@iD": "https://laurel-hardy.fr/interpretes/__laurel.html#person"
},
{
"@type": "PerformanceRole",
"characterName": "Ollie",
"@iD": "https://laurel-hardy.fr/interpretes/__hardy.html#person"
}

Là, on met directement l'identifiant. Sauf qu'il dépend de "PerfomanceRole"... Alors, renverrait-il au personnage (fictif) ? Non, apparemment la pseudo-ancre #person signifie qu'il s'agit bien de l'interprète( la personne réelle). Dans les exemples ci-dessus, le personnage "Stan" est lié à son interprète via l'identifiant.

J'espère que j'ai tout bon. En tout cas, les validateurs de Schema.org et du Gogol sont d'accord.
 
Nouveau WRInaute
Chapeau — tu as abattu un vrai boulot en quelques heures, et tes deux trouvailles sont justes. J'ai repassé le tout au validateur pour te confirmer noir sur blanc :

1. Le [USER=81390], oublie : c'est le forum, pas ton code. WebRankInfo (XenForo) transforme automatiquement toute chaîne @id en mention d'un membre (le n°81390 s'appelle « iD »). Rien à voir avec ton JSON. ⚠️ Une seule chose : dans tes fichiers, l'identifiant s'écrit @id en minuscules — si tu as recopié le @iD majuscule que le forum affiche, corrige-le, sinon il est ignoré. Et pour coller du code ici sans que le forum le bouffe, utilise la balise [CODE=json]…[/CODE] (c'est ce que tu as fait, d'où le « JSON: » — c'est la bonne méthode).

2. Tu as raison : la référence nue plante. "actor": { "@id": "…" } sans rien d'autre → le validateur schema.org renvoie une erreur INVALID_OBJECT. Vérifié. Bien vu.

3. Ta version « simplifiée » passe les validateurs (vérifié aussi) — mais il y a un hic qu'ils ne voient pas. En mettant le @id directement sur le PerformanceRole, tu dis : « cette URL #person, c'est un rôle ». Or sur ta fiche interprète, la même URL #person dit : « c'est une personne ». Résultat : le même identifiant désigne deux choses(une Person d'un côté, un PerformanceRole de l'autre). Les validateurs testent chaque bloc isolément, donc ils ne bronchent pas — mais Google, lui, fusionne les nœuds par @id, et là ça brouille ton graphe : le characterName « Stan » risque de se coller à la personne.

4. Le correctif minimal (il passe les DEUX validateurs, je viens de le tester) : garde le actor imbriqué, mais donne à la référence un @type et un name — c'est précisément ce qui manquait dans la version qui plantait :

JSON:
"actor": [
{
"@type": "PerformanceRole",
"characterName": "Stan",
"actor": {
"@type": "Person",
"@id": "https://laurel-hardy.fr/interpretes/[B]laurel.html#person",
"name": "Stan Laurel"
}
},
{
"@type": "PerformanceRole",
"characterName": "Ollie",
"actor": {
"@type": "Person",
"@id": "https://laurel-hardy.fr/interpretes/[/B]hardy.html#person",
"name": "Oliver Hardy"
}
}
]

Comme ça, chaque #person reste strictement la personne réelle, le rôle (PerformanceRole + characterName) est bien distinct de l'interprète, et le lien vers ta fiche se fait proprement par l'identifiant. C'est exactement la structure que tu cherchais, sans la collision — et les deux validateurs sont verts.

Tu tiens le bon bout, franchement.
 
WRInaute discret
Re.

Pour les id (au lieu de iD), c'est fait. Ça prend 2 secondes avec Notepad++.

Pour le schéma avec "actor" suivi de "name", etc., j'avais en effet repéré ce truc sur le site de schema.org. Il est donné en exemple. En effet, ça passe. Je viens de faire les corrections pour les interprètes, sauf que... il faut les faire aussi pour les films (y'en a un peu marre, là...). Bon, je peux faire toutes les apparitions d'un interprète dans tous ses films d'un coup mais il faut que je le fasse 118 fois (c'est le nombre d'interprètes). Ça, pas moyen de le rendre automatique, en tout cas je ne sais pas faire. Mais je prendrai le temps, 118 fois ce n'est pas la mer à boire.

Reste ces pseudo-ancres « #person » et « #film ». Franchement, à quoi servent-elles ? S'il faut les laisser, je les laisse mais si c'est pour faire joli, autant les virer. Je n'ai rien trouvé sur la Toile à ce sujet.

Je ne suis pas un grand matheux (loin de là) mais j'aime programmer avec ce bon vieux QB45 (mon programme d'astronomie par exemple). Ça juste pour dire que la logique m'est familière – c'est le minimum en programmation. Et bien j'avoue que ce bidule, ça m'a épaté. Avec des machins imbriqués à n'en plus finir, ce "actor" suivi d'un type "PerformanceRole" qui doit être suivi d'un autre "actor", c'est trop pour moi ! Ne pouvait-on pas faire plus simple ?

Allez, je vais boucler les films d'ici deux jours et je serai tout content. Il y a encore les vidéos du dossier « films_videos ». Je m'en occuperai après, histoire de virer les « itemprop » qui restent. Je peux automatiser la création du json pour chaque film, ça devrait le faire.

Je vais me poser en attendant. Aujourd'hui il y a un vent à décorner les bœufs (ou les cocus, ça dépend des fréquentations qu'on a) et c'est fatigant. Vent du Midi, vent des fous, dit-on par ici. Tiens, je vais faire un semblant de sieste.

Cordialement.
 
WRInaute discret
Re.

C'est bon pour les interprètes et les films – sauf erreur de ma part. Si avec tout ce boulot la fréquentation n'explose pas... (;)).

Pour les vidéos, j'ai commencé à remplacer les itemprop par du Json. C'est plutôt rapide à faire même s'il faut évidemment procéder film par film.

Ensuite je vais pouvoir terminer la mise en ligne de la vidéo de « Toute la vérité » après la vérification des sous-titres (je les avais commencés avant de me lancer dans la modification des microdonnées). Parce que les vidéos sont bien (au moins en partie) un des attraits du site.

Bien cordialement.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut