Ir para conteúdo
Fórum Script Brasil
  • 0

Requisitar Informações De Um Torrent


tiagopassos

Pergunta

Depois de muita luta :P consegui o script abaixo,

que serve para requisitar informações de um determinado

torrent ao seu tracker. Considerando que o nome do

arquivo é TorrentFile.php, alguém poderia me ajudar

a descobrir como usá-lo? seria através do link

TorrentFile.php?filename=nome_do_torrent.torrent ?

<?php

class TorrentFile {
    var $index;
    var $source;
    var $final_array;


    function handler() {
        $char = $this->source[$this->index];

        if (is_numeric($char)) return $this->handler_string();
        if ($char == 'i') {
            ++$this->index;
            return $this->handler_int();
        }
        if ($char=='l') {
            ++$this->index;
            return $this->handler_list();
        }
        if ($char=='d') {
            ++$this->index;
            return $this->handler_dictonary();
        }

        die("MAIN HANDLER: UNEXPECTED CHAR (position: $this->index): ".$char);
    }


    function handler_int() {
        $current_char='';
        $number = "";

        while (($current_char = $this->source[$this->index]) != 'e') {
            ++$this->index;
            $number .= $current_char;
        }

        ++$this->index;

        return (int) $number;
    }



    function handler_string(){
        $size ="";
        while($this->source[$this->index] != ':') {
            $size .= $this->source[$this->index];
            ++$this->index;
        }

        $i = ++$this->index;
        $this->index += $size;

        $x= substr($this->source, $i, $size);

        return $x;
    }

    function handler_list() {
        $return_list = array();

        while ($this->source[$this->index] != 'e') {
            $this->index1 = $this->index;
            $return_list[] = $this->handler();
            if ($this->index1 == $this->index) die("INFINITE LOOP IN THE LIST");
        }
        ++$this->index;

        return $return_list;
    }

    function handler_dictonary() {
        $return_dict = array();

        while ($this->source[$this->index] != 'e') {
            $this->index1 = $this->index;
            $return_dict[$this->handler_string()] = $this->handler();
            if ($this->index1 == $this->index) die("INFINITE LOOP IN THE DICTONARY");
        }
        ++$this->index;

        return $return_dict;
    }


    function parse_file($filename) {
        $this->source = file_get_contents($filename);

        $this->index = 0;
        $filesize = strlen($this->source);

        $this->final_array=array();

        while($this->index<$filesize) {
            $this->index1 = $this->index;
            $this->final_array[] =$this->handler();
            if ($this->index1 == $this->index) die("INFINITE LOOP IN THE ROOT LIST");
        }

        $this->source = '';
        return $this->final_array;
    }
}


$x = new TorrentFile();
var_dump($x->parse_file("vertigo2.torrent"));

?>

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

uhn... bem estranho...

Xo v...

Tente assim, mas duvido muito que funciona, mas...

include "./TorrentFile.php";

$hnd = new TorrentFile;
echo $hnd->parser_file("localização_do_torrent_aki");

FLWS espero ter ajudado!

Link para o comentário
Compartilhar em outros sites

  • 0

como usar já esta no arquivo

$x = new TorrentFile();

var_dump($x->parse_file("vertigo2.torrent"));

no lugar de vertigo.torrent coloque o caminho real do arquivo que quer..

tipo '/home/usuario/public_html/dir1/nome.xxx'

Link para o comentário
Compartilhar em outros sites

  • 0

opa jissa,

funcionou! :)

vocês podem ver o resultado aqui:

http://baboonget.net/TorrentFile2.php?id=112

http://baboonget.net/TorrentFile2.php?id=115

http://baboonget.net/TorrentFile2.php?id=116

Mas...

como retirar as informações desse intrincado de dados?

como pegar só o título do torrent por exemplo?

e o status (seeders/leechers), alguém sabe como?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...