Quentin Lamouroux - Typoem

De Design numérique
(Redirigé depuis Typoem)
Aller à : navigation, rechercher

Le projet

Typoem = typography + poem. Terme inventé par Hansjorg Mayer, considéré comme un représentant important de la poésie concrète et expérimentale.

Typoem est la première expérimentation, réalisée à partir du langage Linux (terminal), d'un programme qui génère de manière aléatoire des poèmes constitués à partir d'une base de donnée (de mots) connectée à une messagerie personnelle telle que Messenger.

Cette première entrée en matière part d'une fonction proposée par Facebook qui permet de télécharger l'ensemble de ses données (messages, posts, likes, etc) au format .json. Je m'intéresse ici au data messenger et aux messages envoyés et reçus.


Le processus

Étape 1 Étape 2 Étape 3 Étape 4 Étape 5


Première étape: cette étape consiste a comprendre la structure du fichier json et de le nettoyer grâce aux fonctions du terminal. La fonction "cat monfichier.json" permet de charger le fichier et d'afficher son contenu.

Deuxième étape: j'utilise la fonction "grep content monfichier.json > monfichier2.json" pour que le terminal affiche seulement les lignes contenant "content" qui est la balise qui contient les messages envoyés. Puis j'exporte ce nouveau contenu dans un nouveau fichier .json.

Troisième étape: j'utilise la fonction cat monfichier2.json | tr " " "\n" | tr [:upper:] [:lower:] | sort | uniq > monfichier3.json qui va trier le fichier en mettant les mots par ordre alphabétique, en le mettant à la ligne, en supprimant les doublons, et mettant tous les mots en bas de casse.

Quatrième étape: j'utilise la fonction tr -s '"' < monfichier3.json > monfichier4.json pour supprimer la ponctuation '""' qui fait parti de la structure du fichier .json de base et qui pourrait brouiller la lisibilité des poèmes.

Cinquième étape: j'utilise la fonction cat monfichier4.json | tr " " "\n" | uniq | gshuf | tr "\n" " " | cut -c-3000 > monfichier5.json pour générer un texte de 3000 lettres en combinant les mots aléatoirement (issus du fichier monfichier4.json), et l'exporte dans un nouveau fichier monfichier5.json. Shuf (ou gshuf pour les macs) remélange aléatoirement la liste des mots, cut coupe le texte après 3000 lettres.


Document

Typoem doc1.png Typoem doc2.png Typoem doc3.png


Le processus est appliqué à 3 conversations différentes. Chaque étape de l'expérimentation est archivée sur une page html [en local sur ma machine] faisant appel au langage php pour charger les fichiers .json générés avec le terminal. De cette manière je tente d'une part de montrer un aperçu global du chantier, de respecter l'esthétique brute des fichiers .json originaux et du language Linux; et d'autre part de constituer une preuve ou un témoignage de ce qui a été entrepris de faire.

Une des problématiques rencontrées a été de traduire le langage Unicode des fichiers .json [qui n'a pas été une mince affaire]. Je pose ici le code qui a été utilisé pour traduire les caractères Unicode via php :


<?php
function fixBadUnicodeForJson($str) {
    $str = preg_replace_callback(
    '/\\\\u00([0-9a-f]{2})\\\\u00([0-9a-f]{2})\\\\u00([0-9a-f]{2})\\\\u00([0-9a-f]{2})/',
    function($matches) { return chr(hexdec("$1")).chr(hexdec("$2")).chr(hexdec("$3")).chr(hexdec("$4")); },
    $str
);
    $str = preg_replace_callback(
    '/\\\\u00([0-9a-f]{2})\\\\u00([0-9a-f]{2})\\\\u00([0-9a-f]{2})/',
    function($matches) { return chr(hexdec("$1")).chr(hexdec("$2")).chr(hexdec("$3")); },
    $str
);
    $str = preg_replace_callback(
    '/\\\\u00([0-9a-f]{2})\\\\u00([0-9a-f]{2})/',
    function($matches) { return chr(hexdec("$1")).chr(hexdec("$2")); },
    $str
);
    $str = preg_replace_callback(
    '/\\\\u00([0-9a-f]{2})/',
    function($matches) { return chr(hexdec("$1")); },
    $str
);
    return $str;
}

function textConverter($str){
    $str =  utf8_decode(fixBadUnicodeForJson($str));  
    return $str;
}

?>



<!DOCTYPE html>
<html>
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Typoem</title>
   
    </head>
    
    <body>
        
        <div id="div4">
            
            <?php

                error_reporting(E_ALL);
                ini_set('display_errors', 1);

                $json = file_get_contents("src/estelle/estelle.json");
    
                $json_data = json_decode($json);

                foreach($json_data->messages as $message){
                if($message->sender_name == 'Quentin Lamouroux'){
                echo '<div>'.textConverter($message->content).'</div>';
                }
    
                }

            ?>
         
        </div>

    </body>
    
</html>