API + BOT = RTE_color_bot (@RTE_color@piaille.fr)

Parfois, un post en entraîne un autre... Ainsi, tu t'es mis à coder un BOT presque par inadvertance - avec les difficultés qu'on connaît - et tu le partages parce qu'il n'y a pas de raison que l'auteur soit le seul à pleurer... pis t'as un copain qui te lit et qui prend le truc au sérieux... en tout cas suffisamment pour te proposer d'en faire un autre !

Non, c'est vrai ?!    T'AS TROUVÉ ÇA BIEN ?!

Donc, me v'la reparti pour un tour...

Objectif de la demande: récupérer les données de l'API RTE tempo ( https://data.rte-france.com/catalog/-/api/consumption/Tempo-Like-Supply-Contract/v1.1 ) pour dire la couleur du jour et celle du lendemain et les poster sur un bot mastodon (mais pouvoir appeler le script comme une API aussi)

Je suis donc parti pour tester ladite API: pour la faire courte, ça m'a permis - après les galères d'usage - de comprendre comment tout ça fonctionnait (en particulier la demande d'un token, l'appel d'une api en php etc)

J'en suis arrivé à un script qui produit un texte donnant la couleur du jour et celle du lendemain.

«Oui, mais ce serait cool...»

Le texte c'est bien, mais ce serait mieux si on pouvait récup les données en HTML et intégrer ça avec une Iframe, comme un code d'intégration.

Pis éventuellement en RSS aussi...

Bon, tant que j'y étais, j'ai aussi fait un mode json, au cas où on voudrait ça dans un frontend à soi...

Du coup, mon API s'appelle de plusieurs façons différentes:

  • URL seule ➜ retour en texte RAW (prêt à poster)
  • URL?html ➜ retourne le code HTML
  • URL?json ➜ renvoie les données en JSON
  • URL?rss ➜ le flux RSS de l'API
  • (cadeau bonux) URL?embed_code ➜ retourne le code pour mettre ça sur son site avec une iframe.

Pour faire bonne mesure

Le script produit un fichier pour chaque type de retour et ne le régénère qu'une fois par jour afin d'éviter de se faire «hammerer» comme dit @parigotmanchot

Jusque là, tout va à peu près dans un monde couci, couça

À ce stade, le script fonctionne même si le code est un peu sale et pas bien rangé... il fait ce qu'on lui demande. A part que parfois, il ne donne pas la couleur du lendemain... mais pas en local... juste en distant. Je n'ai pas encore vraiment cherché pourquoi, mais je pense que c'est dû au moment où l'on appelle l'API de RTE.

Pourquoi s'en tenir là ?

Tant que j'y étais, j'ai regardé l'API ECOWATT ( https://data.rte-france.com/catalog/-/api/consumption/Ecowatt/v4.0 ) qui donne une couleur et un message décrivant le niveau de stress du réseau.

Du coup, le script appelle les deux API et retourne les données cumulées des deux.

ce qui donne ça

Capture du 2022-12-11 10-47-34.png

Capture du 2022-12-11 10-49-23.png

J'en veux j'en veux...

Si ça vous intéresse, le zip est là : RTETempo.zip et il est distribué sous stricte licence faites-en ce que vous voulez. 😅

Les constantes au début permettent de configurer un peu:

  • TOKEN_BASE64 : pour mettre votre propre jeton si vous voulez vous inscrire sur RTE (qui accepte les emails jetables type yopmail, je dis ça je dis rien 😬)
  • TEMPO_BEFORE_TODAY, TEMPO_BEFORE_TOMORROW, ECOWATT_BEFORE_TODAY, ECOWATT_BEFORE_TOMORROW : pour définir le texte renvoyé avant la couleur.
  • HTML_STYLE : pour changer le style du HTML généré
  • TEMPO_HTML_TEMPLATE, ECOWATT_HTML_TEMPLATE : pour changer le code HTML à utiliser en cas de retour HTML
  • ECOWATT, TEMPO : deux booléens permettant de débrayer l'un ou l'autre des appels (si vous ne voulez que ECOWATT ou que TEMPO)

Et le BOT ?!

Ben j'ai fait un autre BOT pour poster les couleurs du réseau une fois par jour... https://piaille.fr/@RTE_color ( @RTE_color@piaille.fr )

Capture du 2022-12-11 11-01-14.png

Stamp v1.0

Dans la catégorie débranchement de cerveau, je vous propose une appli vigoureusement inutile mais totalement défoulatoire: Stamp.

Cette appli/api vous donne la possibilité d'ajouter un tampon sur une image en un minimum d'opérations. Ainsi, vous pourrez passer :

de ça

1.jpg

à ça

2.jpeg

A partir du frontend

En partant de là : https://api.warriordudimanche.net/stamp/ vous remplissez l'URL et le texte, vous validez et hop.

Capture du 2022-06-22 17-18-14.png

Mais aussi avec le bookmarklet

Comme toujours, le bookmarklet vous permet d'envoyer l'URL courante à Stamp: ouvrez l'image dans un nouvel onglet et cliquez sur le bookmarklet.

pour les plus observateurs

Bande de coquins, vous avez sans doute remarqué un autre bookmarklet à côté du premier... c'est un bookmarklet dynamique: grâce à lui vous pouvez créer des bookmarklets avec un texte spécifique.

Par exemple, si vous envisagez d'utiliser souvent le tampon «dans ton cul», pourquoi le retaper à chaque fois ? Glissez ce lien dans la barre de favoris et let's the fun begins !

Comme d'hab

Fait à l'arrache, interrompu toutes les minutes mais avec amour, dévotion à l'absurdité du monde et mon ordi.

Warrior du Dimanche - Publication à caractère intermittent, approximatif et dilettante.

@Antichesse (o ^ω^ o) Lol ! Je suis heureux d'avoir contribué à un rire ! C'est pas si souvent qu'on a des satisfactions en ce moment ;-)

On ne se connaît pas, mais c'est à la faveur de moments et d'attentions comme ceux-ci qu'on tisse des liens ... Dans mes bras camarade ! o/

Via https://cakeozolives.com/shaarli-antichesse/?yEOfgw

<video> : c'est du <track> cas ! HELP [EDIT 2h après] [Merci Bill2]

Et allez, encore une matinée de perdue pour un truc que j'avais pas prévu et qui devrait fonctionner parfaitement: la balise <video> et la balise <track> pour ajouter les sous-titres.

Pour afficher une video pour les élèves avec les sous-titres que j'ai traduit de youtube, en gros, je fais un truc comme ça:


<video controls title="sdfgsdfg" preload="auto" >
    <source src="http://serveur/Marco Castelblanco.mp4"  type="video/mp4">
    <track kind="subtitle" srclang="fr" label="sous-titre" src="http://serveur/Marco Castelblanco.vtt" default="true"/>
    Sorry, your browser doesn't support embedded videos.
</video>

Pour ce fichier de sous-titres, J'ai :

  • récupéré vidéo+sous-titres avec JDownloader
  • j'ai traduit les sous-titres
  • j'ai converti le format .srt fourni par yt en .vtt, le format compatible avec track

MAIS ÇA MARCHE PAS

  • J'ai beau essayer en local, en distant,
  • en http et en https,
  • dans un fichier html ou php,
  • sur firefox/chromium/vivaldi,
  • tous les fichiers se chargent normalement (ils n'apparaissent pas comme 404 dans la console-réseau.)
  • l'encodage est bon
  • le format de fichier (vtt) est bon aussi...
  • [edit] l'attribut crossorigin sur video ne change rien

J'ai cherché partout, je me prends la tête depuis des heures...

J'ai même essayé de forcer le track.mode à "showing" au cas où. Mais non.

Si quelqu'un a une idée, je prends...

Solution !

Il suffit de mettre kind="captions" au lieu de kind="subtitle" pour que ça fonctionne...

Merci à Bill2 pour la solution !

EN FAIT C'EST MOI K'É COUILLON

Une matinée perdue pour un «s» manquant à subtitleS : kind="subtitles"

Quand Java bien... - Warrior du Dimanche - Antichesse (o ^ω^ o)

Merci à tous pour vos témoignages anti-java qui font que je me sens moins seul et pour vos conseils en la matière !

@Antichesse (o ^ω^ o) Merci à toi en particulier pour ta proposition il se pourrait que je te prenne au mot o/ Je vais aller essayer la rubrique openclassroom dédiée à Kotlin DQP ( https://www.youtube.com/watch?v=QpNOl2BU7tE pour la référence ^u^ )

Broncomic : Un coup d'oeil sur mon appli dédiée à la fabrication des BD de ce site - Warrior du Dimanche - dukeart

@Duke : Effeectivement, c'est le souci de base, le risque de retrouver mon Bronco à toutes les sauces

Toutefois, si Broncomic intéresse vraiment, je réfléchirai à l'adapter pour un usage plus général:

  • en créant des graphismes plus génériques
  • en prévoyant la possibilité d'importer ses propres graphismes simplement
  • en travaillant peut-être aussi la maquette pour qu'elle soit plus mobile friendly (gros taf )
  • en isolant le code spécifique de l'appli car pour le moment, elle fait partie d'un ensemble basé sur mon framework perso
  • en refactorisant le code pour permettre à des gens sains d'esprit de le reprendre sans se retrouver en PLS avec un pompier qui leur demande combien il a de doigts...

Mais bon, ça, c'est si ça intéresse des gens

TheForeignAgent (@TheForeignAgent@social.taker.fr) - Mastodon

Si vous aimez les couteaux et que vous voulez faire un geste sympa il y a moyen d'aider un pote mastodon dans une mauvaise passe: il est obligé de revendre sa collection de couteaux parce que l'activité de travail du cuir dans laquelle il avait décidé de se reconvertir n'a pas fonctionné suffisamment pour qu'il en vive...

Vous pouvez aussi jeter un coup d'oeil à son travail sur https://pjs-leathercraft.ogre.st/ ou https://www.instagram.com/ducuiretdeslames/?hl=fr

Le code du dimanche: Grafit (oui, un lundi... je suis un fou, moi )

Alors là, on est clairement dans le code du dimanche, et vous allez voir pourquoi...

J'avais envie de faire un outil de visualisation de données facile d'accès et simple, comme un microservice que je pourrais utiliser par la suite dans une de mes applis...

Comme toujours, avant même de voir si ça existerait pas déjà, je me demande comment faire le truc moi-même et ce que je vais pouvoir apprendre avec...
C'est alors que je me dis que le SVG ce serait bien:

  • redimensionnable
  • léger
  • universel
  • je ne connais pas la génération de SVG en PHP : youpi

Je me lance...

et j'arrive à des résultats pas trop dégueus mais tout se corse (chef-lieu Ajaccio) quand je dois placer le texte (nombres, noms de colonnes etc)

et là c'est le drame

C'est emmerdant à center, c'est emmerdant à redimensionner: bref c'est emmerdant. Pour résumer.

J'en ai tellement chié pour un résultat tellement pas terrible que, d'un coup, je me suis rappelé que mon copain JerryWham avait fait une lib juste pour ça !

phpGraph

Une lib qui permet de transformer des données en graphique au format SVG directement, avec des options de configuration et des rendus différents (ligne, barres, camemberts etc), ça vous tente ? Ben c'est par là :

Comme le plus dur est fait (et VRAIMENT bien fait)

Je me suis contenté de faire un script qui permet de passer des données et la config à la lib via $_GET

  • data: des données au format json [123,234,345,...] ou {"cle":valeur...}
  • w,h: largeur et hauteur (opt.)
  • color: couleur du graph au format FFFFFF (opt.)
  • lines/filled:graphique en ligne ou en lignes remplies (par défaut, le graph est en barres)
  • steps: le pas des graduations en ordonnée (calculé par défaut en fonction du maximum)
  • title: le titre du graph (opt.)
  • hidekeys: pour cacher les clés en pied de graph

Et ça donne quoi ?

Données d'un tableau séquentiel

Les clés ne sont donc pas affichées.

api.warriordudimanche.net/grafit/?data=[123,321,51,656,89,54,67,56]

Le même avec un graph de surface

api.warriordudimanche.net/grafit/?data=[123,321,51,656,89,54,67,56]&filled

Avec des données de tableau associatif

Par exemple des données générées par GenContent

api.warriordudimanche.net/grafit/?color=FF0000&data={"01/08/18":"2822","28/11/19":"5320","01/05/16":"3856","03/04/19":"5087","25/10/14":"7137","27/12/17":"6365","08/11/15":"6616","01/05/17":"1341","01/08/14":"2742","05/07/20":"4697"}

https://api.warriordudimanche.net/grafit/?color=FF0000&lines&hidekeys=&data={"23/02/11":"9391","18/09/15":"5098","07/10/12":"8553","04/06/12":"3349","09/07/13":"1260","31/07/17":"1311","10/05/14":"2039","01/12/17":"273","19/08/14":"4641","04/07/11":"3806","24/11/12":"9094","20/10/19":"4837","14/02/11":"9425","24/06/17":"5971","09/08/15":"4326","18/07/15":"71","06/10/16":"1706","02/08/14":"9249","01/07/18":"3612","22/10/11":"375","27/04/17":"3596","04/11/15":"3732","21/03/13":"407","18/07/16":"2180","16/04/14":"9401","22/12/11":"3474","10/07/15":"4725","07/12/11":"2081","10/10/14":"3216","12/03/16":"3654"}[/center]

Attention !

Ce n'est pas pour visualiser des données épiques, multidimensionnelles ou vraiment très nombreuses (les clés se chevauchent s'il y a trop de données et on peut les masquer en ajoutant hidekeys en paramètre.)

Ce sera sans doute appelé à évoluer mais bon, je me suis bien amusé et j'ai touché du doigt que faire du SVG, ça se fait pas entre deux portes au doigt mouillé...

sansdeconner.jpeg

[ NDLR : rivières de shaarlis ] vzdump(1) [ utiliser parallel gzip avec vzdump @ proxmox ] - GuiGui's Show - Liandri's Links. - GuiGui's Show - Oros links - GuiGui's Show - Oros links - GuiGui's Show - Liandri's Links.

Ben oui mon canard (^u^)/ : ton espace, tes règles.

On a beau refuser la censure, on peut aussi décider de ne pas donner plus de visibilité que ça à des gens dont les opinions sont pour le moins contestables...(J'aurais le sentiment de donner l'impression que diffuser, c'est soutenir.) Excellente décision mon pote ! (et bisou au passage )

Back to life, back to reality

Un billet de Cyrille Borne dans lequel on retrouve les problèmes soulevés dans mes posts précédents:

  • la fin de la liberté pédagogique,
  • la vente des données à microsoft au nom de la protection des données
  • la précarité numérique instaurée par l'usage forcé d'environnements qui peuvent disparaître en emportant avec eux tout ton travail
  • l'absence d'interopérabilité qui t'empêche totalement de reprendre tes productions numériques, en faire des backups, les adapter aux outils suivants etc.
  • le merveilleux moyen de pression que tout ça représente pour des chefs de plus en plus adeptes des méthodes de management à l'américaine.

J'ajouterais le merveilleux moyen de flicage que l'ENT représente également pour des chefs un peu veules qui préfèrent te faire chier de loin sans risquer d'avoir à te regarder dans les yeux... (le mien, par exemple)

Fil RSS des articles