• [^] # Re: Hommage en ASCII Art

    Posté par . En réponse au journal Gaspard Hulliel est bronsonisé suite à une chute ASCII. Évalué à 8. Dernière modification le 21 janvier 2022 à 17:25.

    J’ai étendu le script, cette version va chercher les morts du jour sur Wikidata (ou d’un autre jour en paramètre) et génère les images pour les gens qui en ont une de spécifié sur Wikidata dans le répertoire courant.

    #!/bin/bash
    #Description : Création de miniatures pour les personnes mortes du jour si elles sont sur Wikidata. Optionnellement une autre date
    #format date : YYYY-MM-DD
    # (ou n’importe quel format valide pour xsd:dateTime)
    if [ -z "1ドル" ]; then
     date=$(date -I)
    else
     date=1ドル
    fi
    on_term_display="$(command -v viu)" 
    if [ -z "$on_term_display" ] ; then
     on_term_display=echo
    fi
    query="#title:Personnes mortes le $(date --date="${date}" +%x )
    select ?personne 
     (str(?personneLabel) as ?nom) 
     ?image 
     (concat(str(year(?naissance)),'-',str(year('${date}'^^xsd:dateTime))) as ?dates) 
     (group_concat(?prenomLabel;separator=' ') as ?prenoms) 
     (group_concat(?nomFamilleLabel;separator=' ') as ?noms) {
     ?personne wdt:P570 '${date}'^^xsd:dateTime . 
     SERVICE wikibase:label { 
     bd:serviceParam wikibase:language '[AUTO_LANGUAGE],en'. 
     ?personne rdfs:label ?personneLabel.
     ?prenom rdfs:label ?prenomLabel .
     ?nomFamille rdfs:label ?nomFamilleLabel .
     } . 
     optional { ?personne wdt:P18 ?imageT . } 
     optional { ?personne wdt:P569 ?naissance . }
     optional { ?personne wdt:P735 ?prenom . }
     optional { ?personne wdt:P734 ?nomFamille . }
     bind(coalesce(?imageT,'none') as ?image )
    } group by ?personne ?image ?imageT ?nom ?dates ?personneLabel ?naissance"
    function urlencode() {
     # urlencode <string>
     old_lc_collate=$LC_COLLATE
     LC_COLLATE=C
     local length="${#1}"
     for (( i = 0; i < length; i++ )); do
     local c="${1:$i:1}"
     case $c in
     [a-zA-Z0-9.~_-]) printf '%s' "$c" ;;
     *) printf '%%%02X' "'$c" ;;
     esac
     done
     LC_COLLATE=$old_lc_collate
    }
    curl -H"Accept: text/tab-separated-values" -G https://query.wikidata.org/sparql --data-urlencode query="$query" | tail -n +2 | while IFS=$'\t' read -r -a results ; do
     item=${results[0]}
     nom="${results[1]:1:-1}"
     url_bronso="${results[2]}"
     dates="${results[3]:1:-1}"
     prenomLabel="${results[4]:1:-1}"
     nomLabel="${results[5]:1:-1}"
     echo -e "Bronso du jour : ${prenomLabel}${nomLabel}${nom} (${date}) \n url: ${item}" ; 
     if [ "$url_bronso" != '"none"' ] ; then
     image="${url_bronso:1:-1}" ;
     wget "$image" -O "${nom}.img" &>/dev/null;
     img2txt -f svg "${nom}.img" > "${nom}.svg";
     nom_sortie="${nom}-${date}.png" 
     convert "${nom}.svg" "${nom_sortie}";
     echo "image: 'file://$(pwd)/${nom_sortie// /\%20}'"
     "${on_term_display}" "${nom_sortie}"
     fi ;
    done
    echo ""
    echo "liste complète : <https://query.wikidata.org/embed.html#$(urlencode "${query}")>"