Cpasbien au format RSS

Je vous ai concocté un petit script PHP dont l’objet est de réaliser un fil RSS à partir des pages de résultats de la recherche à partir du tracker Torrent Cpasbien. La disparition de KickAss nous laisse quelque peu orphelins !

Cpasbien au format RSS

Les SERP du tracker Torrent Cpasbien au format RSS

Le script s’appuie principalement sur les expressions régulières et la fonction preg_match_all ainsi que sur la syntaxe heredoc du PHP. Il s’agit d’une méthode de scrapping assez rustique. Sans doute, reste-il à perfectionner. Je pense notamment à l’utilisation de Curl au cas où le tracker Cpasbien se mette au SSL. Ce sera pour une v2. L’exécution de ce code est hélas dépendant de la syntaxe HTML utilisée dans la page.

Le script est également sur Pastebin.

<?php
/*
Author : Denis Szalkowski Copyright (C) https://www.dsfc.net
Licence : GNU General Public Licence 3.0

L'objet de ce code est, par scrapping, en utilisant les expressions régulières,
de constituer un flux RSS  à partir de la page de résultats du tracker http:// cpasbien.cm.

Après l'avoir copié sur un serveur Apache ou Nginx exécutant PHP, 
il s'utilise de la façon suivante :

http://adresse_ip_de_votre_serveur/cpasbien.php?categorie=films

Le paramètre categorie de l'URL peut prendre, entre autres, les valeurs suivantes :
    - films
    - ebook
    - series
    - musique
    - logiciels
*/
    $categorie='films';
    if(isset($_GET['categorie']))
    {
        $categorie=$_GET['categorie'];
    }
    $url='http://cpasbien.cm/view_cat.php?categorie='.$categorie;
    $html=file_get_contents($url);
    preg_match_all('@<a href="(http://[^"]+)" title="[^"]+" class="titre">([^<]+)</a>@i',$html,$matches,PREG_PATTERN_ORDER);
    $datejour=gmdate('D, d M Y H:i:s T',time());
    $nbfilms=count($matches[0]);
    $head=<<<HEAD
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
    <title>$categorieFilms Cpasbien</title>
    <description>$categorie Cpasbien</description>
    <lastBuildDate>$datejour</lastBuildDate>
    <link>$url</link>

HEAD;
    $bottom=<<<BOTTOM
</channel>
</rss>

BOTTOM;
    $items='';
    for($i=0;$i<$nbfilms;$i++)
    {
    $link=$matches[1][$i];
    $title=htmlspecialchars($matches[2][$i]);
    $description=$title;
    $items.=<<<ITEM
    <item>
    <title>$title</title>
    <description>$description</description>
    <pubDate>$datejour</pubDate>
    <link>$link</link>
    <guid>$link</guid>
    </item>

ITEM;
    }
    $rss=$head.$items.$bottom;
    header('Content-Type: text/xml');
    echo $rss;
    exit;
?>
 

Php / , , ,