Api perso: Fetchit, le bon chienchien du oueb...

Ouate ?

Après avoir fait goofi puis Getlib j'ai codé vite fait une petite «api» destinée à ramener en local n'importe quelle ressource distante... «quelle différence avec getlib ?» allez-vous me demander sur un ton narquois à propos de la cruauté duquel je tairais scrupuleusement tout commentaire.

J'ai eu envie de faire ça car j'en avais assez de passer par le combo

bouton droit sur une ressourcetélécharger envoyer sur mon sitefaire un lien ou une img

Du coup, il suffit d'ajouter l'adresse de l'api à l'url vers la ressource distante... Donc http://insta.com/image.jpg devient par exemple http://api.warriordudimanche.net/fetchit?url=http://insta.com/image.jpg

Fetchit va récupérer la ressource en local et vous servir cette version au lieu de la distante. Comme d'hab' si cette ressource a déjà été récupérée elle n'est pas re téléchargée.

Le deuxième effet kiskool (paye ta réf de vieux) c'est que du coup, comme getlib, ça permet de récupérer toute lib en local et être plus RGPD friendly.

Examples:

  • utiliser directement une image distante : <img src="http:www.distantserver.com/pic.png"/> ➜ <img src="http://api.url.com?url=http:www.distantserver.com/pic.png"/>
  • lien vers une ressource distante : <a href="http:www.distantserver.com/file.pdf"> Link to distant file</a> ➜ <a href="http://api.url.com?url=http:www.distantserver.com/pic.png"> Link to distant file</a>
  • utiliser une lib hébergée sur un CDN distant : <script src="http:www.distantnastyserver.com/lib.js"></script> ➜ <script src="http://api.url.com?url=http:www.distantnastyserver.com/lib.js"></script>

    Con figue ?

    Afin d'éviter que votre server ne se retrouve floodé par des fichiers vidéos 8K à 60 gigots l'unité, il y a une limite de taille configurée dans la constante SIZE_LIMIT, fixée par défaut à 10 Mo.

    Le code ?! c'est... le code.

    Ceux qui aiment farfouiller verront que cette fois, j'ai fait une classe fetchit_class.php qui se charge de tout. Son fonctionnement est tellement simple que je me fissure même pas le joufflu à vous le détailler, démerdez-vous.

    License

    Comme d'hab', c'est cadeau... Utilisez, partagez, modifiez... juste respectez la Dont be a dick licence

    donne le ouade

    Comme tout ça n'a de sens que si on héberge soi-même, vous pouvez récup' le zip qui va bien ici : https://api.warriordudimanche.net/fetchit/?download

    Le mot final

    Mes chers cons-patriotes, non aux fuites de données, vive le oueb libre et participatif et vive la france et bisou !

  • Elodie Serrano (@avestrit): Donc j'habite dans le quartier bouclé pour Macronasse.Depuis ce matin, pas de circulation, les piétons escortés par des flics.Là, on a voulu sortir sur notre balcon, on regardait nos plantes.On s'est fait interpeller par u

    Macron se cache sur les champs elysees sauf que lui, pour se cacher, il supprime la liberté d'aller et venir de l'ensemble de la population locale... Il se cache en enfermant les autres quoi...

    Mais dites-moi: cette liberté n'est-elle point garantie par la constitution ?! Ha... si : https://fr.wikipedia.org/wiki/Libert%C3%A9_de_circulation

    La liberté de circulation est le droit pour tout individu de se déplacer librement dans un pays, de quitter celui-ci et d'y revenir. Elle est garantie par l'article 13 de la Déclaration universelle des droits de l'homme depuis 1948.

    En plus d'être un

    Trouillard

    Macron est un

    despote

    Si toi aussi tu veux faire une zoli image comme celles-ci, tu peux utiliser STAMP : https://api.warriordudimanche.net/stamp/ (cf http://warriordudimanche.net/article1719/62b3324bdff78 )

    Via https://ecirtam.net/opennews/

    Devoir de français en 6eme pour mon petit dernier: invente un Dieu grec et une histoire (15 lignes)

    ... et me voilà parti à trouver un Dieu grec et une histoire le tout en seulement 15 lignes avec pour contrainte d'être à la portée de mon môme de onze ans (grand fan de l’Iliade et de l'Odyssée). YOUPI !

    J'ai pensé à un Dieu qui serait l'opposé d'un dieu existant: l'amour étant représenté dans le panthéon, j'ai proposé Mîsos, le Dieu de la haine et de la colère. Lucas a adoré 😎

    On a ensuite cherché des personnages, un lieu et un temps, une situation initiale, une perturbation et une résolution qui tienne dans un espace narratif aussi court... et qui ait un message à donner. Je vous en fais profiter 😬

    Mîsos le perfide

    Diocles préparait son bateau pour sa journée de pêche. Les premiers rayons du char d'Hélios réchauffaient son jeune corps après la colère nocturne de Zeus et de Poséidon. Le jeune homme vit soudain un paquet d'algues bouger et gémir. Il s'approcha prudemment, écarta les algues et découvrit un visage cornu qui le fixait avec un regard inquiet.

    Il regarda les cornes de bouc, affreuses, les jambes et les sabots horribles. «QUELLE LAIDEUR INHUMAINE»...«AUCUNE CRÉATURE AUSSI HIDEUSE NE DEVRAIT EXISTER!»...«IL VIENT DE L'HADES!» pensa-t-il...

    ━ «Je te déteste déjà, étranger...»

    Il dégaina son poignard et leva le bras pour achever le monstre...

    ━ «Retiens ton bras, jeune pêcheur, ne laisse pas le perfide Mîsos murmurer à ton oreille !»

    Diocles se retourna et vit Ulysses s'approcher.

    ━ «Mais Seigneur, c'est un monstre et un étranger !»

    ━ «Jeune Diocles , je te présente mon vieil ami Gnédias... Ce n'est plus un étranger désormais.»

    ━ Une voix de tonnerre retentit alors : «MAUDIT SOIS-TU ULYSSES, JE JURE PAR L'HADES DE ME VENGER DE TOI !»

    Classe PHP pour GD + API: Scriptopic

    Il y a quelques jours, lassé de reprendre à zéro à chaque fois que je dois faire un truc avec GD sur PHP, je me suis dit que je pouvais faire une classe pour ça. Comme, exceptionnellement, j'avais un peu moins de deux heures de tranquillité, je m'y suis collé.

    Au bout du compte, une fois la classe codée, il faut bien la tester...😬

    drame.jpeg

    C'est le problème des codeurs : ils ont du mal à arrêter de coder 🤩. Du coup, me voilà en route pour un script exploitant pictools.php... et ce qui aurait du prendre deux heures a pris plusieurs jours de papa codeur (petit rappel: 1 h de papa codeur = 7,2 heures de codeur normal en zone de guerre, au cours actuel 💣)

    Bref, j'ai donc pondu une «api» avec un frontend permettant d'appliquer des transformations à une image à partir de son URL.

    😎 petite image, long discours, toussa.

    Capture du 2022-07-04 21-43-27.png

    Donc, on fournit l'URL de l'image puis on ajoute des actions les unes à la suite des autres. Certaines n'ont pas besoin de paramètres (emboss, sepia etc) et d'autres si (contrast, resize etc)

    Quand on clique sur un bouton action, on ajoute cette action à la liste avec, le cas échéant, l'input qui va bien pour les paramètres avec un placeholder de rappel.

    Ainsi, on peut resize l'image à une taille précise ou à un pourcentage de la taille normale: tous les paramètres de coordonnées et de taille peuvent être précisés en pixels ou en pourcentages.

    De plus, si on veut redimensionner l'image à une largeur en conservant le ratio automatiquement, il suffit de mettre -1 à la place de la hauteur: le script se démerdera tout seul.

    La config ci-dessus donne le résultat ci-dessous:

    pexels-photo-67818-large-758x505.jpeg

    L'image d'origine

    result.jpeg

    Le résultat donné par scriptopic

    Mais c'est pas tout

    Donc, scriptopic permet de retoucher une image automatiquement. OK.👍

    Mais cette image est utilisable directement depuis son URL de génération: si on colle l'URL précisée dans le cadre résultat, ça fonctionne. Avec un peu d'habitude, on peut le faire en direct (genre pour une image d'en-tête...). Comme les images retouchées sont sauvegardées avec un hash de l'url de requête, si on l'appelle à nouveau, elle ne sera plus générée mais simplement renvoyée (visible soulagement du serveur )

    Et aussi

    Comme des fois on a la flemme de faire une balise image, Scriptopic vous la donne directement: un double-clic et c'est copié prêt à coller...

    Mais ce n'est toujours pas tout... (vous êtes gâtés)

    Un truc rigolo, c'est que, comme pour Stamp, le front de scriptopic génère un bookmarklet en temps réel (c'est la deuxième ligne du cadre résultat): une fois satisfait de votre script, le bookmarklet généré permet de l'appliquer à l'image en cours: vous ouvrez l'image dans un onglet et clic-clac merci kodak.

    Si vous voulez simplement envoyer l'image en cours pour travailler dessus, le bookmarklet de base est dispo en footer.

    Atta atta, pars pas j'ai pas fini

    Histoire d'ajouter encore une feature, vous pouvez stocker des scripts, à la main, dans le dossier ... scripts/ . Vous utiliserez le nom du fichier dans l'url avec ?script=[nomdefichier]

    Ainsi, en sauvant le json de l'exemple (cadre «Script au format JSON») dans un fichier scripts/sepia.json vous pouvez ensuite l'appeler avec&script=sepia

    Vous pouvez vous faire une bibliothèque de scripts pour tout et les appeler directement au lieu de vous taper du json dans l'URL

    Tout est expliqué dans l'aide : https://api.warriordudimanche.net/scriptopic/?help

    Hé m'sieu m'sieu:  pourquoi à la main ?  C'est mieux avec un  ptit bouton pour sauver  le script, non?

    Ben parce que pour sauver sur le serveur, il faudrait un compte admin, donc un espace sécurisé et tout le toutim... et là, on parle pas du même projet

    En conclusion

    Le bouzin est testable là: https://api.warriordudimanche.net/scriptopic/

    Et téléchargeable ici: https://api.warriordudimanche.net/scriptopic/?download

    Je n'ai pas nettoyé le code, vu que je subis un harcèlement constant à la maison (lol), mais je le ferais, promis ! Le tout est en beta à l'arrache en licence amusez-vous avec.

    Je n'ai pas encore écrit de doc pour pictools_class.php qui se trouve dans le zip, mais c'est assez simple à utiliser et chaque méthode est «documentée»

    
    $picture=new pictool();// on peut mettre un array contenant les valeurs initiales des attributs : ['format'=>'png'] par exemple)
    $picture->load('www.moncul.sur/la_commode.jpeg');
    $picture->contrast(20);
    $picture->sepia();
    $picture->save("fichier.jpeg");
    $picture->display();
    

    Le script matrix qui alterne sketch et gaussian à plusieurs reprises puis colorise en vert

    Pas flippant du tout.

    Todo

    • Débugger, vu que ça va se dévoiler à l'usage plus intensif
    • ajouter le listage et l'usage des scripts sauvegardés dans le front.

    Appli: Metabook - search ebooks on multiple websites

    Parfois un pouet sur Mastodon pour partager une URL et une idée concorde avec un truc que t'avais déjà fait : https://framapiaf.org/@bronco/108423992250980547

    Ainsi, Gilles me fait passer une adresse de métamoteur de recherche d'ebooks ( https://recherche-ebook.fr/ ) tout en notant que ce serait bien de faire une version qui soit plus propre... (pas de JS, de redirections, de pubs etc..)

    therese.jpeg

    écoutez Thérèse, comme la vie est savoureuse, n'est-ce pas...

    Il se trouve que je m'étais fait un script dont le but était justement de charger des urls, de les parser, de récupérer et d'organiser du contenu.

    Ça s'appelle Slurp
    Pour faire simple, on crée des «profils» correspondant à une série d'URL avec la regex de parsing et le template correspondants. Il suffit alors d'appeler le profil pour obtenir une page de résultats mise en forme.

    Comment ça marche ?

    1. on accède au script : ?p=<profil>
    2. slurp accède au fichier de configuration du profil dans packs/<profil>.php
    3. pour chaque url du pack, il charge la page, la parse, met en forme les données dans le template

    Le pack est un array du type:

    $packs['<profil>']=[
        [
            'url'=>'http://urltoparse.com/',
            'pattern'=>'REGEX PATTERN with (?<name>..) capture',
            'template'=>'<li> HTML Template where data is inserted to : use %name% '
        ],
        [
            'url'=>'http://urltoparse.com/',
            'pattern'=>'REGEX PATTERN with (?<name>..) capture',
            'template'=>'<li> HTML Template where data is inserted to : use %name% '
        ],
    
    ];

    Dans le template de chaque url,

    • on peut utiliser %variable% pour placer les captures regex : (?<title>[^"]*?)%title%
    • deux variables sont toujours accessibles:
      • %ROOT% pour accéder à l'url du pack
      • %DOMAIN% pour accéder au domaine de cette url (pour compléter une URL relative par exemple)
    Ya plus qu'à   adapter

    J'ai ajouté la possibilité de créer un dossier au nom du pack contenant un header et un footer pour qu'on puisse faire un site à partir d'un profil. packstemplates/<profil>/

    J'ai ensuite créé un pack contenant les principaux sites d'epubs, cherché les patterns regex...

    Et voilà: metapub cherche sur six sites en même temps: http://slurp.warriordudimanche.net/?p=ebook

    meta.jpg

    Comme d'hab

    1. c'est fait à l'arrache, mais vous avez l'habitude
    2. c'est cadeau, faites-en ce que vous voulez: avec slurp, vous pouvez parser les sites que vous voulez (warez, catalogues, porno... )
    3. vous pouvez installer slurp sur votre serveur et adapter le pack ebook au fur et à mesure que des changements se font (domaine, html de la page etc)
    4. vous pouvez télécharger slurp avec le pack ebook ici: http://slurp.warriordudimanche.net/?download

    A venir ?

    • On peut déjà commencer par faire une UI moins dégueu, ce sera pas mal
    • slurp permet de récupérer le résultat en json mais le RSS n'est pas encore implémenté...
    • ajouter des sites... et les maintenir.

    Enjoy !

    Work in progress: Quicomic

    Après discussions avec quelques personnes qui trouvaient Broncomic sympa, je me suis lancé dans une reprise qui soit plus adaptable:

    • j'ai repris le système de positionnement (plus simple)
    • j'ai un peu clarifié le code
    • j'ai ajouté la possibilité de créer des packs: un dossier contenant un sous dossier par calque à superposer
    • du coup, le nombre de calques et leur ordre de superposition s'adapte au pack: on peut mettre plus ou moins de calques dans son pack.
    • le pack peut contenir un fichier ini dans lequel;
      • on peut configurer les formats d'images disponibles
      • on peut spécifier l'ordre des calques
      • on peut configurer l'endroit où l'image apparaît dans le calque (en pourcentages x et y)

    Reste encore du taf avant de proposer le code:

    • une page de config permettant d'uploader un pack sous forme de zip (et qui s'installe seul)
    • un sélecteur de packs
    • terminer le pack par défaut
    • faire une page FAQ pour savoir comment faire son propre pack.

    Bon  ben ça commence à prendre  forme avec des graphismes  par défaut et la possibilité de faire des  PACKS .png

    Le code du dimanche: Iconeleon

    Comme je le disais dans le billet précédent à propos de SVGBox, l'idée était bonne mais le poids était rédhibitoire.

    Pourtant, ça peut être sympa d'avoir un catalogue d'icônes prêtes à servir et dont on puisse altérer la couleur, sans compter que ce serait une bonne alternative aux webfonts tout en étant plus accessible.

    Donc, j'ai récupéré le pack d'icônes de fontAwesome et j'ai bidouillé une API qui permette de faire la même chose que SVGBox.net, à savoir obtenir une icône svg dans la couleur que l'on souhaite.

    Par exemple:

    api.warriordudimanche.net/iconeleon/?i=headphones donne:

    et si on ajoute le paramètre c on peut changer la couleur: api.warriordudimanche.net/iconeleon/?i=headphones&c=red

    La couleur peut-être au format HTML, un nom de couleur css ou un rgba quelconque...

    api.warriordudimanche.net/iconeleon/?i=headphones&c=rgba(255,0,255,0.5)

    Comme pour fancytation

    Toute icône modifiée est sauvegardée en cache pour éviter une surcharge du serveur

  • help: affiche une aide
  • iconlist: renvoie la liste des icones au format json
  • search=string: renvoie le résultat de la recherche au format json
  • download: permet de télécharger le script php de l'api
  • Et en plus

    Je vous ai ajouté un frontend minimaliste pour rechercher les icones dans les 1615 du pack.

    liens

    Voilà

    Du coup, si ça peut être utile, n'hésitez pas à vous servir voire à proposer un frontend plus... comment dire ? abouti ?

    Nouvelle version: Unicode

    En passant, j'ai mis à jour ma page sur les caractères unicode...

    Il y a plus de rubriques et j'ai ajouté un moteur de recherche qui accepte plusieurs mots séparés par des espaces.

    par exemple: http://unicode.warriordudimanche.net/?search=aubergine

    Allez, bisou !

    Googol résiste (et ça fait du boulot)

    imgbin-computer-icons-avatar-deadpool-desktop-deadpool-pixel-art-x5Gc4h4YnvARncaJgpPeGT2bw.png
    La version 4.2 «unban» de Googol est en phase de test et elle m'a pris le pack premium de chez MaximumEffort. Toutefois, ça valait le coup: plutôt que de me contenter de rediriger vers duckduckgo lors du bannissement par google - ce qui arrivait de plus en plus souvent - j'ai opté pour l'utilisation temporaire d'un moteur alternatif à la place de google...

    (...)

    BigAscii [js]

    Dans la catégorie «script à la con» voici une page qui permet de transformer un texte en gros titre ascii. J'en ai eu besoin pour que la répartition de mon code pour Bozon se voie même dans la minimap de SublimeText.

    (faut dire que la classe post/get à elle seule contient 1700 lignes environ... )

    En vous rendant sur la page en question, vous pouvez taper un texte et sélectionner différents paramètres. Pour l'instant, elle ne gère que les caractères alphanumériques (je n'avais besoin que de ça)...

    Le script est simplissime et facilement modifiable... faites-vous plaisir et partagez vos versions

    La démo | Le zip

    Unicode - html

    J'ai mis à jour la page unicode.warriordudimanche.net pour ajouter la quantité de caractères qui manquaient.
    J'ai un peu recodé pour pouvoir faire des packs avec les listes qui ne se suivent pas (genre les maths, 4 packs ), j'ai ajouté un favicon et j'ai un peu changé le look...


    Si ça intéresse kékin, ben c'est par là : http://unicode.warriordudimanche.net/
    (le github: https://github.com/broncowdd/unicode_page )

    Au passage, petit message à Cyrille qui ne manquera pas de grogner à propos de Bozon3:





    [EDIT] broncowdd/googol: Une page php pour utiliser google en utilisant des liens safe: Googol parse la page de résultats et régénère une page en proposant des liens directs. (jetez également un oeil au référer ^^ )

    Juste en passant, pour les utilisateurs de Googol, j'ai ajouté la mise en surbrillance des mots-clés, si ça intéresse quelqu'un.

    De plus, je songe à créer une sorte de réseau de googol qui permettrait de renvoyer une requête vers une autre instance quand Google bloque la nôtre... Pour ça, il faudra ajouter une base des googol en ligne: avis à ceux qui veulent en être ;-)

    Bon, je fais un test de «googol network» : en gros, en cas de bannissement par google, votre instance va piocher au hasard dans une base d'URLs alternatives et leur renvoyer la requête. Cette base est contenue dans le fichier googol_db.php (auquel vous pouvez ajouter d'autres instances)

    $googol_db=[
        'https://googol.warriordudimanche.net',
        'https://search.green-effect.fr',
    ];

    Si le fichier n'existe pas, il est récupéré sur mon serveur, ou - en cas de serveur down - sur le serveur de github. L'avantage de mon serveur, c'est que vous avez la garantie que je ne loguerai pas vos accès J'aurais pu ajouter une fonction de mise à jour du fichier, mais bon... pas là.

    Si vous voulez ajouter votre instance à la base «officielle», n'hésitez pas à commenter !

    Bon, sur ce, je vais végéter un moment passsque voyez-vous, en ce moment, je passe ma vie en bagnole d'un rendez-vous à l'autre, toujours à dache, entre deux activités jardinières, potagères ou cuisinières...

    Donc, là, c'est décidé:

    Fil RSS des articles