115 lines
No EOL
4.2 KiB
HTML
115 lines
No EOL
4.2 KiB
HTML
[(#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"
|
|
|
|
]
|
|
<h1>Exploration des contenus d'un lot de fichiers JSONL</h1>
|
|
<p>Chargement des fichiers Jsonl après leur décompaction et affichage du contenu des lignes
|
|
<br>Nombre de lignes configuré par le "pas" de l'itération dans les pages : ici <strong>#CONFIG{corpus_web/pas_corpus, 10}</strong> (1 = toutes les pages, 10 = 1 page sur 10...)
|
|
<br><small>pour mémoire : 1 ligne du fichier JSONL = 1 page HTML du site aspiré/archivé</small>
|
|
</p>
|
|
<div class="la_une">
|
|
<ul>
|
|
<BOUCLE_corpus(DATA){source ls, #CHEMIN{tmp}/#CONFIG{corpus_web/repertoire_corpus,corpus_jsonl}/*}{par basename}>
|
|
<li>
|
|
#SET{liste_lignes,#LISTE{1}} #SET{trop_gros,#CONFIG{corpus_web/taille_max}|mult{1000000}} [(#REM) trop gros = 100Mo ]
|
|
#SET{nb_lignes, #FILE|nombre_ligne} [(#GET{nb_lignes}|!={1}|oui) #SET{liste_lignes,#LISTE{1,#GET{nb_lignes}}}]
|
|
<h3 class="spip[ (#SIZE|>{#GET{trop_gros}}|oui)non_traite]">
|
|
[(#FILE|basename)] : [(#GET{nb_lignes}) [(#GET{nb_lignes}|singulier_ou_pluriel{page,pages})]] <small>([(#SIZE|human_filesize)o])</small>
|
|
[ (#SIZE|>{#GET{trop_gros}}|oui)<div>fichier trop gros pour traitement basique</div>]
|
|
</h3>
|
|
[(#REM)
|
|
{liste #GET{liste_lignes}}
|
|
]
|
|
<BOUCLE_2lignes(DATA){enum 1, #GET{nb_lignes}, #CONFIG{corpus_web/pas_corpus, 10}}{si #SIZE|<{#GET{trop_gros}}}>
|
|
[(#SET{num_ligne,[(#COMPTEUR_BOUCLE|=={1}|?{1,#GET{nb_lignes}})]})]
|
|
<div>
|
|
<h4 class="aff_masq">Page #VALEUR :</h4>
|
|
<div class="details">
|
|
[(#SET{content,[(#FILE|affiche_ligne{#GET{num_ligne}}|json_decode{true})]})]
|
|
<ul>
|
|
<li>
|
|
<div class="aff_masq">Contenu brut :</div>
|
|
<textarea class="details">[(#FILE|affiche_ligne{#GET{num_ligne}})]</textarea>
|
|
</li>
|
|
<BOUCLE_content(DATA){source table, #GET{content}}>
|
|
[(#CLE|=={htmlBytes}|oui)
|
|
<li>
|
|
<div class=""><span class="aff_masq_">Title :</span> [(#VALEUR|base64_decode|affiche_title)]</div>
|
|
</li>
|
|
<li>
|
|
<div class="aff_masq">[(#CLE)] = HTML de la page : </div>
|
|
<div class="details">
|
|
<textarea class="details">[(#VALEUR|base64_decode|replace{<,<}|replace{>,>})]</textarea>
|
|
</div>
|
|
</li>
|
|
<li>
|
|
<div class="aff_masq">Titraille :</div>
|
|
<textarea class="details">[(#VALEUR|base64_decode|affiche_titraille)]</textarea>
|
|
</li>
|
|
]
|
|
[(#CLE|=={htmlBytes}|non)
|
|
<li>
|
|
<div class="aff_masq">[(#CLE)] : </div>
|
|
<div class="details">
|
|
<B_ss>
|
|
<ul>
|
|
<BOUCLE_ss(DATA){source table, #VALEUR}>
|
|
<li>
|
|
<div class="aff_masq_">[(#CLE)] : </div>
|
|
<div class="details_">
|
|
[(#CLE|=={htmlmeta:html:head}|oui)
|
|
<textarea class="details_">[(#VALEUR*|print|replace{<br />,§§}|replace{<,<}|replace{>,>}|replace{§§,<br>})]</textarea>
|
|
]
|
|
[(#CLE|=={htmlmeta:html:head}|non)
|
|
[(#VALEUR|print|replace{<br />,§§}|replace{<,<}|replace{>,>}|replace{§§,<br>})]
|
|
]
|
|
</div>
|
|
</li>
|
|
</BOUCLE_ss>
|
|
</ul>
|
|
</B_ss>
|
|
</div>
|
|
</li>
|
|
]
|
|
</BOUCLE_content>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</BOUCLE_2lignes>
|
|
</li>
|
|
</BOUCLE_corpus>
|
|
</ul>
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
jQuery(function () {
|
|
$('.aff_masq').each(function() {
|
|
$(this).siblings('.details').toggleClass('js-hidden');
|
|
});
|
|
|
|
$('.aff_masq').on('click', function() {
|
|
$(this).siblings('.details').toggleClass('js-hidden');
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<style type="text/css" media="screen">
|
|
.aff_masq, .aff_masq_ {
|
|
cursor: pointer;
|
|
font-weight: bold;
|
|
}
|
|
.aff_masq:hover {
|
|
background-color: #DDD;
|
|
}
|
|
.details br:first-of-type {
|
|
display: none;
|
|
}
|
|
textarea {
|
|
width: 100%;
|
|
height: 200px;
|
|
}
|
|
.non_traite {
|
|
color: #777;
|
|
}
|
|
</style> |