Hämta info om torrent från PTB

PHPportalen Forum Index » Tips och Trix
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget Gå till sida 1, 2  Nästa
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
kenokung



Medlem i: 3306 dagar

Status: Offline



#697498
Inlägg Skrivet: 2011-01-01 15:10      Ämne: Hämta info om torrent från PTB Citera

Hej, har gjort en funktion som hämtar torrentnamn, torrentlänk, storlek, leechers och seeders ifrån PTB.
Om någon kan komma på ett säkrare eller snabbare lösning så posta det.
PHP:
1:
 function getTorrentFromPTB($url_tpb) {
2:
   
3:
   // Hämta sourcekoden ifrån urlen
4:
   $sor_name file_get_contents($url_tpb);
5:
   $sor_size $sor_name;
6:
   $sor_down $sor_size;
7:
   $sor_seed $sor_down;
8:
   $sor_leech $sor_seed;
9:
   
10:
   // 1#. Hämta Torrent Name
11:
   $query_start_name "<div id=\"title\">";
12:
   $query_stop_name "</div>";
13:
   $sor_name substr($sor_namestrpos($sor_name$query_start_name));
14:
   $sor_name substr($sor_name0strpos($sor_name$query_stop_name));
15:
   $sor_name str_replace('<div id="title">'""$sor_name);
16:
   
17:
   
18:
   // 2#. Hämta Storlek och Ge Fint Värde
19:
   $query_start_size "&nbsp;(";
20:
   $query_stop_size "&nbsp;Bytes)";
21:
   $sor_size substr($sor_sizestrpos($sor_size$query_start_size));
22:
   $sor_size substr($sor_size0strpos($sor_size$query_stop_size));
23:
   $remove_size = array("&nbsp;","(");
24:
   $sor_size str_replace($remove_size""$sor_size);
25:
   $kb = ($sor_size .0009765625);
26:
   $mb = (($sor_size .0009765625) * .0009765625);
27:
   $gb = ((($sor_size .0009765625) * .0009765625) * .0009765625);
28:
   if(strlen($sor_size) >= 10) {$sor_size round($gb2)." GB";}
29:
   elseif(strlen($sor_size) >= 7) {$sor_size round($gb2)." MB";}
30:
   elseif(strlen($sor_size) >= || strlen($sor_size) < 4) {$sor_size round($kb2)." KB";}
31:
   
32:
   // 3#. Hämta Torrent Download Länk
33:
    
34:
   $start "<div class=\"download\">";
35:
   $stop "Download this torrent";
36:
   $sor_down substr($sor_downstrpos($sor_down$start));
37:
   $sor_down substr($sor_down0strpos($sor_down$stop));
38:
   $remove = array("<a href=","\"","title"," ","=""<divclassdownload>");
39:
   $sor_down str_replace($remove""$sor_down);
40:
   
41:
   // 4#. Hämta Seeders
42:
   $query_start_seed "<dt>Seeders:</dt>";
43:
   $query_stop_seed "<dt>Leechers:</dt>";
44:
   $sor_seed substr($sor_seedstrpos($sor_seed$query_start_seed));
45:
   $sor_seed substr($sor_seed0strpos($sor_seed$query_stop_seed));
46:
   $remove_seed = array(" ","   ","<dd>","</dd>","<dt>","</dt>","Seeders:");
47:
   $sor_seed str_replace($remove_seed""$sor_seed);   
48:
   
49:
   // 5#. Hämta Leechers
50:
   $query_start_leech "<dt>Leechers:</dt>";
51:
   $query_stop_leech "<dt>Comments</dt>";
52:
   $sor_leech substr($sor_leechstrpos($sor_leech$query_start_leech));
53:
   $sor_leech substr($sor_leech0strpos($sor_leech$query_stop_leech));
54:
   $remove_leech = array(" ","   ","<dd>","</dd>","<dt>","</dt>","Leechers:");
55:
   $sor_leech str_replace($remove_leech""$sor_leech);
56:
   
57:
   
58:
   //Skriv Ut All Info
59:
   return trim($sor_name).",".trim($sor_size).",".trim($sor_down).",".trim($sor_seed).",".trim($sor_leech);
60:


Du använder den genom att skriva
PHP:
1:
 $res_torrent explode(','getTorrentFromPTB("http://thepiratebay.org/torrent/5921876/Inception_(2010)_DVDRip_XviD-MAX"));
2:
print_r($res_torrent); 
 

_________________
Även känd som anthon0498, och det ska stå kvar här
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
EmilV
Ex-Moderator



Medlem i: 6082 dagar
Från: Lilla Edet
Status: Offline



#697507
Inlägg Skrivet: 2011-01-01 16:14      Ämne: Citera

* Jag har inte testat skriptet, men reagerar på de till synes magiska konstanterna och förvirrade paranteserna här:

PHP:
1:
 
2:
   $kb = ($sor_size .0009765625);
3:
   $mb = (($sor_size .0009765625) * .0009765625);
4:
   $gb = ((($sor_size .0009765625) * .0009765625) * .0009765625);
5:
 


Är det inte klarare att göra så här?

PHP:
1:
 
2:
$kb $sor_size 1024;
3:
$mb $kb 1024;
4:
$gb $mb 1024;
5:
 


Att jag kallar parenteserna för "förvirrade" beror på att operationer av samma typ alltid utförs från vänster till höger så parenteserna tillför absolut ingenting. Dessutom är multiplikation kommutativt, dvs det spelar ingen roll i vilken ordning operationerna utförs.

* Jag hade förmodligen slängt ut raderna 25-30 och löst det så här, både för att din användning av strlen där äcklar mig (ta det inte personligt) och för att detta känns vettigast:
PHP:
1:
 
2:
$units = array('B''KB''MB''GB''TB');
3:
$unit_count count($units);
4:
$unit 0;
5:
while($sor_size >= 1000 && $unit $unit_count-1) {
6:
  $unit++;
7:
  $sor_size /= 1024;
8:
}
9:
$sor_size round($sor_size2) .' '$units[$unit];
10:
 


* Jag hade hellre returnerat en array än en sträng eftersom det är lättare att arbeta med arrayer.

* Tyckte du att du var lustig på raderna 5-8? Smile Det är lite otydligt vad du faktiskt gör där. Jag föreslår detta skrivsätt:
PHP:
1:
 
2:
$content file_get_contents($url_tpb);
3:
$sor_name $sor_size $sor_down $sor_seed $sor_leech $content;
4:
 


* Rent allmänt tycker jag du gjort dig väldigt beroende av hur sajten ser ut just idag, på gott och ont. Det som är bra är att du får rätt bra prestanda, men det dåliga är att det är jobbigt att felsöka om de gör ändringar i framtiden.
 

_________________
Tänk!

EmilVikström.se | Bloglovin.com
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
kenokung



Medlem i: 3306 dagar

Status: Offline



#697516
Inlägg Skrivet: 2011-01-01 18:38      Ämne: Citera

okej tackar! :D Jag skriver kanske inte sån fin kod men det funkar i alla fall.

Ska prova att ändra min kod nu Wink
 

_________________
Även känd som anthon0498, och det ska stå kvar här
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
potatis_invalido



Medlem i: 3754 dagar

Status: Offline



#697517
Inlägg Skrivet: 2011-01-01 19:01      Ämne: Citera

Vad är PTB?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida
kenokung



Medlem i: 3306 dagar

Status: Offline



#697518
Inlägg Skrivet: 2011-01-01 19:02      Ämne: Citera

oj TPB ska det vara xD
tror du förstod ändå om du kolalt igenom hela kdoen Smile
 

_________________
Även känd som anthon0498, och det ska stå kvar här
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Wedge
Administratör



Medlem i: 6207 dagar
Från: Järfälla
Status: Offline



#697526
Inlägg Skrivet: 2011-01-01 20:34      Ämne: Citera

potatis_invalido skrev:
Vad är PTB?
Phe Tirate Bay, naturligtvis.
 

_________________
I am Groot
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Timi



Medlem i: 4033 dagar

Status: Offline



#705827
Inlägg Skrivet: 2011-04-18 18:12      Ämne: Citera

PHP:
1:
 Array ( [0] => Bumbibjörnarna.S1E1.SWEDISH.PDTV.XviD-NoZ^ [1] => 0.37 MB [2] => http://torrents.thepiratebay.org/5181858/Bumbibj____rnarna.S1E1.SWEDISH.PDTV.XviD-NoZ_.5181858.TPB.torrent [3] => 2 [4] => 1 ) 


Så blev resultatet när jag skulle testa
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Jalet



Medlem i: 5450 dagar
Från: Järfälla, Kallhäll
Status: Offline



#705855
Inlägg Skrivet: 2011-04-19 08:42      Ämne: Citera

Kanske är bättre att skicka tillbaka en assosiativ array eller ett stdObject Smile

*EDIT*
Blev lite inspirerad

PHP:
1:
 
2:
<?php
3:
class Tpb
4:
{
5:
   private $id;
6:
   private $name;
7:
   private $size = array();
8:
   private $seeders;
9:
   private $leechers;
10:
   private $url;
11:
   
12:
   public function __construct($url)
13:
   {
14:
      $this->init($url);
15:
   }
16:
   
17:
   protected function init($url)
18:
   {
19:
      $ch curl_init();
20:
      curl_setopt($chCURLOPT_URL$url);
21:
      curl_setopt($chCURLOPT_HEADERTRUE);
22:
      curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
23:
      $head curl_exec($ch);
24:
      
25:
      // id
26:
      preg_match_all('#\/(\d+)\/#'$url$m1);
27:
      $this->id $m[1][0];
28:
 
29:
      // Name
30:
      preg_match_all('#<div id="title">((\w+|\s+|[-\[\]])+)</div>#i'$head$m1);
31:
      $name preg_replace('#^\W+|\s+$#'''$m[1][0]);
32:
      $this->name $name;
33:
      
34:
      // Size
35:
      preg_match_all('#(\d+)(\s|&nbsp;)Bytes#im'$head$m2);
36:
      $this->size['B'] = $m[0][1];
37:
      $this->size['KB'] = round($this->size['B'] / 10241);
38:
      $this->size['MB'] = round($this->size['KB'] / 10241);
39:
      
40:
      // Seeders & Leechers
41:
      preg_match_all('#<div id="title">((\w+|\s+|[-\[\]])+)</div>#i'$head$m1);
42:
      $name preg_replace('#^\W+|\s+$#'''$m[1][0]);
43:
      $this->name $name;
44:
      
45:
      // Leechers
46:
      preg_match_all('#(<dt>(Distributörer:|Seeders:|Reciprokörer:|Leechers:)</dt>)|(<dd>(\d+)</dd>)#i'$head$m1);
47:
      $this->seeders    = (int)$m[4][1];
48:
      $this->leechers   = (int)$m[4][3];
49:
   }
50:
   
51:
   public function __toString()
52:
   {
53:
      return $this->name ' (' $this->size['KB'] . 'Kb) - ' $this->seeders 'st seedar & ' $this->leechers 'st leechar';
54:
   }
55:
   
56:
   public function __get($property)
57:
   {
58:
      return $this->$property;
59:
   }
60:
}
61:
 
62:
$m = new Tpb('http://thepiratebay.org/torrent/6328006/House_S07E19_HDTV_XviD-LOL_%5Beztv%5D');
63:
 
64:
// House S07E19 HDTV XviD-LOL [eztv] (358192.8Kb) - 15070st seedar & 20044st leechar
65:
echo $m
66:
 


Behöver nog skrivas om lite s att den stödjer fler språk än svenska & engelska. Eller sätta headers för Curl så att du bara får tillbaka svar på engelska.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida
Makkesk8



Medlem i: 3070 dagar
Från: Polen & danmark
Status: Offline



#712039
Inlägg Skrivet: 2011-08-21 19:47      Ämne: Citera

Men gud... googla htmldom och sluta göra sånna här instabila koder.
 

_________________
http://kz-extreme.net/
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida AIM-adress Yahoo Messenger MSN Messenger
feqz



Medlem i: 2679 dagar

Status: Offline



#723116
Inlägg Skrivet: 2012-05-01 01:02      Ämne: Citera

Får upp detta: Array ( [0] => Inception (2010) DVDRip XviD-MAX [1] => 1.44 GB [2] => [3] => 2166 [4] => 345 )

Så ska det väl inte vara ? Hur ändrar jag det?
Går det att hämta bilden på torrenten ?

Jag vill ha det såhär (t.ex):
Inception
Storlek: 3GB
Seeders: 12 (img preview)
Leechers: 43
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
thedragon



Medlem i: 5861 dagar

Status: Offline



#723176
Inlägg Skrivet: 2012-05-02 00:30      Ämne: Citera

feqz skrev:
Får upp detta: Array ( [0] => Inception (2010) DVDRip XviD-MAX [1] => 1.44 GB [2] => [3] => 2166 [4] => 345 )

Så ska det väl inte vara ? Hur ändrar jag det?
Går det att hämta bilden på torrenten ?

Jag vill ha det såhär (t.ex):
Inception
Storlek: 3GB
Seeders: 12 (img preview)
Leechers: 43


Ersätt print_r($res_torrent); med $res_torrent[0]; för att få ut torrentfilens namn. Jag antar att du förstår hur du sedan får ut storleken till torrentfilens innehåll, antalet seeders och även leechers.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
feqz



Medlem i: 2679 dagar

Status: Offline



#723205
Inlägg Skrivet: 2012-05-04 14:20      Ämne: Citera

thedragon skrev:
feqz skrev:
Får upp detta: Array ( [0] => Inception (2010) DVDRip XviD-MAX [1] => 1.44 GB [2] => [3] => 2166 [4] => 345 )

Så ska det väl inte vara ? Hur ändrar jag det?
Går det att hämta bilden på torrenten ?

Jag vill ha det såhär (t.ex):
Inception
Storlek: 3GB
Seeders: 12 (img preview)
Leechers: 43


Ersätt print_r($res_torrent); med $res_torrent[0]; för att få ut torrentfilens namn. Jag antar att du förstår hur du sedan får ut storleken till torrentfilens innehåll, antalet seeders och även leechers.


Blir såhär istället:
Inception (2010) DVDRip XviD-MAX1.44 GB1914308

Allting sitter ihop.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
thedragon



Medlem i: 5861 dagar

Status: Offline



#723243
Inlägg Skrivet: 2012-05-06 02:16      Ämne: Citera

feqz skrev:
Blir såhär istället:
Inception (2010) DVDRip XviD-MAX1.44 GB1914308

Allting sitter ihop.


Har du testat med att skriva $res_torrent[0].' '.$res_torrent[1].' '.$res_torrent[2];?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
feqz



Medlem i: 2679 dagar

Status: Offline



#723308
Inlägg Skrivet: 2012-05-08 21:06      Ämne: Citera

Ska testa
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
wizz



Medlem i: 2516 dagar

Status: Offline



#727741
Inlägg Skrivet: 2012-11-16 12:44      Ämne: Citera

Intressant finns det någon fortsättning på detta ?
Hur använder jag det på bästa sätt och går det att infoga var som hälst i en php sida ?

Dumma frågor men vore kul att testa..
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget Gå till sida 1, 2  Nästa
PHPportalen Forum Index » Tips och Trix
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic