diff --git a/content/contenu_jsonl.html b/content/contenu_jsonl.html new file mode 100644 index 0000000..732ad32 --- /dev/null +++ b/content/contenu_jsonl.html @@ -0,0 +1,101 @@ +[(#REM) + affichage en boucle DATA des premières et dernières lignes des fichiers JSONL stockés dans un répertoire corpus + on fait tout un tas de traitements en fonction du type de donnée par champ pour essayer d'afficher qq chose de "lisible par un humain" + +] +

Extraction des contenus d'un lot de fichiers JSONL

+

Chargement des fichiers Jsonl après leur décompaction et récupération de "contenus significatifs" +
Nombre de lignes configuré par le "pas" de l'itération dans les pages : ici #CONFIG{corpus_web/pas_corpus, 10} (1 = toutes les pages, 10 = 1 page sur 10...) +
pour mémoire : 1 ligne du fichier JSONL = 1 page HTML du site aspiré/archivé +

+
+ +
+ + + + \ No newline at end of file diff --git a/content/explo_jsonl.html b/content/explo_jsonl.html index d602457..9d1f0f0 100644 --- a/content/explo_jsonl.html +++ b/content/explo_jsonl.html @@ -3,8 +3,9 @@ on fait tout un tas de traitements en fonction du type de donnée par champ pour essayer d'afficher qq chose de "lisible par un humain" ] -

Contenus d'un lot de fichiers JSONL

-

Chargement des fichiers Jsonl après leur décompaction et affichage du contenu de toutes leurs lignes +

Exploration des contenus d'un lot de fichiers JSONL

+

Chargement des fichiers Jsonl après leur décompaction et affichage du contenu des lignes +
Nombre de lignes configuré par le "pas" de l'itération dans les pages : ici #CONFIG{corpus_web/pas_corpus, 10} (1 = toutes les pages, 10 = 1 page sur 10...)
pour mémoire : 1 ligne du fichier JSONL = 1 page HTML du site aspiré/archivé

@@ -20,7 +21,7 @@ [(#REM) {liste #GET{liste_lignes}} ] - + [(#SET{num_ligne,[(#COMPTEUR_BOUCLE|=={1}|?{1,#GET{nb_lignes}})]})]

Page #VALEUR :

@@ -45,7 +46,7 @@
  • Titraille :
    -
  • + ] [(#CLE|=={htmlBytes}|non)
  • diff --git a/content/synthese_jsonl.html b/content/synthese_jsonl.html new file mode 100644 index 0000000..a4dea99 --- /dev/null +++ b/content/synthese_jsonl.html @@ -0,0 +1,54 @@ +[(#REM) + affichage en boucle DATA des premières et dernières lignes des fichiers JSONL stockés dans un répertoire corpus + on fait tout un tas de traitements en fonction du type de donnée par champ pour essayer d'afficher qq chose de "lisible par un humain" + +] +

    Synthèse des contenus extraits d'un lot de fichiers JSONL

    +

    Chargement des fichiers Jsonl après leur décompaction et récupération de "contenus significatifs" puis mise en tableau pour filtrages/tris/extractions CSV +
    Nombre de lignes configuré par le "pas" de l'itération dans les pages : ici #CONFIG{corpus_web/pas_corpus, 10} (1 = toutes les pages, 10 = 1 page sur 10...) +
    pour mémoire : 1 ligne du fichier JSONL = 1 page HTML du site aspiré/archivé +

    +
  • +
    + +
    + + + + \ No newline at end of file diff --git a/corpus_web_fonctions.php b/corpus_web_fonctions.php index 3d2a385..de2b8d3 100644 --- a/corpus_web_fonctions.php +++ b/corpus_web_fonctions.php @@ -145,7 +145,6 @@ function affiche_titraille($html) { $titraille[] = ''.$m[2].''; } } - } return join("\r\n", $titraille); @@ -165,4 +164,31 @@ function human_filesize($bytes, $decimals = 2) { $sz = 'BKMGTP'; $factor = floor((strlen($bytes) - 1) / 3); return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor]; +} + +function recup_titres($html) { + // regexp : class="(titre|field-content) + // class="(titre|field-content)">(<[^>]*>)?([^<>]*) + $titres = []; + $html = str_replace(['',''], '', $html); + preg_match_all('/class="(titre|field-content|nodeTitle nobreak)">(<[^>]*>)?([^<>]*)/si', $html, $match, PREG_SET_ORDER); + if ($match) { + foreach($match as $m) { + if ($m[3] !== '') { + $titres[] = $m[3]; + } + } + } + + return count($titres) ? "" : ''; +} + +function recup_site($nom_fichier_jsonl) { + return explode('_', $nom_fichier_jsonl)[0]; +} + +function recup_aspi($nom_fichier_jsonl) { + $T = explode('_', $nom_fichier_jsonl)[1]; + $T = explode('-', $T); + return $T[0].'-'.$T[1].'-'.$T[2]; } \ No newline at end of file diff --git a/formulaires/configurer_corpus_web.html b/formulaires/configurer_corpus_web.html index 94c4e20..1307e6c 100644 --- a/formulaires/configurer_corpus_web.html +++ b/formulaires/configurer_corpus_web.html @@ -13,6 +13,7 @@ Configuration traitement JSONL #SAISIE{input, repertoire_apercu, label=repertoire_apercu, explication=nom du répertoire des fichiers JSONL pour l'aperçu (dans tmp/) } #SAISIE{input, repertoire_corpus, label=repertoire_corpus, explication=nom du répertoire des fichiers JSONL pour le corpus (dans tmp/) } + #SAISIE{input, pas_corpus, label=pas_corpus, explication=pour le corpus "pas" de l'itération dans les pages
    (1 = toutes les pages, 10 = 1 page sur 10) } #SAISIE{input, taille_max, label=taille_max, explication=taille maximum des fichiers à traiter (en Mo) } diff --git a/json_affiche_corpus.json.html b/json_affiche_corpus.json.html new file mode 100644 index 0000000..06f97e4 --- /dev/null +++ b/json_affiche_corpus.json.html @@ -0,0 +1,77 @@ +#HTTP_HEADER{Content-Type: application/json; charset=#CHARSET} +[(#ENV{id}|setenv{id_jsonl})] +[{ + "header":{ + "id": "id jsonl", + "site": "Site", + "date_aspi": "Date archive", + "num_page": "Numéro page", + "title": "Meta title", + "desc": "Meta description", + "keywords": "Meta keywords", + "titres": "titres", + "text": "Texte" + }, + "filtreCol" : { + "site" : "select", + "date_aspi": "select", + "num_page": "input", + "title": "input", + "desc": "input", + "keywords": "input", + "titres": "input", + "text": "input" + }, + "classes":{ + } +} #SET{id_jsonl,1} + + [(#SET{site,#FILE|basename|recup_site})] [(#SET{date_aspi,#FILE|basename|recup_aspi})] + #SET{liste_lignes,#LISTE{1}} #SET{trop_gros,#CONFIG{corpus_web/taille_max}|mult{1000000}} + #SET{nb_lignes, #FILE|nombre_ligne} [(#GET{nb_lignes}|!={1}|oui) #SET{liste_lignes,#LISTE{1,#GET{nb_lignes}}}] + + [(#SET{num_ligne,[(#COMPTEUR_BOUCLE|=={1}|?{1,#GET{nb_lignes}})]})] + [(#SET{content,[(#FILE|affiche_ligne{#GET{num_ligne}}|json_decode{true})]})] + #SET{num_page,Page #VALEUR} #SET{title,''} #SET{keywords,''} #SET{description,''} #SET{titres,''} + + [(#CLE|=={extractionContent}|oui) + + [(#CLE|=={boilerpipe:text}|oui) [(#SET{text, text: [(#VALEUR|print|replace{
    ,§§}|replace{
    ,§§}|replace{<,<}|replace{>,>}|replace{§§,
    }|replace{"\n",
    })]})] ] + [(#CLE|=={htmlmeta:head:title}|oui) [(#SET{title, title: [(#VALEUR|print|replace{
    ,§§}|replace{
    ,§§}|replace{<,<}|replace{>,>}|replace{§§,
    }|replace{"\n",
    })]})] ] + [(#CLE|=={htmlmeta:head:keywords}|oui) [(#SET{keywords, keywords: [(#VALEUR|print|replace{
    ,§§}|replace{
    ,§§}|replace{<,<}|replace{>,>}|replace{§§,
    }|replace{"\n",
    })]})] ] + [(#CLE|=={htmlmeta:head:description}|oui) [(#SET{description, desc: [(#VALEUR|print|replace{
    ,§§}|replace{
    ,§§}|replace{<,<}|replace{>,>}|replace{§§,
    }|replace{"\n",
    })]})] ] + + ][(#CLE|=={htmlBytes}|oui) + [(#SET{titres, [(#VALEUR|base64_decode|recup_titres)]})] + ] + + ,{ + "html": { + "id": [(#GET{id_jsonl})], + "site" : [(#GET{site}|json_encode)], + "date_aspi": [(#GET{date_aspi}|json_encode)], + "num_page": [(#GET{num_page}|json_encode)], + "title": [(#GET{title}|json_encode)], + "desc": [(#GET{description}|json_encode)], + "keywords": [(#GET{keywords}|json_encode)], + "titres": [(#GET{titres}|json_encode)], + "text": [(#GET{text}|json_encode)] + }, + "classes": { + "titre":"transcription" + }, + "search": { + "id": [(#GET{id_jsonl})], + "site" : [(#GET{site}|json_encode)], + "date_aspi": [(#GET{date_aspi}|json_encode)], + "num_page": [(#GET{num_page}|json_encode)], + "title": [(#GET{title}|json_encode)], + "desc": [(#GET{description}|json_encode)], + "keywords": [(#GET{keywords}|json_encode)], + "titres": [(#GET{titres}|json_encode)], + "text": [(#GET{text}|json_encode)] + } + } [(#SET{id_jsonl, #GET{id_jsonl}|plus{1}})] + + +]