clemtre
11 months ago
2 changed files with 35 additions and 145 deletions
@ -1,122 +0,0 @@ |
|||||
# Presentation |
|
||||
Signet.sh est un script shell qui transforme une base de donnée de liens |
|
||||
en une page html. La conversion est faite par une commande awk au sein |
|
||||
d'une déclaration here-doc qui est redirigé dans une page html. |
|
||||
|
|
||||
J'ai créé ce script car je trouve le gestionnaire de marque-page de |
|
||||
firefox instatsifant, autant dans sa forme que dans le format utilisé |
|
||||
(sqlite). Ce script et les utilitaires autours proposent une une |
|
||||
alternative pour archiver ses navigations internet. |
|
||||
|
|
||||
## Format de la base de donné |
|
||||
Seule une Url est requise, le reste des champs sont |
|
||||
facultatifs, on compte les champs suivants : |
|
||||
URL : ... |
|
||||
Name : Par défaut la balise </title> de la page |
|
||||
Description : ... |
|
||||
Tags : mots-clés séparés d'une virgule |
|
||||
Date : heure posix de l'ajout du lien |
|
||||
Color : couleur css (nom, hex, rgb etc...) |
|
||||
|
|
||||
Par exemple, dans un fichier qui s'appelle par défaut BOOKMARKS : |
|
||||
``` |
|
||||
URL: https://rosettacode.org/wiki/Rosetta_Code |
|
||||
Name: Rosetta Code |
|
||||
Description: |
|
||||
Tags: literacy, read |
|
||||
Date: 1704675057 |
|
||||
|
|
||||
URL: https://www.emigre.com/TypeSpecimens |
|
||||
Name: Emigre: Type Specimens |
|
||||
Description: |
|
||||
Tags: emigre, type |
|
||||
Date: 1704680644 |
|
||||
Color: Purple |
|
||||
|
|
||||
URL: https://web.archive.org/web/20211025182257/http://len.falken.ink/ |
|
||||
Name: Wayback Machine |
|
||||
Description: |
|
||||
Tags: read |
|
||||
Date: 1704712747 |
|
||||
``` |
|
||||
|
|
||||
|
|
||||
# Autres gestionnaires de marque-pages : |
|
||||
- nb https://xwmx.github.io/nb/ (AGPL-3.0) |
|
||||
- ?? |
|
||||
|
|
||||
|
|
||||
# Dependance~~s~~ : |
|
||||
Pour ajouter un lien via l'interface proposée, on aura besoin |
|
||||
d'installer dmenu ~~et htmlq~~. |
|
||||
* dmenu https://tools.suckless.org/dmenu/ (MIT/X) |
|
||||
* ~~htmlq https://github.com/mgdm/htmlq (MIT)~~ remplacé par une |
|
||||
commande awk |
|
||||
## dmenu |
|
||||
Dmenu est un menu interactif qui permet de sélectionner et d'écrire des |
|
||||
valeurs dans un menu. Ces valeurs peuvent provenir d'un programme |
|
||||
fournit en entrée un *pipe* "|", par exemple : |
|
||||
ls | dmenu |
|
||||
affiche un menu déroulant avec les fichiers de mon répertoire. Dans |
|
||||
notre script, pour stocker le choix dans une variable, on peut faire : |
|
||||
tags=$(echo "" | dmenu -p "Enter comma-separated tags:") |
|
||||
## ~~htmlq~~ |
|
||||
Htmlq est un parseur d'html écrit en go. Peu importe quel parseur on |
|
||||
utilise, on dirait que chaque langage a le sien. |
|
||||
Il s'agit ici de fournir au programme une chaîne de caractère en entrée |
|
||||
et d'en filtrer des éléments html |
|
||||
Si en javascript pour récupérer tous les \<h1> enfants d'une \<section> on |
|
||||
peut faire |
|
||||
document.querySelectorAll('section h1') |
|
||||
En shell, c'est plus compliqué, htmlq est fait pour ça : |
|
||||
``` |
|
||||
cat fichier.html | htmlq 'section h1' |
|
||||
``` |
|
||||
Et pour récurer seulement le texte -- l'équivalent en javascript de |
|
||||
.innerHTML : |
|
||||
cat fichier.html | htmlq 'section h1' --text |
|
||||
On s'en sert pour récupérer la balise titre de la page à ajouter : |
|
||||
curl page.html | htmlq 'title' --text |
|
||||
Patch pré-sortie : |
|
||||
|
|
||||
|
|
||||
|
|
||||
C'est quelque chose qu'il faudra changer, pour l'instant cette étape est |
|
||||
bloquante. Pour peu que la connection internet coupe lors de l'ajout |
|
||||
d'un lien, il faudra attendre la fin de la tentative de curl pour passer |
|
||||
au prochain champs du script :/ sorry ! |
|
||||
|
|
||||
# Usage : (faites les votre) |
|
||||
Pour ajouter un lien, je séléctionne l'url de la page avec Ctrl + l, la |
|
||||
copie et lance add.sh avec Super + i. _Si quelqu'un sait récupérer l'url |
|
||||
de la page courante du navigateur sans avoir à la copier, ça |
|
||||
économiserait deux étapes._ |
|
||||
En résumé : Ctrl + l, Ctrl + c, Super + i |
|
||||
(ou plus court : Ctrl + l + i, Super + i) |
|
||||
|
|
||||
Super + i car dans le fichier de configuration de mon gestionnaire de |
|
||||
fenêtre situé dans ~/.config/awesome/rc.lua j'ai les lignes suivantes : |
|
||||
|
|
||||
awful.key({modkey}, "i", function() |
|
||||
awful.util.spawn_with_shell("add.sh") end, |
|
||||
{description = "Enregistre le lien copié dans signet.sh"}), |
|
||||
|
|
||||
# Structure du répertoire |
|
||||
|
|
||||
BOOKMARKS → Une base de donnée de liens |
|
||||
add.sh → Un script pour rajouter un lien dans la base de donné |
|
||||
- dmenu |
|
||||
- ./signet.sh |
|
||||
signet.sh → Le script shell en lui-même |
|
||||
- Il génère une nouvelle page html à partir de la base |
|
||||
de donnés de liens (par défaut index.html) |
|
||||
style.css → La feuille de style pour styliser index.html |
|
||||
script.js → Un peu de javascript pour: |
|
||||
- rechercher dans la </textarea> |
|
||||
- ajouter les couleurs de fond aux entrées qui en ont |
|
||||
- si le champs de description est vide, ne pas |
|
||||
l'afficher |
|
||||
- formater les dates du temps posix au format AA-MM-JJ |
|
||||
/!\ Prochainement /!\ |
|
||||
starred.sh → Un curl des repos de l'api github https://api.github.com/users/[user]/starred , formaté de json à une liste html sans jq ! |
|
||||
|
|
Loading…
Reference in new issue