Bravo List
Register
Go Back   > Bravo List > Source Code > Archived Trackers > TBDev
Reply
  #1  
Old 27th January 2016, 23:59
alexxandeer alexxandeer is offline
Member
 
Join Date: May 2009
Portugal
Posts: 11
Default Dont get it.
Can someone say why this script dont download anything?
Yes im running it from cron (server)

PHP Code:
<?php

class MovieData {
    private 
$db;
    private 
$imdbPicturesDir "../img/imdb/";

    public function 
__construct($db) {
        
$this->db $db;
    }

    public function 
getData($id) {
        
$sth $this->db->prepare('SELECT * FROM imdbinfo WHERE id = ?');
        
$sth->bindParam(1$idPDO::PARAM_INT);
        
$sth->execute();

        return 
$sth->fetch(PDO::FETCH_ASSOC);
    }

    public function 
getToplist() {
        
$data = array();
        
$sth $this->db->query('SELECT imdbinfo.* FROM imdbtop20 LEFT JOIN imdbinfo ON imdbtop20.imdbid = imdbinfo.imdbid ORDER BY imdbtop20.id ASC');
        return 
$sth->fetchAll(PDO::FETCH_ASSOC);
    }

    public function 
getDataByImdbId($id) {
        if (
preg_match('/[^t0-9]/'$id$match)) {
            throw new 
Exception('Inget giltigt IMDb-id');
        }

        
$sth $this->db->prepare("SELECT * FROM imdbinfo WHERE imdbid = ?");
        
$sth->bindParam(1$idPDO::PARAM_STR);
        
$sth->execute();
        
$res $sth->fetch(PDO::FETCH_ASSOC);

        if (
$res) {
            return 
$res;
        } else {
            
$res $this->fetchImdbData("http://akas.imdb.com/title/".$id."/");
            
            if (
strlen($res["photo"]) > 10) {
                @
file_put_contents($this->imdbPicturesDir $res["imdbid"] . '.jpg', @file_get_contents($res["photo"]));
                
$res["photo"] = 1;
            } else {
                
$res["photo"] = 0;
            }

            
$sth $this->db->prepare('INSERT INTO imdbinfo(imdbid, title, year, rating, tagline, genres, photo, director, writer, cast, runtime, seasoncount) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');

            
$sth->bindParam(1,        $res["imdbid"],            PDO::PARAM_STR);
            
$sth->bindParam(2,        $res["title"],            PDO::PARAM_STR);
            
$sth->bindParam(3,        $res["year"],            PDO::PARAM_INT);
            
$sth->bindParam(4,        $res["rating"],            PDO::PARAM_INT);
            
$sth->bindParam(5,        $res["tagline"],        PDO::PARAM_STR);
            
$sth->bindParam(6,        $res["genres"],            PDO::PARAM_STR);
            
$sth->bindParam(7,        $res["photo"],            PDO::PARAM_INT);
            
$sth->bindParam(8,        $res["director"],        PDO::PARAM_STR);
            
$sth->bindParam(9,        $res["writer"],            PDO::PARAM_STR);
            
$sth->bindParam(10,        $res["cast"],            PDO::PARAM_STR);
            
$sth->bindParam(11,        $res["runtime"],        PDO::PARAM_INT);
            
$sth->bindParam(12,        $res["seasoncount"],    PDO::PARAM_INT);

            
$sth->execute();
            
$insertId $this->db->lastInsertId();
            
$res["id"] = $insertId;
            return 
$res;
        }
    }

    private function 
matchRegex($strContent$strRegex$intIndex null) {
        
preg_match_all($strRegex$strContent$arrMatches);
        if (
$arrMatches === FALSE) return false;
        if (
$intIndex != null && is_int($intIndex)) {
            if (
$arrMatches[$intIndex]) {
                return 
$arrMatches[$intIndex][0];
            }
            return 
false;
        }
        return 
$arrMatches;
    }

