{"id":3016,"date":"2008-12-14T01:28:43","date_gmt":"2008-12-14T00:28:43","guid":{"rendered":"http:\/\/www.hyperbate.com\/dernier\/?p=3016"},"modified":"2008-12-14T01:28:43","modified_gmt":"2008-12-14T00:28:43","slug":"processing-seizieme-et-dernier-cours","status":"publish","type":"post","link":"https:\/\/hyperbate.fr\/dernier\/?p=3016","title":{"rendered":"Processing, seizi\u00e8me et dernier cours"},"content":{"rendered":"<p>Dernier article consacr\u00e9 \u00e0 Processing pour l&rsquo;instant, ou plut\u00f4t, c&rsquo;est le dernier sur ce blog, tout cela prendra une autre forme, peut-\u00eatre plus adapt\u00e9e, dans quelques semaines. N&rsquo;h\u00e9sitez pas \u00e0 me faire part de vos observations ou de vos questions en commentaire \u00e0 ces articles, c&rsquo;est ce qui me permettra de les am\u00e9liorer et c&rsquo;est ce qui justifie ce mode de publications.<br \/>\nOn peut consulter les seize articles depuis <a href=\"http:\/\/www.hyperbate.fr\/dernier\/?page_id=2482\">cette page<\/a>.<\/p>\n<p>Nous avons vu comment dessiner des choses sur l&rsquo;\u00e9cran et comment r\u00e9aliser des animations, interactives ou pas. Nous n&rsquo;avons en revanche pas abord\u00e9 le son, la 3D, l&rsquo;image vectorielle, les d\u00e9formations d&rsquo;image, les polygones ou les op\u00e9ration de r\u00e9seau car le but \u00e9tait avant tout de faire le tour des grands principes de Processing. Mais au chapitre des grands principes, il reste une inconnue : comment exploite-t-on ses programmes ?<\/p>\n<p>Lorsque l&rsquo;on sauvegarde un programme r\u00e9alis\u00e9 avec Processing, celui-ci s&rsquo;enregistre sur le disque sous la forme d&rsquo;un fichier dont l&rsquo;extension est <strong>.pde<\/strong> (pour <em>processing development environnement<\/em>). Ce genre de fichier est en fait un b\u00eate fichier texte, que l&rsquo;on peut ouvrir avec le bloc-notes de Windows ou n&rsquo;importe quel autre \u00e9diteur de texte brut. Ce fichier source peut \u00eatre transmis \u00e0 toute personne qui dispose de Processing, qu&rsquo;elle soit sur Macintosh, sous Windows ou sous Linux. Mais pour les autres ? Plusieurs solutions s&rsquo;offrent \u00e0 nous. Notamment l&rsquo;application ind\u00e9pendante, l&rsquo;applet Java ou les fichiers image ou vid\u00e9o.<\/p>\n<h4>L&rsquo;applet Java<\/h4>\n<p>Une applet Java est un fichier lisible dans un navigateur web \u00e9quip\u00e9 du plug-in Java.<br \/>\nSelon des statistiques publi\u00e9es par Adobe en septembre 2008, le plug-in Java est assez r\u00e9pandu puisqu&rsquo;il touche 82% des internautes, ce qui en fait le second plug-in le plus courant sur le web apr\u00e8s Adobe flash, loin devant Adove Shockwave (58%), Real Player (47%) ou encore le lecteur d&rsquo;images et d&rsquo;animations vectorielles SVG<sup><a href=\"#footnote_1_3016\" id=\"identifier_1_3016\" class=\"footnote-link footnote-identifier-link\" title=\"Le format SVG (Scalable Vector Graphics) est assez r&eacute;pandu dans le domaine du dessin vectoriel mais on sait rarement qu&rsquo;il dispose de fonctions interactives assez &eacute;volu&eacute;es qui en font un modeste (et gratuit) concurrent de Flash&hellip; Malheureusement, le plug-in SVG est d&eacute;velopp&eacute; par Adobe qui ne l&rsquo;a plus mis &agrave; jour depuis son rachat de Macromedia et de Flash\">1<\/a><\/sup> (7%).<\/p>\n<p><a href=\"http:\/\/www.adobe.com\/products\/player_census\/flashplayer\/\" target=\"_blank\"><img decoding=\"async\" class=\"alignnone size-medium wp-image-3030\" src=\"\/dernier\/files\/2008\/12\/utilisateurs_plug_ins.png\" alt=\"\" width=\"530\" height=\"110\" srcset=\"https:\/\/hyperbate.fr\/dernier\/files\/2008\/12\/utilisateurs_plug_ins.png 530w, https:\/\/hyperbate.fr\/dernier\/files\/2008\/12\/utilisateurs_plug_ins-300x62.png 300w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/><\/a><\/p>\n<p>Notez pour l&rsquo;anecdote que le sch\u00e9ma statistique pr\u00e9sent\u00e9 ci-dessus a \u00e9t\u00e9 r\u00e9alis\u00e9 avec Processing (<a href=\"files\/2008\/12\/stats.pde\">cliquez sur ce lien pour voir le code source<\/a>).<br \/>\nPour cr\u00e9er une applet Java, rien de plus facile, il suffit de s\u00e9lectionner la commande \u00ab\u00a0File -&gt; Export\u00a0\u00bb et Processing se chargera du reste.<\/p>\n<p><img decoding=\"async\" width=\"530\" height=\"322\" class=\"alignnone size-medium wp-image-3028\" src=\"\/dernier\/files\/2008\/12\/export_applet.png\" alt=\"\" srcset=\"https:\/\/hyperbate.fr\/dernier\/files\/2008\/12\/export_applet.png 530w, https:\/\/hyperbate.fr\/dernier\/files\/2008\/12\/export_applet-300x182.png 300w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/><\/p>\n<p>Lorsque l&rsquo;exportation est faite, Processing ouvre le dossier qui contient le produit de cette exportation. Ce dossier, nomm\u00e9 <strong>applet<\/strong>, est un sous-dossier du dossier qui contient notre programme. On y trouve cinq fichiers diff\u00e9rents :<\/p>\n<ul>\n<li><strong>index.html<\/strong> : il s&rsquo;agit d&rsquo;une page web qui contient l&rsquo;applet. On peut l&rsquo;ouvrir avec un \u00e9diteur de texte ou avec un logiciel tel que DreamWeaver pour modifier sa mise en page. Par d\u00e9faut, cette page contient l&rsquo;applet mais aussi un petit texte signalant que celle-ci a \u00e9t\u00e9 r\u00e9dig\u00e9e avec Processing, et puis deux liens, l&rsquo;un vers www.processing.org et l&rsquo;autre vers le code-source de l&rsquo;applet.<\/li>\n<li><strong>loading.gif<\/strong> : il s&rsquo;agit du logo de Processing tel qu&rsquo;il s&rsquo;affiche sur la page web pendant la dur\u00e9e du chargement de l&rsquo;animation, en attendant qu&rsquo;elle puisse s&rsquo;ex\u00e9cuter.<\/li>\n<li><em><strong>nom_du_fichier<\/strong><\/em><strong>.jar<\/strong> : c&rsquo;est l&rsquo;applet Java proprement dite, compos\u00e9e d&rsquo;un certain nombre de fichiers regroup\u00e9s sous forme d&rsquo;une archive zip (et que l&rsquo;on peut ouvrir avec un utilitaire de d\u00e9compactage si l&rsquo;on souhaite en voir le contenu).<\/li>\n<li><em><strong>nom_du_fichier<\/strong><\/em><strong>.java<\/strong> : c&rsquo;est la source Java qui a servi \u00e0 compiler le programme.<\/li>\n<li><em><strong>nom_du_fichier<\/strong><\/em><strong>.pde<\/strong> : c&rsquo;est la source du programme Processing.<\/li>\n<\/ul>\n<div><strong><em>nom_du_fichier<\/em><\/strong> est en fait remplac\u00e9 par le nom sous lequel a \u00e9t\u00e9 enregistr\u00e9e le fichier source Processing. De tous ces fichiers, deux seuls sont importants, \u00e0 savoir l&rsquo;applet (<strong>.jar<\/strong>) et le fichier <strong>.html<\/strong> qui le diffuse et qui contient plusieurs param\u00e8tres int\u00e9ressants qu&rsquo;il faudrait conna\u00eetre et saisir manuellement si l&rsquo;on voulait le cr\u00e9er avec Dreamweaver par exemple. L&rsquo;image de chargement peut \u00eatre modifi\u00e9e ou peut ne pas \u00eatre pr\u00e9sente (elle est appel\u00e9e dans les param\u00e8tres du fichier html). Le fichier <strong>.Java<\/strong> est absolument inutile au commun des mortels, il fait partie du processus de compilation de l&rsquo;applet et ne servira qu&rsquo;\u00e0 des programmeurs Java qui souhaiteraient agir sur ces param\u00e8tres.<\/div>\n<h4>L&rsquo;application ind\u00e9pendante<\/h4>\n<p>Ce que l&rsquo;on r\u00e9alise avec Processing peut \u00eatre lu comme une application ex\u00e9cutable ind\u00e9pendante (c&rsquo;est \u00e0 dire ne r\u00e9clamant pas que l&rsquo;utilisateur dispose d&rsquo;un quelconque logiciel suppl\u00e9mentaire), et cela se passe l\u00e0 aussi de de la mani\u00e8re la plus simple possible. Il suffit en effet de s\u00e9lectionner la commande \u00ab\u00a0File -&gt; Export application\u00a0\u00bb.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-medium wp-image-3025\" src=\"\/dernier\/files\/2008\/12\/export_application1.png\" alt=\"\" width=\"530\" height=\"322\" \/><\/p>\n<p>Une boite de dialogue nous propose alors de choisir quelles plate-formes nous souhaitons cibler (Windows et\/ou MacOS et\/ou Linux) et nous propose de cocher ou de d\u00e9cocher deux options :<\/p>\n<ul>\n<li>le Full-Screen (plein \u00e9cran), qui permet donc de cr\u00e9er une application qui occupe la totalit\u00e9 de l&rsquo;\u00e9cran.<\/li>\n<li>la pr\u00e9sence ou non d&rsquo;un bouton \u00ab\u00a0stop\u00a0\u00bb permettant \u00e0 l&rsquo;utilisateur de quitter le programme.<\/li>\n<\/ul>\n<div>Une fois tout ceci d\u00e9termin\u00e9, on n&rsquo;a plus qu&rsquo;\u00e0 cliquer sur le bouton \u00ab\u00a0Export\u00a0\u00bb. Un programme est alors compil\u00e9 pour la ou les plate-formes s\u00e9lectionn\u00e9es.<\/div>\n<p><img decoding=\"async\" class=\"alignnone size-medium wp-image-3024\" src=\"\/dernier\/files\/2008\/12\/export_application2.png\" alt=\"\" width=\"530\" height=\"307\" srcset=\"https:\/\/hyperbate.fr\/dernier\/files\/2008\/12\/export_application2.png 530w, https:\/\/hyperbate.fr\/dernier\/files\/2008\/12\/export_application2-300x173.png 300w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/><\/p>\n<p>Les programmes sont enregistr\u00e9s dans les sous-dossiers <em>application.windows<\/em>, <em>application.macosx<\/em> et <em>application.linux<\/em>.<\/p>\n<h4>Le fichier \u00ab\u00a0statique\u00a0\u00bb<\/h4>\n<p>Avec Processing on peut cr\u00e9er des fichiers non-actifs, tels que des images bitmap ou des vid\u00e9os.<br \/>\nLe plus simple est l&rsquo;exportation au format bitmap. La commande est simplissime :<\/p>\n<div class=\"code\">\n<pre>save(\"monfichier.jpg\");<\/pre>\n<\/div>\n<p>&#8230; et cela suffit, au moment o\u00f9 le programme atteint la commande <code>save()<\/code>, il cr\u00e9era un fichier au format jpeg nomm\u00e9 \u00ab\u00a0monfichier.jpg\u00a0\u00bb. Ce fichier sera stock\u00e9 dans le m\u00eame dossier que celui de notre script au format \u00ab\u00a0pde\u00a0\u00bb. Nous pouvons utiliser quatre formats d&rsquo;image diff\u00e9rents : le <strong>tif<\/strong>, le <strong>jpeg<\/strong>, le <strong>png <\/strong>et le <strong>tga<\/strong>. Personnellement j&rsquo;utilise g\u00e9n\u00e9ralement le format png qui s&rsquo;adapte bien \u00e0 toutes les situations, n&rsquo;alt\u00e8re pas les images mais les compresse au mieux.<br \/>\nL&rsquo;exemple qui suit permet de n&rsquo;enregistrer l&rsquo;\u00e9cran sous forme d&rsquo;image qu&rsquo;\u00e0 un moment pr\u00e9cis, en l&rsquo;occurence le moment o\u00f9 la touche &lsquo;s&rsquo; du clavier est enfonc\u00e9e (mais \u00e7a aurait pu \u00eatre une autre touche ou un autre \u00e9v\u00e8nement, par exemple avec la souris).<\/p>\n<div class=\"code\">\n<pre>void keyReleased(){\n  if (key=='s'){ save(\"monfichier.jpg\"); }\n}<\/pre>\n<\/div>\n<p>Plut\u00f4t simple, non ? Il existe une seconde commande nomm\u00e9e <code>saveFrame()<\/code> qui permet d&rsquo;enregistrer l&rsquo;image de la fen\u00eatre du programme mais avec un num\u00e9ro d&rsquo;ordre. C&rsquo;est pratique pour \u00eatre r\u00e9cup\u00e9r\u00e9 par la suite dans un logiciel de montage vid\u00e9o ou dans le logiciel Flash. On peut utiliser la commande seule, et les fichiers seront enregistr\u00e9s au format tif, avec des noms tels que screen-0000.tif, screen-0001.tif, screen-0002.tif, screen-0003.tif et ainsi de suite. Mais il est aussi possible de d\u00e9cider du format et de la structure du nom des fichiers ainsi : <code>saveFrame(\"filename-####.ext\")<\/code>, o\u00f9 <code>filename<\/code> sera remplac\u00e9 par un nom quelconque (par exemple \u00ab\u00a0photogramme\u00a0\u00bb) et <code>ext<\/code> par l&rsquo;extension. Dans le cas suivant nous obtiendrons une suite d&rsquo;images dont les noms seront donc photogramme-0001.png, photogramme-0002.png, photogramme-0003.png, etc.<br \/>\nIci par exemple, un point est dessin\u00e9 au hasard sur l&rsquo;\u00e9cran \u00e0 chaque cycle et l&rsquo;image en est sauvegard\u00e9e :<\/p>\n<div class=\"code\">\n<pre>void draw(){\n  point(random(100),random(100));\n  saveFrame(\"photogramme-####.png\");\n}<\/pre>\n<\/div>\n<p>On peut aussi enregistrer du texte avec la commande\u00a0<code>saveStrings(\"<span style=\"font-family: -webkit-monospace\"><em>nom_du_fichier\"<\/em><\/span>, <span style=\"font-family: -webkit-monospace\"><em>cha\u00eene_de_caract\u00e8res<\/em><\/span>)<\/code>, qui permet d&rsquo;\u00e9crire un fichier en une seule fois, et les commande <code>createWriter(\"nom_du_fichier\")<\/code> puis <code>printWriter()<\/code> qui permettent d&rsquo;\u00e9crire dans un fichier texte de mani\u00e8re incr\u00e9mentielle (ce qui peut servir par exemple pour ajouter chaque minute une coordonn\u00e9e ou quelque chose de ce genre \u00e0 l&rsquo;int\u00e9rieur d&rsquo;un unique fichier). Notons qu&rsquo;il existe des fonctions r\u00e9ciproques pour lire des fichiers textuels.<\/p>\n<p>Les donn\u00e9es autres que les images bitmap et les fichiers textuels imposent de recourir \u00e0 des \u00ab\u00a0librairies\u00a0\u00bb, c&rsquo;est \u00e0 dire \u00e0 des modules d\u00e9di\u00e9s \u00e0 des usages sp\u00e9cifiques mais qui ne sont pas disponibles dans Processing sans avoir \u00e9t\u00e9 explicitement r\u00e9clam\u00e9s. Chaque librairie a son propre fonctionnement, son lot de commandes et de propri\u00e9t\u00e9s. Certaines sont fournies avec Processing et peuvent \u00eatre incluses \u00e0 des animations avec la commande \u00ab\u00a0Sketch -&gt; import library\u00a0\u00bb, d&rsquo;autres doivent \u00eatre t\u00e9l\u00e9charg\u00e9es s\u00e9par\u00e9ment et ajout\u00e9es \u00e0 un dossier nomm\u00e9 \u00ab\u00a0librairies\u00a0\u00bb et plac\u00e9 dans le dossier de travail.<br \/>\nToutes doivent en tout cas \u00eatre d\u00e9clar\u00e9es avec la commande <code>import <em>nom_de_la_librairie<\/em>.<em>sous_modules<\/em><\/code> o\u00f9 \u00ab\u00a0sous_modules\u00a0\u00bb est souvent remplac\u00e9 par une ast\u00e9risque (*) qui signifie que l&rsquo;on souhaite tous les importer.<\/p>\n<p>Voici un exemple simple d&rsquo;utilisation d&rsquo;une librairie native de Processing, la librairie pdf, qui permet d&rsquo;enregistrer son dessin au format pdf. On remarque que la commande size, qui d\u00e9crit l&rsquo;espace d&rsquo;affichage, est agr\u00e9ment\u00e9e de deux param\u00e8tres : PDF et un nom de fichier pdf. La mention PDF signifie tout simplement que ce n&rsquo;est pas vers l&rsquo;\u00e9cran que devront \u00eatre affich\u00e9es les images, et le nom de fichier est le nom du fichier \u00e0 cr\u00e9er et dans lequel doit \u00eatre enregistr\u00e9 le dessin.<\/p>\n<div class=\"code\">\n<pre>import processing.pdf.*;\n\nvoid setup() {\n\u00a0\u00a0smooth();\n\u00a0\u00a0size(500, 800, PDF, \"essaivectoriel.pdf\");\n\u00a0\u00a0noFill();strokeWeight(0.3);\n}\n\nvoid draw() {\n\u00a0\u00a0for(int a=0;a&lt;width\/20;a++){\n\u00a0\u00a0 \u00a0for(int b=0;b&lt;height\/20;b++){\n\u00a0\u00a0 \u00a0 float n = random(1,20);\n\u00a0\u00a0 \u00a0 \u00a0ellipse(10+a*20, 10+b*20, n, n);\n\u00a0\u00a0 \u00a0}\n\u00a0\u00a0}\n\u00a0\u00a0print(\"Dessin termin\u00e9, image enregistr\u00e9e.\");\n\u00a0\u00a0exit();\n}<\/pre>\n<\/div>\n<p>Une fois le dessin (des ellipses de taille irr\u00e9guli\u00e8re dessin\u00e9es \u00e0 20 pixels d&rsquo;intervalle) termin\u00e9, le programme \u00e9crit un message qui signifie que l&rsquo;op\u00e9ration est achev\u00e9e. Ce n&rsquo;est pas obligatoire, mais bien pratique si l&rsquo;on consid\u00e8re qu&rsquo;aucune fen\u00eatre d&rsquo;affichage ne s&rsquo;est ouverte. Enfin, la commande <code>exit()<\/code> permet d&rsquo;abandonner le programme apr\u00e8s son ex\u00e9cution.<br \/>\nL&rsquo;enregistrement des pdf permet par ailleurs de cr\u00e9er des documents de plusieurs pages.<\/p>\n<p>Parmi les autres librairies existantes, signalons :<\/p>\n<ul>\n<li>La librairie OpenGL, qui permet d&rsquo;exporter des fichiers vectoriels en trois dimensions.<\/li>\n<li>La librairie dxf, qui permet de cr\u00e9er des fichiers vectoriels 3D Autocad<\/li>\n<li>La librairie video, qui permet d&rsquo;enregistrer de la vid\u00e9o au format Quicktime<\/li>\n<li>La librairie Network, qui permet d&rsquo;envoyer et de recevoir des donn\u00e9es sur le r\u00e9seau<\/li>\n<li>La librairie Serial, qui permet d&rsquo;envoyer et de recevoir des informations sur le port s\u00e9rie de l&rsquo;ordinateur (utile pour piloter un panneau lumineux par exemple)<\/li>\n<li>Minim, qui permet de manipuler du son<\/li>\n<\/ul>\n<div>Parmi les librairies qui ne sont pas fournies avec Processing et qui doivent donc \u00eatre t\u00e9l\u00e9charg\u00e9es \u00e0 part, mentionnons :<\/div>\n<ul>\n<li><a href=\"http:\/\/www.extrapixel.ch\/processing\/gifAnimation\/\" target=\"_new\">gifAnimation<\/a>, pour exporter au format gif anim\u00e9<\/li>\n<li><a href=\"http:\/\/www.texone.org\/prosvg\/\" target=\"_new\">proSVG<\/a>, qui permet d&rsquo;exporter au format d&rsquo;images vectorielles SVG<\/li>\n<li><a href=\"http:\/\/processing.unlekker.net\/SimplePostscript\/index.html\" target=\"_new\">SimplePostScript<\/a>, pour exporter au format vectoriel Postscript<\/li>\n<li>&#8230; et de nombreuses autres, permettant d&rsquo;\u00e9crire des donn\u00e9es XML, de manipuler divers formats de fichiers graphiques, etc.<\/li>\n<\/ul>\n<p>Les librairies mentionn\u00e9es permettent de produire des fichiers avec Processing mais il existe bien d&rsquo;autres librairies qui permettent d&rsquo;\u00e9tendre les capacit\u00e9s du logiciel de bien d&rsquo;autres mani\u00e8res : importation, communication avec des cam\u00e9ras, des joysticks, filtres d&rsquo;images, d\u00e9tection de formes, etc.<br \/>\nOn peut consulter la liste de ces librairies <a href=\"http:\/\/www.processing.org\/reference\/libraries\/index.html\" target=\"_blank\">sur la page qui leur est d\u00e9di\u00e9e<\/a> dans la documentation de Processing.<\/p>\n<p>Voil\u00e0, nous en avons fini avec cette introduction \u00e0 Processing !<\/p>\n<ol class=\"footnotes\"><li id=\"footnote_1_3016\" class=\"footnote\"> Le format SVG (<em>Scalable Vector Graphics<\/em>) est assez r\u00e9pandu dans le domaine du dessin vectoriel mais on sait rarement qu&rsquo;il dispose de fonctions interactives assez \u00e9volu\u00e9es qui en font un modeste (et gratuit) concurrent de Flash&#8230; Malheureusement, le plug-in SVG est d\u00e9velopp\u00e9 par Adobe qui ne l&rsquo;a plus mis \u00e0 jour depuis son rachat de Macromedia et de Flash <span class=\"footnote-back-link-wrapper\"> [<a href=\"#identifier_1_3016\" class=\"footnote-link footnote-back-link\">&#8617;<\/a>]<\/span><\/li><\/ol>","protected":false},"excerpt":{"rendered":"<p>Dernier article consacr\u00e9 \u00e0 Processing pour l&rsquo;instant, ou plut\u00f4t, c&rsquo;est le dernier sur ce blog, tout cela prendra une autre forme, peut-\u00eatre plus adapt\u00e9e, dans quelques semaines. N&rsquo;h\u00e9sitez pas \u00e0 me faire part de vos observations ou de vos questions en commentaire \u00e0 ces articles, c&rsquo;est ce qui me permettra de les am\u00e9liorer et c&rsquo;est [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40],"tags":[],"class_list":["post-3016","post","type-post","status-publish","format-standard","hentry","category-processing"],"_links":{"self":[{"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=\/wp\/v2\/posts\/3016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3016"}],"version-history":[{"count":0,"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=\/wp\/v2\/posts\/3016\/revisions"}],"wp:attachment":[{"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}