joeroberts |
21st October 2009 01:50 |
Import TBdev & TT torrents to phpMyBitTorrent
Here is a add-on for user import which together they can help you convert Most TBdev and alike source to phpMyBitTorrent.
To Use just upload to your PMBT root and edit [$oldupload = "oldt";//edit to your old upload file] to old upload folder and call to the page
Down side is you may have to run it a couple times but if every thing goes as it should it well import torrents nfo and comments and add them all to your new source.
PHP Code:
<?php /* *----------------------------phpMyBitTorrent V 2.0.4---------------------------* *--- The Ultimate BitTorrent Tracker and BMS (Bittorrent Management System) ---* *-------------- Created By Antonio Anzivino (aka DJ Echelon) --------------* *------------------- And Joe Robertson (aka joeroberts) -------------------* *------------- http://www.p2pmania.it -------------* *------------ Based on the Bit Torrent Protocol made by Bram Cohen ------------* *------------- http://www.bittorrent.com -------------* *------------------------------------------------------------------------------* *------------------------------------------------------------------------------* *-- This program is free software; you can redistribute it and/or modify --* *-- it under the terms of the GNU General Public License as published by --* *-- the Free Software Foundation; either version 2 of the License, or --* *-- (at your option) any later version. --* *-- --* *-- This program is distributed in the hope that it will be useful, --* *-- but WITHOUT ANY WARRANTY; without even the implied warranty of --* *-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --* *-- GNU General Public License for more details. --* *-- --* *-- You should have received a copy of the GNU General Public License --* *-- along with this program; if not, write to the Free Software --* *-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --* *-- --* *------------------------------------------------------------------------------* *------ ©2010 phpMyBitTorrent Development Team ------* *----------- http://phpmybittorrent.com -----------* *------------------------------------------------------------------------------* *-------------------- Sunday, Oct 20, 2009 1:05 AM ------------------------* */
$oldupload = "oldones";//edit to your old upload file @set_time_limit(20); @ini_set("memory_limit","64M"); if (defined('IN_PMBT'))die ("You can't include this file"); define('IN_PMBT', true); include('header.php'); require_once("include/bdecoder.php"); require_once("include/bencoder.php"); //die($announce_url); $sql = "SELECT * FROM torrents ORDER BY `id` ASC;"; $res = $db->sql_query($sql)or btsqlerror($sql); while($row = $db->sql_fetchrow($res)){ //echo $row['id'].""; if (file_exists("torrent/".$row['id'].".torrent"))continue; echo $row['id'].""; $pagetorrent = ""; $fp = @fopen($oldupload."/".$row['id'].".torrent","rb"); echo "checking torrent "; if(!$fp) echo "No Torrent File here"; else echo "Torrent is here"; if(!$fp)continue; while (!@feof($fp)) { $pagetorrent .= @fread($fp,1000); } @fclose($fp); unset($fp);
$md5file = $oldupload."/".$row['id'].".torrent"; //echo $row['id']; //die; //Decode $nfopath = $oldupload."/".$row['id'].".nfo"; if (file_exists($nfopath)) rename($nfopath, "torrent/".$row['id'].".nfo"); $info =''; $infohash = ''; $torrent = Bdecode($pagetorrent); $info = entry_get($torrent,"info"); #Parsing files $filelist = array(); if (entry_exists($torrent,"info/length(Integer)")) { //Single file $totallen = entry_read($torrent,"info/length(Integer)");
if (entry_exists($torrent,"info/sha1(String)")) { $sha1code = entry_read($torrent, "info/sha1(String)"); $magnet_link = "magnet:?xt=urn:sha1:".addslashes(hex_to_base32($sha1code))."&dn=".urlencode($dname); } else { $magnet_link = ""; } if (entry_exists($torrent,"info/ed2k(String)")) { $ed2k = entry_read($torrent, "info/ed2k(String)"); $ed2k_link = "ed2k://|file|".urlencode($dname)."|".$totallen."|".strtoupper(str_pad($ed2k,32,"0"))."|/"; } else { $ed2k_link = ""; } $filelist[] = array($dname, $totallen, $magnet_link, $ed2k_link); $type = "single"; } else { //Multiple files $flist = entry_read($torrent, "info/files(List)"); if (!isset($flist)) bterror(_btmissinglength,_btuploaderror); if (!count($flist)) bterror(_btnofilesintorrent,_btuplaoderror); #$totallen = 0; foreach ($flist as $fn) { $ffe = ""; $magnet_link = ""; $ed2k_link = ""; $children = $fn->child_nodes(); $file = array(); foreach ($children as $child) { $file[$child->tagname] = $child; }
if (!array_key_exists("length",$file) OR !array_key_exists("path",$file)) bterror("test5",_btuploaderror);
$ll = $file["length"]->get_content();
$path = array(); foreach ($file["path"]->child_nodes() as $p) array_push($path,$p->get_content()); $ffe = implode("/",$path); if (empty($ffe)) bterror(_btfilenamerror,_btuploaderror);
if (array_key_exists("sha1",$file)) { $magnet_link = "magnet:?xt=urn:sha1:".addslashes(hex_to_base32($file["sha1"]->get_content()))."&dn=".urlencode($path[count($path)-1]); } if (array_key_exists("ed2k",$file)) { $ed2k_link = "ed2k://|file|".urlencode($path[count($path)-1])."|".$ll."|".strtoupper(str_pad($file["ed2k"]->get_content(),32,0))."|/"; } unset($p, $path);
$filelist[] = array($ffe, $ll, $magnet_link, $ed2k_link); $totallen += $ll; } $type = "multi"; } $infohash_hex = sha1(Benc($info)); $infohash = pack("H*", $infohash_hex); unset($info); $dht = "no"; if (entry_exists($torrent,"azureus_properties/dht_backup_enable(Integer)")) { if (entry_read($torrent,"azureus_properties/dht_backup_enable(Integer)") != 0) $dht = "yes"; } $announce = entry_read($torrent,"announce(String)"); $info_intact = true; #Name, piece length and pieces
if (!entry_exists($torrent,"info/piece length(Integer)")) bterror("test3",_btuploaderror); if (!entry_exists($torrent,"info/pieces(String)")) bterror("test4",_btuploaderror); $dname = (entry_exists($torrent,"info/name(String)")) ? $dname = entry_read($torrent,"info/name(String)") : ""; $plen = entry_read($torrent,"info/piece length(Integer)"); $pieces = entry_read($torrent,"info/pieces(String)");
if (strlen($pieces) % 20 != 0) bterror(_btinvpieces,_btuploaderror); unset($pieces);
$tcomment = (entry_exists($torrent,"comment(String)")) ? entry_read($torrent,"comment(String)") : ""; #Parsing Announce $annregexp_http = "/(http[s]?+):\/\/[-\/.:_\\w]*\/announce[^\/\\s]*/i"; $annregexp_dht = "/^dht:\/\/[0-9a-f]*.dht\/announce$/i"; $annregexp_udp = "/udp:\/\/[-\/.:_\\w]*\/announce[^\/\\s]*/i"; if ($announce == $announce_url) { if ($stealthmode) bterror(str_replace("**name**",$sitename,_bttrackerdisabled),_btuploaderror); $announce = ""; } elseif (preg_match($annregexp_http, $announce)) { $sql = "SELECT id FROM ".$db_prefix."_trackers WHERE url = '".addslashes($announce)."' AND status = 'blacklisted' LIMIT 1;"; $res = $db->sql_query($sql); if ($db->sql_numrows($res) > 0) bterror(str_replace("**trk**",$announce,_bttrackerblacklisted),_btuploaderror); $db->sql_freeresult($res); } elseif (preg_match($annregexp_dht,$announce)) { $dht = "yes"; } else { bterror(_btinvannounce."<b>".$announce."</b>",_btuploaderror); } //UDP trackers or trackers inside the TOR/I2P networks are not supported *yet* $trackers = "NULL"; $backup_tracker = "false"; if (entry_exists($torrent,"announce-list(List)")) { $trackers = Array(); $to_check = Array(); $announce_list = entry_read($torrent,"announce-list(List)"); foreach ($announce_list as $group) { $trackers_in_group = Array(); foreach ($group->child_nodes() as $tracker_node) { $tracker = $tracker_node->get_content(); if (!preg_match($annregexp_http,$tracker) AND !preg_match($annregexp_udp,$tracker)) bterror(_btinvannounce."<b>".$tracker."</b>",_btuploaderror); //If the main tracker is NOT this one, but this one APPEARS within the Announce list then we're running backup tracker if ($tracker["value"] == $announce_url AND $announce != "") $backup_tracker = "true"; array_push($trackers_in_group,$tracker); array_push($to_check,"'".$tracker."'"); unset($tracker, $tracker_node); } array_push($trackers,$trackers_in_group); unset($trackers_in_group, $group);
} unset($sql, $to_check,$announce_list, $res2); for ($i = 0; $i < count($trackers); $i++) $trackers[$i] = implode("\n",$trackers[$i]); $trackers = "'".addslashes(implode("\n\n",$trackers))."'"; } #Checking against the SAME Torrent $jump_check = false; if ($jump_check ) { $sql = "SELECT id FROM ".$db_prefix."_torrents WHERE info_hash = '".addslashes($infohash)."';"; $res2 = $db->sql_query($sql) or btsqlerror($sql); if ($db->sql_numrows($res2) > 0) { continue; } $db->sql_freeresult($res2); } $password = "NULL"; $searchtext = "".$row['filename']." ". $row['filename']." ". $row['descr']." "; #Preparing SQL $torrentfields = Array(); $torrentvalues = Array();
$torrentfields[] = "id"; $torrentvalues[] = "'".$row['id']."'";
$torrentfields[] = "info_hash"; $torrentvalues[] = "'".addslashes($infohash)."'";
$torrentfields[] = "name"; $torrentvalues[] = "'".addslashes($row['name'])."'";
$torrentfields[] = "filename"; $torrentvalues[] = "'".addslashes($row['filename'])."'";
$torrentfields[] = "save_as"; $torrentvalues[] = "'".addslashes($row['save_as'])."'";
$torrentfields[] = "md5sum"; $torrentvalues[] = "'".md5_file($md5file)."'";
$torrentfields[] = "search_text"; $torrentvalues[] = "'".addslashes($row['filename'])."'";
$torrentfields[] = "descr"; $torrentvalues[] = "'".addslashes($row['descr'])."'";
$torrentfields[] = "added"; $torrentvalues[] = "'".$row['added']."'";
$torrentfields[] = "size"; $torrentvalues[] = "'".$row['size']."'";
$torrentfields[] = "ratiobuild"; $torrentvalues[] = "'".$row['free']."'";
$torrentfields[] = "plen"; $torrentvalues[] = "'".entry_read($torrent,"info/piece length(Integer)")."'";
$torrentfields[] = "category"; $torrentvalues[] = "'".$row['free']."'";
$torrentfields[] = "type"; $torrentvalues[] = "'".$row['type']."'";
$torrentfields[] = "numfiles"; $torrentvalues[] = "'".$row['numfiles']."'";
$torrentfields[] = "exeem"; $torrentvalues[] = "NULL";
$torrentfields[] = "dht"; $torrentvalues[] = "'".$dht."'";
$torrentfields[] = "backup_tracker"; $torrentvalues[] = "'".$backup_tracker."'";
$torrentfields[] = "views"; $torrentvalues[] = "'".$row['views']."'";
$torrentfields[] = "downloaded"; $torrentvalues[] = "'".$row['hits']."'";
$torrentfields[] = "completed"; $torrentvalues[] = "'".$row['times_completed']."'";
$torrentfields[] = "banned"; $torrentvalues[] = "'".$row['banned']."'";
$torrentfields[] = "password"; $torrentvalues[] = $password;
$torrentfields[] = "visible"; $torrentvalues[] = "'".$row['visible']."'";
$torrentfields[] = "evidence"; $torrentvalues[] = "'0'";
$torrentfields[] = "owner"; $torrentvalues[] = "'".$row['owner']."'";
$torrentfields[] = "ownertype"; $torrentvalues[] = "'0'";
$torrentfields[] = "uploader_host"; $torrentvalues[] = "'0'";
$torrentfields[] = "numratings"; $torrentvalues[] = "'0'";
$torrentfields[] = "ratingsum"; $torrentvalues[] = "'0'";
$torrentfields[] = "seeders"; $torrentvalues[] = "'".$row['seeders']."'";
$torrentfields[] = "leechers"; $torrentvalues[] = "'".$row['leechers']."'";
$torrentfields[] = "tot_peer"; $torrentvalues[] = "'".intval($row['seeders']+$row['leechers'])."'";
$torrentfields[] = "speed"; $torrentvalues[] = "'0'";
$torrentfields[] = "comments"; $torrentvalues[] = "'".$row['comments']."'";
$torrentfields[] = "complaints"; $torrentvalues[] = "'0,0'";
$torrentfields[] = "tracker"; if ($announce == "") $torrentvalues[] = "NULL"; else $torrentvalues[] = "'".$announce."'";
$torrentfields[] = "tracker_list"; $torrentvalues[] = $trackers;
$torrentfields[] = "tracker_update"; $torrentvalues[] = "NOW()";
$torrentfields[] = "last_action"; $torrentvalues[] = "NOW()";
$torrentfields[] = "imdb"; $torrentvalues[] = "'".$row['imdb']."'";
$torrentsql = "INSERT INTO ".$db_prefix."_torrents (".implode(", ",$torrentfields).") VALUES (".implode(", ",$torrentvalues).");"; $db->sql_query($torrentsql) or btsqlerror($torrentsql); if ($announce != ""){ $db->sql_query("INSERT INTO ".$db_prefix."_trackers (url, updated) VALUES ('".addslashes($announce)."', NOW());"); } foreach ($filelist as $file) { list ($fname, $fsize, $magnet, $ed2k) = $file; $fields = "(torrent, filename, size"; $values = "('".$row['id']."', '".str_replace("'","\'",$fname)."', '".$fsize."'"; if ($magnet != "") { $fields.= ", magnet"; $values.= ", '".addslashes($magnet)."'"; } if ($ed2k != "") { $fields.= ", ed2k"; $values.= ", '".addslashes($ed2k)."'"; } $fields.= ")"; $values.= ")"; $filesql = "INSERT INTO ".$db_prefix."_files ".$fields." VALUES ".$values.";"; if (!$db->sql_query($filesql)) { //Rollback $db->sql_query("DELETE FROM ".$db_prefix."_torrents WHERE id = '".$row['id']."' LIMIT 1;"); $db->sql_query("DELETE FROM ".$db_prefix."_files WHERE torrent = '".$row['id']."';"); btsqlerror($filesql); } } $torrentpath = $torrent_dir."/".$row['id'].".torrent"; if (file_exists($torrentpath)) unlink($torrentpath);
$fp = fopen($torrentpath,"wb"); fwrite($fp,Bencode($torrent)); fclose($fp); //@unlink($tmpname); echo "Torrent ".$row['name']." added"; $sqlc = "SELECT * FROM `comments` WHERE `torrent`='".$row['id']."';"; $resc = $db->sql_query($sqlc)or btsqlerror($sql); while($rowc = $db->sql_fetchrow($resc)){ $sql = "INSERT INTO ".$db_prefix."_comments (user, torrent, added, text) VALUES ('".$rowc['user']."', '".$row['id']."', '".$row['added']."', '" . $row['text'] . "');"; $db->sql_query($sql) or btsqlerror($sql); } $db->sql_freeresult($resc);
} $db->sql_freeresult($res); include'footer.php'; ?>
|