Hoje vou apresentar-lhes um script que fiz recentemente, para sanar um problema que eu estava tendo com download de torrents RSS. Como eu praticamente só uso linux (ubuntu) há um bom tempo, não tenho mais a oportunidade de utilizar clientes torrents que só estão disponíveis para Windows (leia-se uTorrent, que possui um bom sistema built-in de feeds (sim, ele roda em Wine, mas não acho muito bom desta forma)). Aqui no linux estou utilizando o transmission, que é um cliente muito simples, porém não possui sistema de feeds, então, resolvi fazer o seguinte script:
<?php
$url = array(
'url1',
'url2'
);
$dat_file = dirname(__FILE__) . '/rss.dat';
$log_file = dirname(__FILE__) . '/rss.log';
$downloaded = file_get_contents( dat_file );
$downloaded = explode("\n", $downloaded);
foreach ($url as $_url)
{
$content = file_get_contents($_url);
$xml = new
SimpleXMLElement($content);
foreach ($xml->channel->item as $item)
{
if (!in_array($item->link, $downloaded))
{
$basename = dirname(__FILE__) . '/' . basename($item->link);
if (!file_exists($basename))
{
file_put_contents( $basename,
file_get_contents($item->link) );
}
$downloaded[] = $item->link;
}
}
}
file_put_contents( $dat_file, implode("\n", $downloaded) );
file_put_contents( $log_file,
file_get_contents($log_file) . "\nExecutado " . date('d/m/Y H:i') );
?>
Ok, você irá reclamar que ele é feito em PHP, quando poderia ser feito em qualquer outra linguagem mais acessível para a maioria das pessoas. Mas foi o que eu pude fazer de forma rápida e que atendia minhas necessidades.
Não vou descrever o que faz cada linha deste script, o que ele faz basicamente é ler todas as URL’s do array que está no cabeçalho, verificar no arquivo rss.dat se o link já foi baixado, caso não tenha, ele baixa o arquivo no diretório relativo ao script.
Use de acordo com suas necessidades, altere o array $url de acordo com suas necessidades, inserindo o endereço exato do feed que você quer acompanhar. Pode ser utilizado para baixar qualquer tipo de mídia (torrents, podcasts).
Se for utilizar para baixar torrents, recomendo indicar para seu cliente bittorrent monitorar o diretório onde está este script (ou seja, onde serão depositados os arquivos .torrent novos). Assim, sempre que sair um novo episódio ele será automaticamente adicionado à lista de downloads do seu cliente.
Para verificar automaticamente novos conteúdos, coloquei o script para ser rodado na crontab: (deve-se ter instalado o php5-cli na máquina)
1 * * * * root php /home/moises/downloads/rss.php
(rodar o script no primeiro minuto de cada hora)
Muito bom…gostei, vou testar o codigo.