|
| [En cours] cronnab, le (web)crontab des pin:pins ! | |
|
+4Tabatha cho7 GrosBill Hunta_de_la_Radieuse 8 participants | Auteur | Message |
---|
Hunta_de_la_Radieuse Frénétik Nabaztrice
Age : 49 Localisation : Anse Lapin Nabaztag : Hunta (v2) Nbr de messages : 3832 Carottes : 6600
| Sujet: [En cours] cronnab, le (web)crontab des pin:pins ! Mar 6 Jan 2009 - 5:33 | |
| Hello vous ! En lisant les sujets "API" et associés (idées de développement, concrétisation - ou non-, limites et évolutions), on s'aperçoit assez vite que l'une des contraintes est la difficulté de lancer ses mignons petits scripts à intervalle régulier... Certaines solutions existent comme "crontab" - qui nécessite en général un hébergement assez haut de gamme - ou les différents avatars de "w3bcr0n" - plus ou moins payants, plus ou moins satisfaisants au dire de ceux qui savent, hein... Du coup, pourquoi pas des "nabcrons" ? Violet permet à nos lapins de diffuser, par exemple, les flux RSS de notre choix à heure fixe ?!Utilisons cette remarquable capacité de nos pin:pins ? Concrètement (et, oui, assez tard), cet odieux script PHP de boucher mécanisé - uniquement ici à titre de test mais qui permet néanmoins à ma Nabaztagette de me donner les noms des membres connectés sur le forum où nous nous sentons si bien, hein, n'est-ce pas ? Cet odieux script, donc, est est déguisé en RSS, le coquin, et reçoit du coup l'acceptation violetienne de diffusion. Le sacripand sera donc lancé à l'heure choisie ! Bingo ! Attention, c'est TRES sale ! - Code:
-
<?php
$site="http://www.example.com/"; $page_name="quiestsurleforum.php"; header('Content-type: application/rss+xml; charset=utf-8');
print ("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); print ("<rss version=\"2.0\"\n xmlns:atom=\"http://www.w3.org/2005/Atom\"\n xmlns:content=\"http://purl.org/rss/1.0/modules/content/\">\n
<channel>\n <language>fr-fr</language>\n <atom:link href='".$site.$page_name."' rel='self' type='application/rss+xml' /> <title>Qui est sur le forum</title>\n <description>Qui est sur le forum ?</description>\n <link>http://www.example.com/</link>\n");
//fonction get_token : http://www.ebrueggeman.com/blog/php/easily-parse-a-string/ function get_token($start_token, $end_token, $haystack, $offset = 1) { $start = stripos($haystack, $start_token, $offset); $end = stripos(substr($haystack, $start), $end_token); if ($start !== false && $end !== false) { $start_pos = $start + strlen($start_token); $end_pos = $end - strlen($start_token); return substr($haystack, $start_pos, $end_pos); } return false; }
$url = 'http://nabaztag.forumactif.fr/'; $str = file_get_contents($url); $title = get_token('<br />Utilisateurs enregistr', '<br />Moteurs', $str); //pour Mimi Cracra ! : $p = urlencode($title); $cleanTitle = ltrim($p,'%E9s+%3');
$veryCleanTitle = str_replace("A+", "", $cleanTitle);
$veryCleanTitle1 = str_replace("%3Ca+href%3D%22%2Fprofile.forum%3Fmode%3Dviewprofile%26amp%3Bu%3D", " ", $veryCleanTitle); $veryCleanTitle2 = str_replace("%22+rel%3D%22nofollow%22%3E", " : ", $veryCleanTitle1); //the modoz rule ? $veryCleanTitle3 = str_replace("%3C%2Fa%3E%2C+", ", ", $veryCleanTitle2); $veryCleanTitle4 = str_replace("%3C%2Fa%3E", ", ", $veryCleanTitle3); $veryCleanTitle5 = str_replace("%22style%3D%22color%3A%23006600%22+class%3D%22colormod : %3Cb%3E", " : ", $veryCleanTitle4); //the modoz rule ? //$veryCleanTitle51 = str_replace("4%22style%3D%22color%3A%23ffa34f%22+class%3D%22coloradmin%22++rel%3D%22nofollow%22%3E%3Cb%3E", " : ", $veryCleanTitle4); //THE admin rule $veryCleanTitle6 = str_replace("%3C%2Fb%3E", "", $veryCleanTitle5); $veryCleanTitle7 = str_replace("_", "+", $veryCleanTitle6); //the Hunta rule $veryCleanTitle71 = str_replace("%3A", "+", $veryCleanTitle7); //the ':' rule $veryCleanTitle72 = str_replace("%E9", "é", $veryCleanTitle71); //the 'é' rule $veryCleanTitle8 = str_replace("%22style%3D%22color+%23ffa34f%22+class%3D%22coloradmin%22++rel%3D%22nofollow%22%3E%3Cb%3E", " : ", $veryCleanTitle72);
$n = '0'; $members = ''; do { $newMember = get_token(': ', ',', $veryCleanTitle8, $offset); $members = $members . ',+' . $newMember; $digitsMember = get_token(', ', ':', $veryCleanTitle8, $offsetDigits); $d = strlen($digitsMember); $offsetDigits = $offsetDigits + $d; $n = strlen($newMember); $offset = $offset + $n + $d + 4; //+4 ??? } while ($n != '0');
file_get_contents("http://api.nabaztag.com/vl/FR/api.jsp?token=xxxxx&sn=yyyyy&voice=FR-Archibald&tts=Membres+actuellement+connectés+sur+le+forum" . $members, false); print ("</channel>\n</rss>\n"); ?> Errr... Disez-le, hein, si vous y voyez une patente, pantelante et/ou pathétique tentative de réinventer la roue... NB : Merci à macphisto pour le code de son flux RSS VDM ! EDIT : NB 2 : Le script ci-dessus est bien vu comme un vrai flux RSS par Violet et par l'outil de validation RSS de la W3C ! NB 3 : Le déguisement est scindé en deux : Première partie : - Code:
-
$site="http://www.example.com/"; $page_name="quiestsurleforum.php"; header('Content-type: application/rss+xml; charset=utf-8');
print ("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); print ("<rss version=\"2.0\"\n xmlns:atom=\"http://www.w3.org/2005/Atom\"\n xmlns:content=\"http://purl.org/rss/1.0/modules/content/\">\n
<channel>\n <language>fr-fr</language>\n <atom:link href='".$site.$page_name."' rel='self' type='application/rss+xml' /> <title>Qui est sur le forum</title>\n <description>Qui est sur le forum ?</description>\n <link>http://www.example.com/</link>\n"); Deuxième partie : - Code:
-
print ("</channel>\n</rss>\n");
Dernière édition par Hunta_de_la_Radieuse le Mar 6 Jan 2009 - 14:29, édité 2 fois | |
| | | GrosBill Gold Nabz
Localisation : Paris Nabaztag : Kikiztag Nbr de messages : 622 Carottes : 6896
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mar 6 Jan 2009 - 9:35 | |
| Ohoh mais c'est une idée géniale ca. le detournement de flux rss j'adore
Par contre pas evident a lire le script. La fonction strip_tags pourrait pas t'aider a faciliter le menage? | |
| | | cho7 Nabz Junior
Localisation : L'isle-Adam Nbr de messages : 74 Carottes : 5815
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mar 6 Jan 2009 - 10:19 | |
| J'ai une petite question...
Pour avoir déjà testé, le lapin ne dit rien je crois si le flux RSS qu'on lui demande de lire est mal construit.
Donc si au lieu de lui donner un flux RSS valide on lui donne directement l'adresse d'une page php qui n'a rien à voir avec du RSS mais qui lance la tâche qu'on veut, l'appli RSS va devoir l'ouvrir pour vérifier le contenu, et avant même qu'elle se rende compte qu'il est trop tard et que c'est pas du RSS, notre script php aura déjà appelé l'api du lapin, et c'est tout ce qu'on lui demande, non ?
Une idée comme ça, en passant (je suis pas à la maison pour tester !) | |
| | | Hunta_de_la_Radieuse Frénétik Nabaztrice
Age : 49 Localisation : Anse Lapin Nabaztag : Hunta (v2) Nbr de messages : 3832 Carottes : 6600
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mar 6 Jan 2009 - 14:19 | |
| -> GrosBill : Mer-ci-! Yep, j'avais prévenu : c'est du script de boucher, mais ça fait le job (et puis, ce n'est qu'un exemple hein... Mais, vi, un exemple propre, ça f'rait plus riche !)! D'accodac', investigations autour de "strip_tags" ! -> cho7 : Petite remarque vite fait le pseudo flux RSS ci-dessus est vu comme valide par Violet et l'outil de validation W3C ! Pour ce qui est de l'utilisation d'un script "normal" - non masqué -, au moment de l'inscription au service, Violet vérifie si le lien saisi est ou non du RSS... La solution que tu proposes ne devrait donc pas fonctionner... | |
| | | cho7 Nabz Junior
Localisation : L'isle-Adam Nbr de messages : 74 Carottes : 5815
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mar 6 Jan 2009 - 20:36 | |
| - Hunta_de_la_Radieuse a écrit:
- -> GrosBill : Mer-ci-! Yep, j'avais prévenu : c'est du script de boucher, mais ça fait le job (et puis, ce n'est qu'un exemple hein... Mais, vi, un exemple propre, ça f'rait plus riche !)!
D'accodac', investigations autour de "strip_tags" !
-> cho7 : Petite remarque vite fait le pseudo flux RSS ci-dessus est vu comme valide par Violet et l'outil de validation W3C !
Pour ce qui est de l'utilisation d'un script "normal" - non masqué -, au moment de l'inscription au service, Violet vérifie si le lien saisi est ou non du RSS... La solution que tu proposes ne devrait donc pas fonctionner... OK, mais n'est-ce pas plus simple à maintenir si tu stockais ce que tu veux dire (ici la liste des nouveaux membres) dans une variable plouf, puis d'appeler l'api du lapin avec tts=plouf, et de faire simplement des echo bidons dans le script (juste un channel et un item, sans pubDate) afin de penser, vu de l'extérieur, qu'il s'agit d'un fichier rss valide, mais qui sera jamais lu par le lapin à voix haute (il l'ouvrira, quand même, donc ca déclenchera la partie php), car comme la pubDate est toujours la même (voir inexistante), il ne verra pas de différence d'un appel à l'autre ? edit : bon, je viens de lire le code en détail, et je crois que j'ai dis une connerie, car c'est à peu près ce que tu fais Comme c'était verbeux, je pensais que tu regénérais tout le contenu en RSS... Ca m'apprendra à lire en diagonal.. | |
| | | Hunta_de_la_Radieuse Frénétik Nabaztrice
Age : 49 Localisation : Anse Lapin Nabaztag : Hunta (v2) Nbr de messages : 3832 Carottes : 6600
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mar 6 Jan 2009 - 20:52 | |
| Sisisi, tu as tout à fait raison ! Mais, déjà, j'débute et n'y avais point pensé... Et :Là, c'est juste le script sur lequel j'ai, hop !, comme ça, testé eul bôzaère... Mais, à éditer asesouneasepossibol... L'idéal serait aussi que le script lui-même soit un peu propre... | |
| | | cho7 Nabz Junior
Localisation : L'isle-Adam Nbr de messages : 74 Carottes : 5815
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mar 6 Jan 2009 - 21:06 | |
| - Hunta_de_la_Radieuse a écrit:
- Sisisi, tu as tout à fait raison ! Mais, déjà, j'débute et n'y avais point pensé... Et :
Là, c'est juste le script sur lequel j'ai, hop !, comme ça, testé eul bôzaère... Mais, à éditer asesouneasepossibol...
L'idéal serait aussi que le script lui-même soit un peu propre... lol, alors sur ce point je peux t'aiguiller Je t'invite à te documenter sur les expressions régulières (ou rationnelles, c'est pareil), aussi connues sous le nom de regexp (regular expressions) en anglais. Tu diviseras la taille de ton code par 10 | |
| | | Tabatha il est cap' !!!
Localisation : Plat Pays Nabaztag : Tabatha (V1) & Traci (V2) Nbr de messages : 3718 Carottes : 6967
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mar 6 Jan 2009 - 21:59 | |
| C'est une idee E.X.C.E.L.L.E.N.T.E !
Congrat's Hunta !!!!! | |
| | | cho7 Nabz Junior
Localisation : L'isle-Adam Nbr de messages : 74 Carottes : 5815
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mer 7 Jan 2009 - 0:58 | |
| Bon, il est tard je vais au lit. Je me suis remis au php (désolé je préfère python ou java !) pour toi Hunta Voici ton script revu et corrigé par mes soins à base d'expressions rationnelles. Les regexp sont disponibles dans tout bon langage qui se respecte on peut le tester ici : http://lienardr.free.fr/rss.php et le script est celui-ci : - Code:
-
<rss version="2.0"> <channel> <language>fr-fr</language> <title>Qui est sur le forum</title> <description>Qui est sur le forum ?</description> <link>http://www.example.com/</link> <? $fic = fopen("http://nabaztag.forumactif.fr/forum.htm","r"); while (!feof($fic)) { $contenu .= fgets($fic, 4096); } fclose($fic);
preg_match_all('/<br \/>Utilisateurs enregistr.s : (.+?)<br \/>/',$contenu,$tab); preg_match_all('|<a .+?>(<b>)?(.+?)(</b>)?</a>|',$tab[1][0],$utilisateurs);
for ($i=0;$i<count($utilisateurs[0]);$i++){ echo "<item><title>".$utilisateurs[2][$i]."</title></item>\n"; } ?> </channel> </rss>
Tadam ! Allez, sur ces belles paroles : bonne nuit tout le monde ! | |
| | | Phabbrrysse Nabazteur Voyageur
Age : 38 Localisation : Sassenage Nabaztag : PhormiBBrrysse et Pharramyneu (V2) Nbr de messages : 14389 Carottes : 13332
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mer 7 Jan 2009 - 1:19 | |
| Ah ouais ... du coup c'est beaucoup plus .... court _____________________________ Connexion du lapin difficile : ICI -- PAS D'AIDE PAR MP NI PAR MAIL | |
| | | Hunta_de_la_Radieuse Frénétik Nabaztrice
Age : 49 Localisation : Anse Lapin Nabaztag : Hunta (v2) Nbr de messages : 3832 Carottes : 6600
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mer 7 Jan 2009 - 1:25 | |
| C'est même très impressionnant... Pour quelque chose de si court !Les "regexp" ont la réputation d'être ardues, mais, elles ont l'air d'en valoir la peine ! J'essaie de comprendre et d'adapter - pas gagné - au but initial du script (histoire, que, tout de même, il y ait un lien avec les pin:pins) et je mets à jour le premier message ! Mille mercis cho7 ! Belle belle démo. | |
| | | cho7 Nabz Junior
Localisation : L'isle-Adam Nbr de messages : 74 Carottes : 5815
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mer 7 Jan 2009 - 7:40 | |
| - Hunta_de_la_Radieuse a écrit:
C'est même très impressionnant... Pour quelque chose de si court !
Les "regexp" ont la réputation d'être ardues, mais, elles ont l'air d'en valoir la peine !
J'essaie de comprendre et d'adapter - pas gagné - au but initial du script (histoire, que, tout de même, il y ait un lien avec les pin:pins) et je mets à jour le premier message !
Mille mercis cho7 ! Belle belle démo. Oui, ça en vaut la peine, d'autant que ça sert beaucoup au quotidien si tu dois développer des utilitaires, ou utiliser des commandes unix/linux telles que grep, sed ou vim. Je ne suis plus développeur officiellement, mais dans le cadre de mon boulot je m'en sers beaucoup beaucoup Pour info, il y a deux grande syntaxes de regexp qui sont très proches mais pas pareils (!), celles dites POSIX (dont les limites sont vite atteintes je trouve, mais qu'on trouve de base dans beaucoup de commandes unix), et celle dites PERL (en référence au langage du même nom, même si dispo dans tout plein de langage comme python, java, ou php pour les fonction preg_*) qui permettent d'écrire des expressions régulières plus précises, et du coup moins longues. Si t'as des questions sur le sujet n'hésite pas | |
| | | cho7 Nabz Junior
Localisation : L'isle-Adam Nbr de messages : 74 Carottes : 5815
| | | | nabazland Karotzeur taquin
Age : 57 Localisation : Rouen - France Nabaztag : Caulfield (v2.1) Nbr de messages : 9783 Carottes : 13348
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mer 7 Jan 2009 - 10:21 | |
| Ca fait des années que je me dis que je devrais me mettre sèrieusement aux regexp, mais le peu de fois ou je m'y suis collé... Je suis bien incapable quelques mois après de comprendre ce que j'ai fait ! Et en gros, comme j'avais à dispo un dieu de la regexp... Je lui demandais de m'la faire... Et quand je dis un dieu... vraiment c'en était un ! Il parlait regexp couramment. _____________________________
| |
| | | FlorentBL Bronze Nabz
Age : 54 Localisation : Paris Nbr de messages : 117 Carottes : 5879
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Jeu 8 Jan 2009 - 13:46 | |
| | |
| | | Diaoul Bronze Nabz
Age : 37 Localisation : France Nabaztag : Patapwet Nbr de messages : 221 Carottes : 6057
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! Mar 3 Fév 2009 - 20:20 | |
| Les regexp c'est bien mais si t'as une structure XML ou XHTML, je préfère utiliser le DOM. Une fois qu'on en a fait une bonne dizaine, on est un dieu de la regex J'ai fait une classe php pour éditer un .odt (open office writer) et crée un document complet depuis un template (fait en .odt) J'ai bouffé de la regexp, he bien maintenant, ça me fait plus peur Avec du recul, le DOM aurait été plus utile, puisqu'un .odt c'est jamais qu'un .zip avec plein de .xml dedans L'idée est pas mal mais le fait de tout mettre dans un RSS c'est pas forcément judicieux. Je suis propriétaire de Chez Patapwet et je peux donc faire un peu de CRON (héhé ) Je pensais depuis longtemps créer un planificateur des taches pour les utilisateurs. Mon souci ? Le temps ^^ Je cherche des développeurs pour m'aider dans mon projet. J'ai plein de boulot pour eux. J'aimerai vraiment que tous les développeurs centralisent leurs efforts On serait plus efficace :o Si ça tente quelqu'un, je contactez moi par mp | |
| | | Contenu sponsorisé
| Sujet: Re: [En cours] cronnab, le (web)crontab des pin:pins ! | |
| |
| | | | [En cours] cronnab, le (web)crontab des pin:pins ! | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |