{"id":17343796,"url":"https://github.com/ffoodd/iimmgg","last_synced_at":"2025-03-27T09:42:29.769Z","repository":{"id":183953788,"uuid":"670344897","full_name":"ffoodd/iimmgg","owner":"ffoodd","description":"11ty-based image generator","archived":false,"fork":false,"pushed_at":"2024-09-23T20:09:25.000Z","size":65241,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-01T14:32:20.328Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Nunjucks","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ffoodd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-24T21:00:16.000Z","updated_at":"2024-09-23T20:09:27.000Z","dependencies_parsed_at":"2024-09-17T18:35:17.998Z","dependency_job_id":"220653be-fc95-400d-90d7-8af1827449e3","html_url":"https://github.com/ffoodd/iimmgg","commit_stats":null,"previous_names":["ffoodd/iimmgg"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffoodd%2Fiimmgg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffoodd%2Fiimmgg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffoodd%2Fiimmgg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffoodd%2Fiimmgg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ffoodd","download_url":"https://codeload.github.com/ffoodd/iimmgg/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245821008,"owners_count":20677959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T16:10:21.006Z","updated_at":"2025-03-27T09:42:29.747Z","avatar_url":"https://github.com/ffoodd.png","language":"Nunjucks","readme":"# iimmgg\n\nCe projet utilise [11ty](https://www.11ty.dev/) — et notamment [la pagination](https://www.11ty.dev/docs/pages-from-data/), [les filtres](https://www.11ty.dev/docs/filters/), et [les permaliens](https://www.11ty.dev/docs/permalinks/) — pour générer des SVG à partir d’un objet json en entrée.\n\n\n## Données\n\nLes fichiers json d’entrée sont stockés dans `_site/_data/`.\n\n### Nettoyer un json d’entrée\n\nLa source principale est [l’export proposé par MT](https://www.paris-web.fr/export_conferences_gael.json) :\n\n1. à filtrer pour l’année en cours (2023),\n2. à enregistrer dans `_site/_date/pw-2023.json` (ignoré de Git),\n3. à limiter aux conférences et atelier de ladite année.\n\nPuis en utilisant [jq](https://jqlang.github.io/jq/), on peut générer un fichier json sur-mesure contenant uniquement les clés qui nous intéressent — par exemple, pour un export du programme de Paris Web, voilà la commande utilisée :\n\n```shell\ncat _site/_data/pw-2023-export.json | jq 'map({title,date,start,speakers,type,lang})' \u003e _site/_data/pw-2023-clean.json\n```\n\n\u003e [!IMPORTANT]\n\u003e On écrase le fichier source, car des données supplémentaires sont ajoutées dans le fichier source pour 11ty : présence des sponsors, pauses et sauts de ligne (`\\n`).\n\n## Images\n\nLes images sont générées en SVG avec un peu d’aide d’Eleventy et [Nunjucks](https://mozilla.github.io/nunjucks/), puis sont converties en png avec Firefox (lancé en CLI via un script Node) :\n\n```shell\nfirefox -p \"noob\" --screenshot path/to/img.png --window-size 1920,1080 http://localhost:8080/pw-2023/svg/img.svg\n```\n\nPlusieurs écueils :\n1. Il faut disposer de Firefox, et un profil vierge nommé `noob` (ou à changer dans la commande précédente) ;\n2. Il faut lancer un serveur web (donc `npm start`) : la commande ne veut pas fonctionner avec `file://` ;\n3. Et c’est quand même assez lent.\n4. Sharp est utilisé pour optimiser les PNG sortis.\n\n### À étudier en remplacement\n\nJ’ai déjà voulu jouer avec :\n\n- Sharp : ne gère pas les fontes embarquées,\n- Puppeteer : impossible de le lancer sur mon poste.\n\nD’autres solutions existent — mais qui ne seront pas _cross-platform_.\n\n#### rsvg-convert\n\n```shell\nsudo apt install librsvg2-bin\nrsvg-convert -w 1920 -h 1080 docs/pw-2023/svg/aria-the-good-parts.svg -o docs/pw-2023/png/aria-the-good-parts.png\n```\n\n#### ImageMagick\n\n```shell\nsudo apt install imagemagick\nconvert -size 1920x1080 docs/pw-2023/svg/aria-the-good-parts.svg docs/pw-2023/png/aria-the-good-parts.png\n```\n\n#### Inkscape\n\nSemble ne pas gérer `\u003cuse\u003e` et `\u003cimage\u003e`.\n\n```shell\ninkscape docs/pw-2023/svg/aria-the-good-parts.svg --export-type png -h 1080 -w 1920\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fffoodd%2Fiimmgg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fffoodd%2Fiimmgg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fffoodd%2Fiimmgg/lists"}