    private function 
fetchImdbData($url) {

        
// Decides what language the IMDB titles should be fetched in.
        
$header[] = "Accept-Language: en-us,en;q=0.5";

        
$ch curl_init();
        
curl_setopt($chCURLOPT_URL$url);
        
curl_setopt($chCURLOPT_HTTPHEADER$header); 
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
$data curl_exec($ch);
        
curl_close($ch);     

        if (!
$data) {
            throw new 
Exception('Kunde inte hämta IMDB info ifrån servern.');
        }

        
/* GENRE */

        
$arrReturned $this->matchRegex($data'~href="/genre/(.*)(?:\?.*)"(?:\s+|)>(.*)</a>~Ui');
        if (
count($arrReturned[1])) {
            foreach (
$arrReturned[1] as $strName) {
                
$arrReturn[] = trim($strName);
        }
        
$arrReturn array_slice($arrReturn14);
            
$info["genres"] = join(", "array_unique($arrReturn));
        }

        
/* Tagline */
        
$info["tagline"] = '';
        if (@
preg_match('!Taglines:</h4>\s*(.*?)\s*<!ims',$data,$match)) {
            
$info["tagline"] = trim($match[1]);
        }

        
/* Antal säsonger */
        
preg_match("/episodes\?season=(\d+)/ms"$data$matches);
        
$info["seasoncount"] = $matches[1];
        
        if (
$info["seasoncount"] == 0) {
            
preg_match("/href=\"episodes#season-(\d+)\"/ms"$data$matches);
            
$info["seasoncount"] = $matches[1];
        }

        
/* Cover! */
        
$info["photo"] = 0;
        if (
$strReturn $this->matchRegex($data'~src="(.*)"\nitemprop="image" \/>~Ui'1)) {
          
$info["photo"] = $strReturn;
        }

        
/* Rating */
        
if (preg_match('!<span itemprop="ratingValue">(\d{1,2}\.\d)!i'$data ,$match)){
          
$info["rating"] = $match[1];
        } else {
          
$info["rating"] = 0;
        }


        
/* Title + Year  */
        
if (@preg_match('!<title>(IMDb\s*-\s*)?(.*) \((.*)(\d{4}|\?{4}).*\)(.*)(\s*-\s*IMDb)?</title>!'$data,$match)) {

        
$info["title"] = htmlspecialchars_decode($match[2]);
          
        if (
$match[3]=="????")
            
$info["year"] = "";
        else
              
$info["year"]  = $match[4];
        }

        
preg_match("/<span class=\"title-extra\">(.*?)<i>\(original title\)<\/i>/ms"$data$match);

        if (
strlen($match[1]) > 2) {
            
$info["title"] = trim($match[1]);
        }

        
/* Director */
        
$info['director'] = "";
        
$strContainer $this->matchRegex($data"~(?:Director|Directors):</h4>(.*)</div>~Uis"1);
        
$arrReturned  $this->matchRegex($strContainer'~href="/name/nm(\d+)/(?:.*)" itemprop=\'(?:\w+)\'><span class="itemprop" itemprop="name">(.*)</span>~Ui');

        if (
count($arrReturned[2])) {
            
$arrReturn = Array();
            foreach (
$arrReturned[2] as $i => $strName) {
                        
$arrReturn[] = trim($strName);
            }
            
$info['director'] = join(", "$arrReturn);
        }

        
/* Writer */
        
$info['writer'] = "";
        
$strContainer $this->matchRegex($data'~(?:Writer|Writers):</h4>(.*)</div>~Uis'1);
        
$arrReturned  $this->matchRegex($strContainer'~href="/name/nm(\d+)/(?:.*)" itemprop=\'(?:\w+)\'><span class="itemprop" itemprop="name">(.*)</span>~Ui');

        if (
count($arrReturned[2])) {
            
$arrReturn = Array();
            foreach (
$arrReturned[2] as $i => $strName) {
                
$arrReturn[] = trim($strName);
            }
            
$info['writer'] = join(", "$arrReturn);
        }

        
$info['cast'] = "";
        
$intLimit 20;
        
$arrReturned $this->matchRegex($data'~<span class="itemprop" itemprop="name">(.*)</span>~Ui');

        if (
count($arrReturned[1])) {
            
$arrReturn = Array();
            foreach (
$arrReturned[1] as $i => $strName) {
                if (
$i >= $intLimit) {
                    break;
                }
                 if (
trim($strName) !== $info["title"]) {
                    
$arrReturn[] = trim($strName);
                }
            }
            
$arrReturn array_slice(array_unique($arrReturn), 08);
            
$info['cast'] =  join(", "$arrReturn);
        }

        
/* Runtime */
        
$info['runtime'] = trim($this->match('/Runtime:<\/h4>.*?([0-9]+) min.*?<\/div>/ms'$data1));

        
/* IMDB-ID */
        
$info['imdbid'] = $this->match('/<link rel="canonical" href="http:\/\/www.imdb.com\/title\/(tt[0-9]+)\/" \/>/ms'$data1);

        return 
$info;
    }

    private function 
match($regex$str$i 0) {
        if (
preg_match($regex$str$match) == 1) {
            return 
$match[$i];
        }
        else {
            return 
false;
        }
    }

    public function 
findImdbInfoByReleaseName($release) {
        
preg_match("/^(.+?)(.S[0-9]{2}|.[0-9]{4})/"$release$match);
        if (
$match[1] == "") {
            return 
null;
        }

        
$sth $this->db->query('SELECT * FROM imdbinfo WHERE releaseNameStart = ' $this->db->quote($match[1]) . ' ORDER BY seasoncount DESC LIMIT 1');
        
$res $sth->fetch();
        if (!
$res) {
            return 
null;
        }

        return 
$res;
    }

    public function 
updateReleaseNameStart($name$imdbid) {
        
preg_match("/^(.+?)(.S[0-9]{2}|.[0-9]{4})/"$name$match);
        
$this->db->query('UPDATE imdbinfo SET releaseNameStart = ' $this->db->quote($match[1]) . ' WHERE id = '. (int)$imdbid);
    }

