03/02/2022, 18:53
(This post was last modified: 03/02/2022, 18:54 by Amand.)
Première analyse du script :
- Le lien de la VDM à changé, le numéro ne se récupère plus dans la page mais dans le lien : https://www.viedemerde.fr/article/desire...70945.html
il faut adapter la ligne :
tcl foreach {dummy id vdm} [regexp -all -inline {<div class="article-contents">(?:.*?)<a class="article-link" href="(?:.*?)_(\d+).html">(.*?)<\/a>\n<div class="vote-button-container">} $data] {
avec le bon lien et corriger les regexp pour capturer les bonnes informations, en l'occurrence la VDM.
Je note ça ici, quand j'aurais du temps, je ferais des tests.
03/02/2022, 19:04
(This post was last modified: 03/02/2022, 19:10 by MenzAgitat.)
Par contre pour rechercher une vdm à partir de son numéro, ça va être une autre histoire vu que l'url ne contient pas seulement le numéro de la vdm mais aussi un texte variable
On va réfléchir à une éventuelle solution mais on risque de perdre la fonction recherche pour ne plus avoir que la fonction vdm aléatoire.
Edit : solution trouvée, si on utilise l'url https://www.viedemerde.fr/recherche/370945 on tombe sur la bonne quote
Toute l'actualité de mes scripts ici (dernière mise à jour le 22/04/2020)
Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
03/02/2022, 19:11
(This post was last modified: 03/02/2022, 19:12 by Amand.)
En examinant le html du site :
Code: <a href="/article/the-hole_368320.html" class="block text-blue-500 my-4 ">
Aujourd'hui, je dois appeler mon responsable car je ne peux pas venir au bureau. La raison ? Rien de grave, je vous rassure. J’ai juste dormi chez une amie à 4 km du bureau et elle est partie très tôt en fermant la porte, en me laissant une mauvaise clé pour sortir. Je dois attendre qu’elle rentre… ce soir. VDM
</a>
Tu peux récupérer le numéro dans la balise href , il est toujours séparer d'un _ et avant le .html
03/02/2022, 19:21
(This post was last modified: 04/02/2022, 00:31 by MenzAgitat.)
je pense qu'il faut juste se caler sur le <a href="/article/ pour repérer la bonne partie et capturer jusqu'au </a>
Et dans ce qui est capturé, récupérer le n° de la vdm qui est dedans et la vdm elle-même.
Edit : chaîne de regexp à utiliser : {<a href="/article/.+?(\d+)\.html.+>(.+)</a>}
Quote:[19:06:20] <MenzAgitat> .tcl regexp -inline {<a href="/article/.+?(\d+)\.html.+>(.+)</a>} "<a href=\"/article/the-hole_368320.html\" class=\"block text-blue-500 my-4 \"> blablabla. VDM </a>"
[19:06:20] <Boole> Tcl: {<a href="/article/the-hole_368320.html" class="block text-blue-500 my-4 "> blablabla. VDM </a>} 368320 { blablabla. VDM }
tcl regexp {<a href="/article/.+?(\d+)\.html.+>(.+)</a>} $VariableContenantLeHtmlDeLaPage {} VariableQuiContiendraLeN° VariableQuiContiendraLaVDM
Le {} correspond à "aucune variable assignée au 1er retour de la regexp" (en rouge), qui correspond à l'ensemble de ce qui a matché et dont on n'a rien à faire.
En vert, les informations qui nous intéressent et qui vont peupler les 2 variables $VariableQuiContiendraLeN° et $VariableQuiContiendraLaVDM vont contenir les infos qu'on veut.
Toute l'actualité de mes scripts ici (dernière mise à jour le 22/04/2020)
Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
03/02/2022, 22:06
(This post was last modified: 03/02/2022, 22:07 by pheeric.)
Coucou
Je pense que le plus intéressant et le plus "marrant" pour les utilisateurs, est le résultat quand on tape le !vdm sur un salon..
Le retour étant :
Aujourd'hui, partie de cache-cache avec mes enfants. Après avoir compté, ma fille de 6 ans sort : "Bon, il est où ce connard ?" Le connard en question est vite sorti de sa cachette. VDM
bonne soirée 
Quand on a la connaissance, ne pas la partager ne peux faire avancer la communauté !
03/02/2022, 22:36
(This post was last modified: 04/02/2022, 03:49 by Amand.)
J'ai pu corriger 2/3 commandes avec MenzAgitat :
- !vdm = OK
- !vdm last = OK
- !vdm <num> = PAS OK
En se basant sur le site https://www.viedemerde.fr/ , on a modifié les regexp pour que le script match les bonnes informations dans les bonnes balises :
Tout d'abord, changer les valeurs des variables contenant les liens du site :
tcl # URL pour récupérer une seule VDM.
variable url_une "https://www.viedemerde.fr/recherche/%s"
# URL de la recherche.
variable url_recherche "https://www.viedemerde.fr/recherche/%s"
Ensuite,
tcl putlog [regexp -all -inline {<a href="/article/.+?(\d+)\.html.+>(.+)</a>} $data]
if {$type eq "many"} {
foreach {dummy id vdm} [regexp -all -inline {<a href="/article/.+?(\d+)\.html.+>(.+)</a>} $data] {
lappend vdm_list [list $id [::vdm::string_filter $vdm]]
}
} else {
foreach {dummy vdm} [regexp -all -inline {<a href="/article/.+?(\d+)\.html.+>(.+)</a>} $data] {
lappend vdm_list [list [::vdm::string_filter $vdm]]
}
}
On a ajouté un putlog pour voir ce que match le bot.
- Pour la commande !vdm ça retourne en partyline :
Quote:[21:12:02] {<a href="/article/aujourd-hui-aujourd-39-hui-une-copine-qui-vient-de-gagner-son-poids-en-chocolat-me-propose-de-pren_308099.html" class="block text-blue-500 my-4 ">
Aujourd'hui, une copine qui vient de gagner son poids en chocolat me propose de prendre sa place. Pour en obtenir beaucoup plus. VDM
</a>} 308099 {
Aujourd'hui, une copine qui vient de gagner son poids en chocolat me propose de prendre sa place. Pour en obtenir beaucoup plus. VDM
} {<a href="/article/aujourd-hui-suivi-de-g
Le bot retourne bien le numéro de la vdm et la vdm, sans problème :
Quote:n°308099 Aujourd'hui, une copine qui vient de gagner son poids en chocolat me propose de prendre sa place. Pour en obtenir beaucoup plus. VDM
- Pour la commande !vdm last ça retourne en partyline :
Quote:[21:17:34] {<a href="/article/connard_371086.html">Connard !</a>
</h2>
<div class="flex justify-between">
<p class="text-blue-300 text-sm mt-2">
Par Anonyme <i class="fa fa-male" aria-hidden="true"></i> - 03/02/2022 20:01
</p>
</div>
</div>
</div>
<a href="/article/connard_371086.html" class="block text-blue-500 my-4 ">
Aujourd'hui, partie de cache-cache avec mes enfants. Après avoir compté, ma fille de 6 ans sort : "Bon, il est où ce connard ?" Le connard en question est vite sorti de sa
Le bot retourne bien la dernière vdm avec son bon numéro :
Quote:n°371086 Aujourd'hui, partie de cache-cache avec mes enfants. Après avoir compté, ma fille de 6 ans sort : "Bon, il est où ce connard ?" Le connard en question est vite sorti de sa cachette. VDM
On arrive donc au problème de la commande !vdm <num> qui se base sur la page https://www.viedemerde.fr/recherche/312308
Si on prend pour exemple !vdm 312308 , le bot retourne en partyline :
Quote:[21:09:44] {<a href="/article/l-occasion-ideale_312308.html">L'occasion idéale</a>
</h2>
<div class="flex justify-between">
<p class="text-blue-300 text-sm mt-2">
Par pepy77 <i class="fa fa-male" aria-hidden="true"></i> - 17/07/2019 21:00
</p>
</div>
</div>
<img class="h-12 ml-4 mb-0 block" src="/images/v2/picto/epice.png" alt="Épicée" />
</div>
<a href="/article/l-occasion-ideale_312308.html" class="block text-blue-500 my-4 spicy-hidden">
Aujourd'hui, moment câlin avec mon mari, grand fan du
sur IRC :
Quote:n°312308 312308
Il me retourne le numéro au lieu de la VDM alors que la structure du code html est identique aux autres.
J'écris ça pour que ça me serve de note, c'est la première fois que j'utilise ce script et je fais ça pour rendre service à la communauté.
03/02/2022, 23:22
Quand on a la connaissance, ne pas la partager ne peux faire avancer la communauté !
Bonjour a tous,
des news si quelqu'un a avancé sur le tcl de VDM.
merci beaucoup
Quand on a la connaissance, ne pas la partager ne peux faire avancer la communauté !
Non je n'ai pas eu le temps de continuer le script ( surtout que je ne l'utilise pas donc l'envie n'est pas très présente ) mais j'ai quand même fourni une bonne base de travail.
Essayer de poursuivre le script, j'ai mis des notes assez clair , avec un tout petit peu de volonté, ça devrait le faire :)
Je suis présente pour apporter mon aide, si tu rencontres un problème ou si tu as besoin d'un éclaircissement.
|