    public function 
updateImdbInfo($id) {
        
$sth $this->db->prepare("SELECT * FROM imdbinfo WHERE id = ?");
        
$sth->bindParam(1$idPDO::FETCH_ASSOC);
        
$sth->execute();
        
$res $sth->fetch(PDO::FETCH_ASSOC);
        if (!
$res) {
            throw new 
Exception('Finns ingen filmdata med detta id.'404);
        }

        
$url 'http://akas.imdb.com/title/'.$res["imdbid"].'/';
        
$data $this->fetchImdbData($url);

//        if ($res["photo"] == 1) {
    //        $data["photo"] = 1;
        //} else {
            
if (strlen($data["photo"]) > 10) {
                
file_put_contents($this->imdbPicturesDir $res["imdbid"] . '.jpg'file_get_contents($data["photo"]));
                
$data["photo"] = 1;
            } else {
                
$data["photo"] = 0;
            }
        
//}

        
$sth $this->db->prepare("UPDATE imdbinfo SET rating = ?, tagline = ?, genres = ?, photo = ?, director = ?, writer = ?, cast = ?, runtime = ?, seasoncount = ?, title = ?, lastUpdated = NOW() WHERE id = ?");
        
$sth->bindParam(1,    $data["rating"],        PDO::PARAM_INT);
        
$sth->bindParam(2,    $data["tagline"],        PDO::PARAM_STR);
        
$sth->bindParam(3,    $data["genres"],        PDO::PARAM_STR);
        
$sth->bindParam(4,    $data["photo"],            PDO::PARAM_INT);
        
$sth->bindParam(5,    $data["director"],        PDO::PARAM_STR);
        
$sth->bindParam(6,    $data["writer"],        PDO::PARAM_STR);
        
$sth->bindParam(7,    $data["cast"],            PDO::PARAM_STR);
        
$sth->bindParam(8,    $data["runtime"],        PDO::PARAM_INT);
        
$sth->bindParam(9,    $data["seasoncount"],    PDO::PARAM_INT);
        
$sth->bindParam(10,    $data["title"],            PDO::PARAM_STR);
        
$sth->bindParam(11,    $id,                    PDO::PARAM_INT);
        
$sth->execute();

    }

    public function 
search($search) {
        
preg_match('/imdb.com\/title\/(tt[0-9]+)/ms'$search$match);
        if (
strlen($match[1]) > 1) {
            
$imdb =  $this->getDataByImdbId($match[1]);

            return array(
$imdb);

        } else {
            
$searchWords Helper::searchTextToWordParams($search);

            
$sth $this->db->query('SELECT id, title, year, photo, imdbid, seasoncount FROM imdbinfo WHERE MATCH (title) AGAINST (' $this->db->quote($searchWords) . ' IN BOOLEAN MODE) ORDER BY year DESC LIMIT 8;');
            return 
$sth->fetchAll(PDO::FETCH_ASSOC);
        }
    }

    public function 
updateImdbToplist () {
        if (
$_SERVER['SERVER_ADDR'] != $_SERVER["REMOTE_ADDR"]) {
            throw new 
Exception("Must be run by server."401);
        }

        
$data file_get_contents("http://akas.imdb.com/boxoffice/rentals");
        
preg_match_all("/\/title\/(.*?)\//"$data$matches);
        
$array $matches[1];

        unset(
$array[0]);

        
$this->db->query('DELETE FROM imdbtop20');

        foreach(
$array as $a) {
            
$this->db->query('INSERT INTO imdbtop20(imdbid) VALUES('.$this->db->quote($a).')');
            
$this->getDataByImdbId($a);
        }
    }
}
Reply With Quote
  #2  
Old 28th January 2016, 05:23
joeroberts's Avatar
joeroberts joeroberts is offline
BT.Manager Owner
 
Join Date: Jan 2008
United States
Posts: 2,113
Default
there are sooooooo many reasons this is not working
1 your not calling to the function
2 $db is not defined
3 tbdev dose not use a data base class function

just to name a few reasons
__________________
Do not ask me to help you work on your site that is not phpMyBitTorrent
Do not ask me to make a mod for any other source
Do not Ask me to setup your site.
I will no longer help you setup your site, there is a setup script if you have trouble with it post in the forum here or in BT.Manager™ forum
My Current Demo is here http://demo.btmanager.org/
Reply With Quote
  #3  
Old 29th January 2016, 12:04
alexxandeer alexxandeer is offline
Member
 
Join Date: May 2009
Portugal
Posts: 11
Default
Quote:
Originally Posted by joeroberts View Post
there are sooooooo many reasons this is not working
1 your not calling to the function
2 $db is not defined
3 tbdev dose not use a data base class function

just to name a few reasons
Yes It should,
Please look the source.

https://github.com/swetorrentking/rartracker

/api/MovieData.php
Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump



All times are GMT +2. The time now is 13:18. vBulletin skin by ForumMonkeys. Powered by vBulletin® Version 3.8.11 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions Inc.