spacer
spacer search

SwissCenter

Search
spacer
Main Menu
Home
Documentation + FAQ
Screenshots
Downloads
Forums
Bug Tracking
History
Login
Username

Password

Remember me
?
No account yet?

Locations of visitors to this page

 
Home arrow Forums

SwissCenter Forums  


<< Start < Previous 1 2 Next > End >>
New movieparser discussion - 2010/02/10 05:51 Hi Pernod, I've been thinking about the new movie parsers, were you thinking something like this?:

Code:

   EditNo longer relevantSee my latest post.

Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/11 09:19 Hi!

i would like to contribute to the new parser system aswell but i have to "learn" a bit more php first. however since Utsi is already on the task i would like to add some points to be considered....

  • Parsers should be chainable

  • the Parser should have a Method to first Check if it gives a hit on a title at all, otherwise all subsequent calls are pointless

  • Parsrers should provide an auto and a manual mode, running in auto when scanning mediapaths and in manual when called from the config pages. So when in manual mode and there is no accurate match, the user could be asked to chose the proper match!



i already did some chaining quite a while ago, but its quit limited cause of the current structure of the parsers ... anyways to give an idea of what i have in mind here's the code
Code:

 <?php /**************************************************************************************************    SWISScenter Source        This is one of a selection of scripts all designed to obtain information from the internet    relating to movies that the user has added to their database. It typically collects    information such as genre, year of release, synopsis, directors and actors.           NOTE: This parser is _NOT_ an official part of SWISScenter, and is not supported by the    SWISScenter developers.        Version history:    09-Mar-2009: v0.1:     First internal test  *************************************************************************************************/   require_once( SC_LOCATION."/ext/json/json.php");   /**    * Searches the multiple sites for movie details    *    * @param integer $id    * @param string $filename    * @param string $title    * @return bool    */   function extra_get_movie_details($id$filename$title)   {     $Result false;     $parser_dir SC_LOCATION.'/ext/parsers';     $Classes = array("ofdbzell","zelluloid");        for ($i 0$i<count($Classes); $i++)     {       if ( file_exists($parser_dir.'/movie/classes/'.$Classes[$i].'Class.php') )       {         send_to_log(4,'Including parser Classfile '.$parser_dir.'/movie/classes/'.$Classes[$i].'Class.php');         require_once( $parser_dir.'/movie/classes/'.$Classes[$i].'Class.php' );         $myInstance = new $Classes[$i];         $Result=$myInstance->extra_get_movie_details($id$filename$title);         if($Result==true)           break;                }       else       {         send_to_log(4,'Failed to include parser Classfile '.$parser_dir.'/movie/classes/'.$Classes[$i].'Class.php');       }     }          return $Result;   }    /**************************************************************************************************                                                End of file  **************************************************************************************************/ ?>

this could with new parsers nicely extended, e.g. first calling themoviedb for a poster and only if that fails try the other parsers, but always getting the synopsis from ofdb and the cast from zelluloid
Player : PopcornHour C200 (wired, GigaBit), Pinnacle ShowCenter 250HD (wlan)
Server 1: XP Pro SP2+ (Simese 2.6.4, SwissCenter current SVN)
Server 2: XP Pro SP2+ (Apache 2.2.14, PHP v5.3.1, MySQL 5.1.41, SwissCenter current SVN)
Spec : Intel Core 2 Duo E6750, 2x 2.67GHz, 3GB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/11 10:14 i dont know if its good for anything, but i had already started a kind of layout before Utsi posted his. Its the same as with his code, this never actually run in php, and i have no idea if the syntax is correct in the way i did it... but hope nigel will get the idea and can make the best out of the ideas we came up with sofar....

here goes

Parser Base Class
Code:

 abstract class ParserBase {     protected $_id;     protected $_filename;     protected $_title;     protected $_mode;          protected $best_match false;     protected $html false;     //properties telling what the Parser is capable of     public $CanGetCover false;     public $CanGetSynopsis false;         public $CanGetRating false;     public $CanGetCast false;     public $CanGetGenre false;     public $CanGetCertificate false;     public $CanGetYear false;         //Base Functiontemplate to see if the Parser finds a match at all        abstract public function FindTitle();          //Base Funtiontemplate to get the actual Match, in an extra function     //to be able to retry to get the content if it fails on the first attempt     abstract public function GetMatch();          //Templates for the Function to retrieve the actual data     abstract public function GetYear();     abstract public function GetDirectors();     abstract public function GetActors();     abstract public function GetGenres();     abstract public function GetSynopsis();     abstract public function GetRating();     abstract public function GetCertificate();          //Init Function to be called first to set the needed Base Infos     public function Init($id$filename$title$mode) {         $this->_id=$id;         $this->_filename=$filename;         $this->_title=$title;         $this->_mode=$mode;     }              protected function VerifyState() {         return ($best_match !== false && $html !== false);     } }



Sample Parse
Code:

 class ParserExample extends ParserBase {     $site_url     'http://www.zelluloid.de/';     $zelluloid_url;          // Constructor Setting the Properties of this Parser     public function __construct() {         $this->CanGetSynopsis true;         $this->CanGetCast true;         $this->CanGetGenre true;         $this->CanGetRating true;     }          //Parser implementation of FindTitle     public function FindTitle() {         $_ret false;              $results google_api_search('allintitle:'.this->_title,"zelluloid.de");         if (count($results)==0)             send_to_log(4,"No Match found.");         else         {             if($_mode=="auto")             {                 $best_match google_best_match(this->$title.' | zelluloid.de',$results,$accuracyZ);                 if ($best_match !== false)                 {                     $_ret true;                     $this->GetMatch();                 }             }             else             {                 //TODO: Add Manual Mode - No Idea How To....             }         }         return $_ret;     }          public function GetMatch() {         if ($best_match === false)         {             send_to_log(4,"No Match found. - forgot to call FindTitle?");             return false;         }         $zelluloid_url urldecode($best_match->url);         if (strpos($zelluloid_url,'index.php3')==false)         {             $zelluloid_url str_replace('details.php3','index.php3',$zelluloid_url);         }         send_to_log(6,'Fetching information from: '.$zelluloid_url);         $html file_get_contents$zelluloid_url );          if($html===false)             send_to_log(2,'Failed to access the URL.');                  return $html!==false;     }          public function GetYear() {         if(VerifyState())         {             // Year             $start strpos($html,"az.php3?l=");             $end strpos($html,"<BR>",$start+1);             $html_year substr($html,$start,$end-$start);             $matches get_urls_from_html($html_year,"j=");             return $matches[2][0];                 }         else           return "";     }          public function GetDirectors() {         // -> this is just an example     }          public function GetActors() {         // -> this is just an example     }          public function GetGenres() {         // -> this is just an example     }          public function GetSynopsis() {         // -> this is just an example     }          public function GetRating() {         // -> this is just an example     }          public function GetCertificate() {         // -> this is just an example     } }



Sample Calling of Parser
Code:

 class ParserCallerExample {     require_once( SC_LOCATION."/ext/parsers/movie/Classes/ParserExampleClass.php");     function extra_get_movie_details($id$filename$title$mode)     {         $ClassN="ParserExample";         $myInstance = new $ClassN;         $myInstance->Init($id$filename$title$mode);                  if($myInstance->CanGetYear)           $year=$myInstance->GetYear()         if($myInstance->CanGetCast)         {           $directos=$myInstance->GetDirectors()           $actors=$myInstance->GetActors()         }                   /*          And so on, eventually calling other parsers and finally adding the info to the db          .          .          .          scdb_set_movie_attribs ($id, $columns);                          */              } }



These Examples are incomplete, since i lacked the time to finish them, and since usti also came up with a solution i am uncertain if it is useful to continue anyway.....

And as mentioned i dont have the slightest idea, if this is valid php at all

Hopefully its worth a few ideas at least

Greetings
KMan
Player : PopcornHour C200 (wired, GigaBit), Pinnacle ShowCenter 250HD (wlan)
Server 1: XP Pro SP2+ (Simese 2.6.4, SwissCenter current SVN)
Server 2: XP Pro SP2+ (Apache 2.2.14, PHP v5.3.1, MySQL 5.1.41, SwissCenter current SVN)
Spec : Intel Core 2 Duo E6750, 2x 2.67GHz, 3GB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/11 16:52 I have abandoned the whole static thing since static is the Devil's doing, so now the constant class, interface and superclass look like this:

Code:

  abstract class MovieConstants {     public static $IMDBTT "IMDBTT";     public static $TITLE "TITLE";     public static $ACTORS "ACTORS";     public static $DIRECTORS "DIRECTORS";     public static $GENRES "GENRES";     public static $LANGUAGES "LANGUAGES";     public static $YEAR "YEAR";     public static $CERTIFICATE "CERTIFICATE";     public static $EXTERNAL_RATING_PC "EXTERNAL_RATING_PC";     public static $MATCH_PC "MATCH_PC";     public static $DETAILS_AVAILABLE "DETAILS_AVAILABLE";     public static $SYNOPSIS "SYNOPSIS";     public static $TRAILER "TRAILER";     public static $POSTER "POSTER";     public static $allMovieConstants = array (         IMDBTT,         TITLE,         ACTORS,         DIRECTORS,         GENRES,         LANGUAGES,         YEAR,         CERTIFICATE,         EXTERNAL_RATING_PC,         MATCH_PC,         DETAILS_AVAILABLE,         SYNOPSIS,         TRAILER,         POSTER     ); } interface Parser {     //Function that parses and returns a property based on a string with the property name, like ' ACTORS', 'TITLE' etc     public function parseProperty($propertyName);     public function getProperty($propertyName);     //method to determine if the property is supported. true/false     public function isSupportedProperty($propertyName);     //Constructor     public function __construct($id null$filename null$title null);     //returns the name of the parser     public static function getName(); } abstract class Movieparser {     protected $id;     protected $filename;     protected $title;     protected $populatePageCalledOnce;     protected $page;     public $supportedProperties;          public function __construct($id null$filename null$title null) {         $this->init($id$filename$title);         if (!isset ($this->page) && isset ($this->id) && isset ($this->filename) && isset ($this->title)) {             if (!$this->populatePageCalledOnce) {                 $this->populatePage();                 $this->populatePageCalledOnce true;             }else{send_to_log(1"Tried it and it didn't work befor, won't work now!");}         } else             send_to_log(1"Movieparser did not meet criteria for populating page...");     }          public function init($id$filename$title) {         if ($filename != null)             $this->filename $filename;         if ($id != null)             $this->id $id;         if ($title != null)             $this->title $title;     }     public function getSupportedProperties() {         return $this->supportedProperties;     }     public function setSupportedProperties($supportedProperties) {         send_to_log(1"setSupportedProperties called");         return $this->supportedProperties $supportedProperties;     }     public function getProperty($propertyName) {         return self :: $properties[$propertyName];     }     //array to contain the attributes.      public static $properties = array ();     public function isSupportedProperty($propertyName) {         send_to_log(1"asking if supports: " $propertyName);         for ($i 0$i count($this->supportedProperties); $i++) {             if ($this->supportedProperties[$i] == $propertyName) {                 send_to_log(1"yes i do!");                 return true;             }         }         return false;     }     public function setProperty($propertyName$value) {         self :: $properties[$propertyName] = $value;     }     public function parseProperty($propertyName) {         send_to_log(1"Movieparser entering parse property...");         if (isset ($this->page)) {             send_to_log(1"Movieparser page is set...");             //if the property was not yet set, do the required job             switch ($propertyName) {                 case "ACTORS" :                     return $this->parseActors();                     break;                 case "DIRECTORS" :                     return $this->parseDirectors();                     break;                 case "SYNOPSIS" :                     return $this->parseSynopsis();                     break;                 case "EXTERNAL_RATING_PC" :                     return $this->parseExternal_Rating_Pc();                     break;                 case "MATCH_PC" :                     return $this->parseMatch_Pc();                     break;                 case "YEAR" :                     return $this->parseYear();                     break;                 case "GENRES" :                     return $this->parseGenres();                     break;                 case "POSTER" :                     return $this->parsePoster();                     break;             }         }     } }



Leaving the child class very simple, like this:

Code:

  require_once (SC_LOCATION "/ext/json/json.php"); class wwwFILMUPit extends Movieparser implements Parser {     public static function getName() {         return "www.FILMUP.it";     }     private $site_url 'http://filmup.leonardo.it/';     private $accuracy;     public $supportedProperties = array (         "ACTORS",         "DIRECTORS",         "SYNOPSIS",         "TITLE",         "EXTERNAL_RATING_PC",         "MATCH_PC",         "YEAR",         "GENRES",         "POSTER"     );     protected function parseActors() {         $html $this->page;         $actors explode(","html_entity_decode(substr_between_strings($html'Cast:&nbsp;</font>''</font>'), ENT_QUOTES));         parent :: setProperty("ACTORS"$actors);         return $actors;     }     protected function parseDirectors() {         $html $this->page;         $directors explode(","html_entity_decode(substr_between_strings($html'Regia:&nbsp;</font>''</font>'), ENT_QUOTES));         parent :: setProperty("DIRECTORS"$directors);         return $directors;     }     protected function parseSynopsis() {         $html $this->page;         $synopsis html_entity_decode(substr_between_strings($html'Trama:<br>''<br>'), ENT_QUOTES);         parent :: setProperty("SYNOPSIS"$synopsis);         return $synopsis;     }     protected function parseYear() {         $html $this->page;         $year substr_between_strings($html'Anno:&nbsp;</font>''</font>');         parent :: setProperty("YEAR"$year);         return $year;     }     protected function parseExternal_Rating_Pc() {         $html $this->page;         $opinioni_uid preg_get('/opinioni\/op.php\?uid=(\d+)"/'$html);         if (!empty ($opinioni_uid)) {             $html file_get_contents($this->site_url 'opinioni/op.php?uid=' $opinioni_uid);             $user_rating preg_get('/Media Voto:.*<b>(.*)<\/b>/Uism'$html);             $rating = (empty ($user_rating) ? '' $user_rating 10);             send_to_log(1"External rating = " $rating);         }         parent :: setProperty("EXTERNAL_RATING_PC"$rating);         return $rating;     }     protected function parseMatch_Pc() {         if (isset ($this->accuracy)) {             parent :: setProperty("MATCH_PC"$this->accuracy);             return $this->accuracy;         }     }     protected function parseTitle() {         $html $this->page;         $title substr_between_strings($html'<title>''</title>');         parent :: setProperty("TITLE"$title);         return $title;     }     protected function parseGenres() {         $html $this->page;         $genres explode(","html_entity_decode(substr_between_strings($html'Genere:&nbsp;</font>''</font>'), ENT_QUOTES));         parent :: setProperty("GENRES"$genres);         return $genres;     }     protected function parsePoster() {         if (file_albumart($this->filenamefalse) == '') {             $html $this->page;             $img_addr get_html_tag_attrib($html'img''locand/''src');             if ($img_addr !== false) {                 $poster["img_addr"] = $img_addr;                 $poster["site_url"] = $this->site_url;                 parent :: setProperty("POSTER"$poster);                 return $poster;             }             //indicate failure             return;         }     }     //populate the page variable. This is the part of the html thats needed to get all the properties     protected function populatePage() {         // The site URL (may be used later)         $accuracy 0;         // Get search results from google.         send_to_log(1"title from calling class = " $this->title);         send_to_log(4"Searching for details about " $this->title " online at " $this->site_url);         $results google_api_search("Scheda: " $this->title"filmup.leonardo.it");         if (count($results) == 0) {             send_to_log(4"No Match found.");             $html false;         } else {             $best_match google_best_match('FilmUP - Scheda: ' $this->title$results$this->accuracy);             if ($best_match === false)                 $html false;             else {                 $filmup_url $best_match->url;                 send_to_log(6'Fetching information from: ' $filmup_url);                 $html file_get_contents($filmup_url);             }         }         if ($html != false) {             $this->page $html;             return true;         }         //no return value, indicate failure         return;     } }

Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/12 04:28 On second thought,
the getProperty() function should problably be renamed to parseProperty() since that's what's actually done. Then rename the getMovieProperty() to getProperty().

For better code readability we should also be considering adding more private static variables in the super class instead of putting it all in the same array. We could limit the array to contain only properties from the html.

I'm also thinking about making a super class or helper class for www.imdb.com and www.imdb.com[smartsearch] where all the small functions could be put.

Other than that, I think the structure is just about done. Now it's time to find out how the calling code should work - how to handle attributes that didn't get populated and such.
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/12 08:23 All good stuff so far

As you say we should have some sort of helper class for common functions such as ChangeWordOrder.

The parsers should also have a set of input properties such as title, year, imdb ref to enable it to return matches according to all available details.
Players : Netgear EVA700 | Popcorn A-100 (091202) | Popcorn A-200 (100208)
Webserver : Simese v2.6.4 | Apache 2.2.14 | PHP v5.2.12 | MySQL v5.1.32
Server : Windows 7 Home Premium 64bit
Spec : Intel C2Q Q6600 - 4GB RAM - 3TB HDD
AV : Pioneer VSX-915 | Samsung LE40C650
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/12 14:46 Glad you think this is something we can work with. I'm having a bit of a struggle with php.

ChangeWordOrder sounds like a generic typical string util. We can make a superclass with generic methods and subclasses for parser spesific methods where needed.

I'm not quite sure if I see what you mean by that we need more input methods. The way I see it, the code could work like this in the config screen:

1) I know the name of all the available properties.
2) I ask each parser if it supports each property.
3) I display one select-box per property populated with the parsers that support the property.
4) I save the information about which parser should be used for which property.

When doing media search I know which parser to use for which property.
1) Ask the selected parser for the selected property aka wwwIMDBcom:arseProperty("ACTORS")
2) The code in wwwIMDBcom will discover that the html page hasn't been loaded yet, so it will 1)get the page, 2)store the page in memory, 3) get the ACTORS from the page, 4) Store the "ACTORS" property in memory and 5) Return "ACTORS" property to the caller.

The next time wwwIMDBcom gets asked for anther property for the same movie, it already has the html in memory, so it only needs to get the property from the html, store the property in memory and return it to the caller.

Does that sound better?

If you for some reason need to ask for the same property twice, you can get it by calling the static superclass method by Movieparser::getProperty("ACTORS"). That may come in handy in case you want to do all the parsing, and in the end get all the properties.

By the way: I've updated the code in my post. You can save it to a file and place it in the movieparser folder to see an example on how to populate the dropdowns in the config screen and how to use the parsers to get properties. I've asked different parsers for the same properties for illustration purposes only
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/12 17:41 Good news! I've made a proof of concept and it seems to work great for the few parsers and properties I've tested.

Replace your current config_movie.php with the attached one and extract the parserclasses.php to your movieparser directory.
File Attachment:
File name: proof_of_concept.zip
File size:11746 bytes
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/13 08:59 I installed this to take a look at it and now see where ya'll are going with this... and it looks great.

So basically for every video option we'll be able to pick the site where we want to get the information... sweet

Will there be a default in case the selection fails to get the requested information?
Showcenters 1000g/250HD/Popcorn Hour A-100
Netgear HDX101 Powerline Adapters
Windows XP SP3 Simese 2.6.4 Beta SwissCenter latest SVN
NAS Server Intel PD 2.66Ghz/2GB Mem/1.5TB Storage
Hauppauge HVR 1600 GB-PVR
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/13 14:31 I'm thinking about how to solve failed attempts. How about having two options for each property, so you can select where to find it if the first parser failed?

I'm also thinking that we should probably have a test for each parser in the system test page, or else maintenance could get hard.
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/15 04:13 Utsi wrote:
I'm thinking about how to solve failed attempts. How about having two options for each property, so you can select where to find it if the first parser failed?

I'm also thinking that we should probably have a test for each parser in the system test page, or else maintenance could get hard.


as i mentioned earlier, i strongly believe that parsers should be chainable, so that if one parser doesnt get a match on something then the 2nd can try and so on. i'm german and so e.g. the imdb synopsis in most cases isnt good for me (better say for my wife, but thats a total different story ) anyways, currently i have the following implementation:

1st try ofdb, if that fails try zelluloid.de, if that also fails try imdb...
and would really want to keep the possibility to keep that concept. so i would think we would need a little bit more complex configuration allowing for more then one fallbacks....
I'm dont have a good solution on how this should look at the moment myself, though....
Player : PopcornHour C200 (wired, GigaBit), Pinnacle ShowCenter 250HD (wlan)
Server 1: XP Pro SP2+ (Simese 2.6.4, SwissCenter current SVN)
Server 2: XP Pro SP2+ (Apache 2.2.14, PHP v5.3.1, MySQL 5.1.41, SwissCenter current SVN)
Spec : Intel Core 2 Duo E6750, 2x 2.67GHz, 3GB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/15 07:38 Yes, it would be possible to try more than 2 times with my solution. In fact, it's no limit how many parsers you can try for one attribute. The only limitation is the GUI, it would look extremely ugly with too many columns with select boxes. I've already configured my local system to display two boxes per property, but in one single column, so it doesn't look nice. Don't know if the current framework supports several select boxes side by side.

I am soon finished with the architecture, but I have to polish it up before starting implementing to avoid having to correct the same thing a bunch of places. I also hope one of the PHP experts (Pernod or Rob) will conduct a full code review so I can avoid mass producing potentially crappy code.

Right now I'm thinking about how to handle movie site downtime. The way it works now the whole system will hang for hours if a site is down. Think I'll just flag it as offline if it can't retrieve the page the first time.
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/17 16:15 I've enabled typing in how many times you want the parser to re-try and dynamically populating the config screen with as many columns as needed. The usage of the parser classes is very simple:

Code:

  function new_movie_lookup($movie_id$filename$title) {     $oneInstancePerParserArray = array ();     $retrycount get_sys_pref('parser_retry_count'1);     for ($x 0$x $retrycount$x++) {         for ($i 0$i count(MovieConstants :: $allMovieConstants); $i++) {             $parserclass get_sys_pref('parser_' $x '_' MovieConstants :: $allMovieConstants[$i]);             if ($parserclass != '') {                 {                     if (!isset ($oneInstancePerParserArray[$parserclass])) {                         $parser = new $parserclass ($movie_id$filename$title);                         $oneInstancePerParserArray[$parserclass] = $parser;                     } else {                         $parser $oneInstancePerParserArray[$parserclass];                     }                 }                 $propertyCheck $parser->getProperty(MovieConstants :: $allMovieConstants[$i]);                 if (!isset ($propertyCheck))                     $returnval $parser->parseProperty(MovieConstants :: $allMovieConstants[$i]);                 send_to_log(1"returnval: " $returnval);                 if (!isset ($returnval)) {                     send_to_log(1"ERROR! Parsing of " MovieConstants :: $allMovieConstants[$i] . " from " $parser->getName() . " failed! : ");                 }             }         }     }     $columns = array (         "YEAR" => $parser->getProperty("YEAR"),         "CERTIFICATE" => db_lookup('certificates''name''cert_id'$parser->getProperty("RATING")),         "EXTERNAL_RATING_PC" => $parser->getProperty("EXTERNAL_RATING_PC"),         "MATCH_PC"          => $parser->getProperty("MATCH_PC"),         "DETAILS_AVAILABLE" => 'Y',         "SYNOPSIS" => trim(trim($parser->getProperty("SYNOPSIS")), " |")     );     scdb_add_directors($movie_id$parser->getProperty("DIRECTORS"));     scdb_add_actors($movie_id$parser->getProperty("ACTORS"));     scdb_add_genres($movie_id$parser->getProperty("GENRES"));     scdb_add_languages($movie_id$parser->getProperty("LANGUAGES"));     scdb_set_movie_attribs($movie_id$columns);     $poster $parser->getProperty("POSTER");     if ($poster != null && $poster != false) {         send_to_log(1"WIll try to save it: filename:" $filename "poster ext" $poster["ext"]);         file_save_albumart(add_site_to_url($poster["img_addr"], $poster["site_url"]), dirname($filename) .         '/' file_noext($filename) . '.' file_ext($poster["img_addr"]), $title);     }     return true; }



The worst job now will be to clean up the SmartSearch parser, the other parsers are fairly simple to make.
File Attachment:
File name: SwissShot.png
File size:205453 bytes
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/17 16:30 Release another POC so we can try it Showcenters 1000g/250HD/Popcorn Hour A-100
Netgear HDX101 Powerline Adapters
Windows XP SP3 Simese 2.6.4 Beta SwissCenter latest SVN
NAS Server Intel PD 2.66Ghz/2GB Mem/1.5TB Storage
Hauppauge HVR 1600 GB-PVR
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/17 16:35 POC?? Players : Netgear EVA700 | Popcorn A-100 (091202) | Popcorn A-200 (100208)
Webserver : Simese v2.6.4 | Apache 2.2.14 | PHP v5.2.12 | MySQL v5.1.32
Server : Windows 7 Home Premium 64bit
Spec : Intel C2Q Q6600 - 4GB RAM - 3TB HDD
AV : Pioneer VSX-915 | Samsung LE40C650
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/17 16:35 Pernod wrote:
POC??
Proof of Concept, like he did last time...
Showcenters 1000g/250HD/Popcorn Hour A-100
Netgear HDX101 Powerline Adapters
Windows XP SP3 Simese 2.6.4 Beta SwissCenter latest SVN
NAS Server Intel PD 2.66Ghz/2GB Mem/1.5TB Storage
Hauppauge HVR 1600 GB-PVR
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/18 01:40 Stu2j wrote:
Release another POC so we can try it

Patience

Had to comment out the other parser and only do the Italian one to get it right. I'm pretty happy with the current structure, except for all the property name duplication.

Pernod: Do you have any suggestion on how to use the MovieConstants instead of having to type "ACTORS" etc everywhere?
Edit: Nevermind, I'm just going to let the superclass extend MovieConstants.

I'm considering dropping the SmartSearch parser as a parser, and rather insert the logic on a higher level and making it optional. After all, removal of metadata and such is useful for all parsers.
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/19 17:30 Here's another POC :-D

Been spending way too much time in front of the computer lately, so I think I deserve some kind of big, flashing logo

This is just another step in what I hope is the right direction. I think this is the time where some experts should look at the code before we start mass producing sub optimal code. I think I'll outsource some of the parsers to Germany or maybe UK when everything is in place.

I have integrated the smartsearch functionality in the superclass so it can be used on all sites, but I haven't made it configurable yet (planning on making the searching for folder names as movie titles optional). I've taken the liberty to switch the actors-logic with the one from my parser since there's no point in having just some of the actors when the stars are being left out.

Hade to do a little trick in the moviedb parser: It seems that it really hates special characters, so had to make sure it used the imdbtt if it existed. BUT - the imdbtt search is very unreliable, so if that failed, I had to make it call itself and ignore the imdbtt on the second pass.

I also plan on making some unit tests that can be accessed through a config page so we can easily see what's wrong.

Pernod, what do you say?
File Attachment:
File name: poc2.zip
File size:29274 bytes
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/19 19:05 Here's a patch that makes the imdb parser complete, I think.
File Attachment:
File name: poc2_patch.zip
File size:11615 bytes
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/20 05:59 I've finished the apple-parser now, but only in theory. The callbacks are causing difficulties, I don't know how to make it work from this context. Pernod, please advice..
Code:

  <?php /**************************************************************************************************    SWISScenter Source    This is one of a selection of scripts all designed to obtain information from the internet    relating to the movies that the user has added to their database. It typically collects    information such as title, genre, year of release, certificate, synopsis, directors and actors.  *************************************************************************************************/ require_once (SC_LOCATION '/base/apple_trailers.php'); class wwwAPPLEcom extends Movieparser implements Parser {     private $site_url 'http://www.apple.com/trailers';     public $supportedProperties = array (         MOVIE_ACTORS,         MOVIE_DIRECTORS,         MOVIE_YEAR,         MOVIE_SYNOPSIS,         MOVIE_POSTER,         MOVIE_TRAILER,         MOVIE_GENRES,         MOVIE_MATCH_PC,         MOVIE_RATING,         MOVIE_TITLE     );     public static function getName() {         return "www.apple.com";     }     protected function populatePage($title_in$year_in null) {         if(isset($title_in))             $title $title_in;             else $title $this->title;                      // Perform search for matching titles         send_to_log(4"Searching for details about " $title " online at " $this->site_url);         $apple = new AppleTrailers();         $trailers $apple->quickFind($title);         var_dump($trailers);         // Examine returned page         if (count($trailers) == 0) {             // There are no matches found... do nothing             $this->accuracy 0;             send_to_log(4"No Match found.");         } else {             $trailer_titles = array ();             foreach ($trailers as $index => $trailer)                 $trailer_titles[$index] = $trailer["title"];             // There are multiple matches found... process them             $index best_match($title$trailer_titles$this->accuracy);         }         // Determine attributes for the movie and update the database         if ($this->accuracy >= 75) {             $this->page $trailers[$index];             return true;         } else {             return false;         }     }     protected function parseSynopsis() {         $trailers $this->page;         $synopsis get_trailer_description($trailers);         $this->setProperty(MOVIE_SYNOPSIS$synopsis);         return $synopsis;     }     protected function parseYear() {         $trailers $this->page;         $year date('Y'strtotime($trailers["releasedate"]));         $this->setProperty(MOVIE_YEAR$year);         return $year;     }     protected function parseTrailer() {         $trailers $this->page;         $trailer_xmls get_trailer_index($trailers);         $trailer_urls get_trailer_urls($trailer_xmls[1][0]);         $trailer array_pop($trailer_urls[2]);         $this->setProperty(MOVIE_TRAILER$trailer);         return $trailer;     }     protected function parseActors() {         $trailers $this->page;         $actors $trailers["actors"];         $this->setProperty(MOVIE_ACTORS$actors);         return $actors;     }     protected function parseTitle() {         $trailers $this->page;         $title $trailers["title"];         $this->setProperty(MOVIE_TITLE$title);         return $title;     }     protected function parseDirectors() {         $trailers $this->page;         $directors $trailers["director"];         $this->setProperty(MOVIE_DIRECTORS$directors);         return $directors;     }     protected function parseGenres() {         $trailers $this->page;         $genres $trailers["genre"];         $this->setProperty(MOVIE_GENRES$genres);         return $genres;     }     protected function parsePoster() {         $trailers $this->page;         if (!empty ($trailers["poster"])) {             $poster["poster_url"] = $trailers["poster"];             $this->setProperty(MOVIE_POSTER$poster);             return $poster;         }     }     protected function parseMatch_Pc() {         $this -setProperty(MOVIE_MATCH_PC$this->accuracy);         return $this->accuracy;     }     protected function parseRating() {         $trailers $this->page;         $rating $trailers["rating"];         $this->setProperty(MOVIE_RATING$rating);         return $rating;     } } /**************************************************************************************************                                                End of file  **************************************************************************************************/ ?>  



I also tried placing the lines:
$apple = new AppleTrailers();
$trailers = $apple->quickFind($title);

outside of the class in a separate function, didn't work. Is the script working in today's solution or have they updated the site?
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/21 05:28 Poc3. This one has the options for smartsearch and foldersearch + full imdb + movidb functionality.

If you tell the parser to not get the title, it will keep the current title.

Extract the movie folder to <sc patch>/ext/parsers/ and config_movie and video_obtain_info to their respective folders.

This works for all of my movies. It would be sweet if someone with larger movie collections would confirm too ("delete from movies" in edit database and a full rescan).
File Attachment:
File name: poc3.zip
File size:29919 bytes
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/21 08:23 Utsi wrote:
I also plan on making some unit tests that can be accessed through a config page so we can easily see what's wrong.

Pernod, what do you say?

I haven't had any time yet to look at any of this. From what I've seen so far from the code it looks good though. Some unit tests, similar to what we have for internet radio, would be good too.
Players : Netgear EVA700 | Popcorn A-100 (091202) | Popcorn A-200 (100208)
Webserver : Simese v2.6.4 | Apache 2.2.14 | PHP v5.2.12 | MySQL v5.1.32
Server : Windows 7 Home Premium 64bit
Spec : Intel C2Q Q6600 - 4GB RAM - 3TB HDD
AV : Pioneer VSX-915 | Samsung LE40C650
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/21 17:23 Added a patch for the above poc3 release, now with support for German imdb to satisfy kman and our other German friends

This actually only gets the imdb and title and uses that to get the rest from the regular imdb.
File Attachment:
File name: poc3_German_patch.zip
File size:3774 bytes
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/02/27 08:42 Pernod wrote:
I haven't had any time yet to look at any of this. From what I've seen so far from the code it looks good though. Some unit tests, similar to what we have for internet radio, would be good too.

I'm thinking about how to make the unit tests. How about letting the parser classes contain a test string that we know works and create a dummy file from that in the cache directory and try to obtain info from that?

Secondly, should we have a separate test page for the parser unit tests or should we have it in the same as the others? That main test page could start to hang for quite a while if it has too many tests.

Thirdly, how about creating a feature branch for this? I find it much easier to keep track of the changes I make if I can check in the code. Further more, I can merge the latest changes from trunk onto the branch so I don't get out of synch.
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/09 03:27 Utsi wrote:

This works for all of my movies. It would be sweet if someone with larger movie collections would confirm too ("delete from movies" in edit database and a full rescan).


I tried this. I did "delete from movies" as instructed, but alas...
All movies I checked so far say "There is no synopsis available.". :'(
Running latest SC & Simese on Windows 2008 (64 bit).
Obviously, I unpacked the files as described before I did this..

Anything I missed?

Regards,
D.
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/09 07:23 No, I can't see why this would occour. Where do you get your synopsis from, imdb or themoviedb? Can you confirm the rest, except for synopsis works?

I tested now and synopsis still works from both imdb and themoviedb. See the attached file for how your config screen should look like.

If this doesn't work, please set your logging level to 8 and try to parse a single movie and send med the log file.
File Attachment:
File name: SwissConfigScreen.jpg
File size:129485 bytes
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/09 17:53 My smartsearch parser is no longer picking up the year... Showcenters 1000g/250HD/Popcorn Hour A-100
Netgear HDX101 Powerline Adapters
Windows XP SP3 Simese 2.6.4 Beta SwissCenter latest SVN
NAS Server Intel PD 2.66Ghz/2GB Mem/1.5TB Storage
Hauppauge HVR 1600 GB-PVR
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/09 19:15 Stu2j wrote:
My smartsearch parser is no longer picking up the year...
IMDb changed their page last week, the parser will need updating.
Players : Netgear EVA700 | Popcorn A-100 (091202) | Popcorn A-200 (100208)
Webserver : Simese v2.6.4 | Apache 2.2.14 | PHP v5.2.12 | MySQL v5.1.32
Server : Windows 7 Home Premium 64bit
Spec : Intel C2Q Q6600 - 4GB RAM - 3TB HDD
AV : Pioneer VSX-915 | Samsung LE40C650
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/10 03:57 Here's a fix for imdb year.
File Attachment:
File name: wwwIMDBcom_year_fix.zip
File size:3216 bytes
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/10 07:44 Utsi wrote:
If this doesn't work, please set your logging level to 8 and try to parse a single movie and send med the log file

My config is the same, I stopped/started the server, imported one file (after changing the logging to 8) but the problem remains.

Maybe I'm doing something wrong, but I've attached the logfile.

Tnanks.
D.

edit:/ The file attached had old entries in it, I'll have to look again tonight when I'm home...
Will keep you posted.
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/10 12:37 Dutchee wrote:
Utsi wrote:
The file attached had old entries in it, I'll have to look again tonight when I'm home....

Downloaded and installed the new IMDB parser, and tried again.

New log file attached - I started with a clean log, and added a screenshot..

Hope you can help.

Grtz,
D.
File Attachment:
File name: log_00004.zip
File size:53377 bytes
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/10 14:35 That helped, but didn't help me solve it, I'm afraid.

What I can tell from your input is that everything works just fine until it tries to save the info. It saves the directors, actors, genres, then it dies. Looks like you've not configured it to get the languages, by the way, it could be interesting to see what happens if you select that as well.

The next step now would be to set the logging level to 9 to find out if it fails inside the SC function scdb_add_genres or not.

My guess is that there's something wrong with your database, but that's just a guess Maybe it would be worth a shot to re-create the database if everything else fails.
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/10 14:56 My guess is that there's something wrong with your database, but that's just a guess Maybe it would be worth a shot to re-create the database if everything else fails.
The logfile is also showing failure saving themes which would suggest the database is at 1.22 and not the latest SVN.

@Dutchee: You must update to the latest development release before you can use this.
Players : Netgear EVA700 | Popcorn A-100 (091202) | Popcorn A-200 (100208)
Webserver : Simese v2.6.4 | Apache 2.2.14 | PHP v5.2.12 | MySQL v5.1.32
Server : Windows 7 Home Premium 64bit
Spec : Intel C2Q Q6600 - 4GB RAM - 3TB HDD
AV : Pioneer VSX-915 | Samsung LE40C650
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/10 17:53 OK, I've been using POC3 and it appears to be working REALLY well and I'm really pleased with it... except...

...it does not appear to be working with SwissMonitor. Whenever I add a movie, the details aren't being picked up automatically and I have to do it manually.

Can it be made to work with SwissMonitor since the parser field says "none"?
Showcenters 1000g/250HD/Popcorn Hour A-100
Netgear HDX101 Powerline Adapters
Windows XP SP3 Simese 2.6.4 Beta SwissCenter latest SVN
NAS Server Intel PD 2.66Ghz/2GB Mem/1.5TB Storage
Hauppauge HVR 1600 GB-PVR
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/10 19:04 Stu2j wrote:
OK, I've been using POC3 and it appears to be working REALLY well and I'm really pleased with it... except...

...it does not appear to be working with SwissMonitor. Whenever I add a movie, the details aren't being picked up automatically and I have to do it manually.

Can it be made to work with SwissMonitor since the parser field says "none"?

The file media_monitor.php will need updating to do this.
Players : Netgear EVA700 | Popcorn A-100 (091202) | Popcorn A-200 (100208)
Webserver : Simese v2.6.4 | Apache 2.2.14 | PHP v5.2.12 | MySQL v5.1.32
Server : Windows 7 Home Premium 64bit
Spec : Intel C2Q Q6600 - 4GB RAM - 3TB HDD
AV : Pioneer VSX-915 | Samsung LE40C650
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/11 01:53 Pernod wrote:
Stu2j wrote:
OK, I've been using POC3 and it appears to be working REALLY well and I'm really pleased with it... except...

...it does not appear to be working with SwissMonitor. Whenever I add a movie, the details aren't being picked up automatically and I have to do it manually.

Can it be made to work with SwissMonitor since the parser field says "none"?

The file media_monitor.php will need updating to do this.

I will look into this as soon as I get the time, I think it should be pretty easy.
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/11 02:00 Pernod wrote:
My guess is that there's something wrong with your database, but that's just a guess Maybe it would be worth a shot to re-create the database if everything else fails.
The logfile is also showing failure saving themes which would suggest the database is at 1.22 and not the latest SVN.

@Dutchee: You must update to the latest development release before you can use this.


I updated to SC & Simese 2.6.2, created a new database, and the import of synopsis works now. Thanks for that.

However: I now have a lot of checksum errors when I do a system test:

The following tests were successful:

* Database is fully patched to 0045.
* Able to Read/Write to the SwissCenter installation directory.
* Successfully located the 'swisscenter.ini' file.
* Able to Read/Write to the SwissCenter cache directory.
* Able to Read/Write to the SwissCenter playlists directory.
* Logging enabled.

The following tests failed:

* The following installation files are either missing or incorrect. Click each file to download, then manually copy to the correct location.
base/az_picker.php [1088] (Checksum error)
base/browse.php [1140] (Checksum error)
base/capabilities.php [1141] (Checksum error)
base/categories.php [1095] (Checksum error)
base/db_abstract.php [1111] (Checksum error)
base/file.php [1034] (Checksum error)
base/html_form.php [1062] (Checksum error)
base/image.php [1133] (Checksum error)
base/image_screens.php [1140] (Checksum error)
base/install_checks.php [1018] (Checksum error)

======= cut off the rest, as the list is very (very very) long.. ======

Now what have I done?
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/11 13:24 @Dutchee

Delete the file filelist_svn.txt then go back to SwissCenter Config -> Installation -> System Tests

This will force SC to recheck the files and you should not see checksum errors until the next update
Player: Popcorn Hour A-110
Router: Linksys-Cisco WRT54GL (DD-WRT) (TCP Vegas enabled)
SC server: QNAP TS-109 II Lighttpd v1.4.23-1 PHP v5.2.11 MySQL v5.0.27-log
NAS Server: QNAP TS-109 II
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/11 14:58 avgjoemomma wrote:
@Dutchee

Delete the file filelist_svn.txt then go back to SwissCenter Config -> Installation -> System Tests

This will force SC to recheck the files and you should not see checksum errors until the next update


Thanks, that did it. I had already renamed the file, but somehow that didn't make a difference.. Or maybe I'm becoming computer illiterate..

Thanks again all..
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/12 08:44 I've tried to clean up a little bit and added the functionality stu requested - SwissMonitor. I'm running Linux so I haven't tested it, please let me know if it works.

Except for the apple parser, does anyone miss anything else?
File Attachment:
File name: poc4.zip
File size:32436 bytes
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/12 09:50 Hmm.. ok, I added the movie "Zombieland" and SwissMonitor found it and added it to the database with details. However, themoviedb failed. Could be a problem with the site.. here's a log clip

[2010.03.12 09:44:28] Movieparser entering parse property...www.themoviedb.org property: ACTORS
[2010.03.12 09:44:28] PAGE WAS NOT SET! www.themoviedb.org
[2010.03.12 09:44:28] returnval:
[2010.03.12 09:44:28] ERROR! Parsing of ACTORS from www.themoviedb.org failed! :

Nevermind.. I did two more movies and they worked just fine. Apparently themoviedb is having a problem with zombieland for some reason...
Showcenters 1000g/250HD/Popcorn Hour A-100
Netgear HDX101 Powerline Adapters
Windows XP SP3 Simese 2.6.4 Beta SwissCenter latest SVN
NAS Server Intel PD 2.66Ghz/2GB Mem/1.5TB Storage
Hauppauge HVR 1600 GB-PVR
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/12 10:16 Stu2j wrote:
Nevermind.. I did two more movies and they worked just fine. Apparently themoviedb is having a problem with zombieland for some reason...

This is where this parser comes in handy

I've added the apple parser now too, but it seems to be a problem with "director" and "genre", only mumbo jumbo values. But the rest seems to be ok.

Unpack to <sc path>ext/parsers/movie/classes
File Attachment:
File name: wwwAPPLEcom.zip
File size:1530 bytes
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/12 12:39 Added parser unit test in the config screen.

Note: www.apple.com.DIRECTORS fails in this test. www.apple.com.GENRE should also have appeared as faulty, but since the returned value is "3" it doesn't appear in the failed list.

Just unpack the attached archive in your swiss center home dir.
File Attachment:
File name: poc6.zip
File size:34529 bytes
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/12 13:45 I have really been giving this a go and as far as I ca tell, it can go into the SVN.. it is working perfectly here...

This is some really nice work
Showcenters 1000g/250HD/Popcorn Hour A-100
Netgear HDX101 Powerline Adapters
Windows XP SP3 Simese 2.6.4 Beta SwissCenter latest SVN
NAS Server Intel PD 2.66Ghz/2GB Mem/1.5TB Storage
Hauppauge HVR 1600 GB-PVR
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/14 11:14 Hi Utsi,

I think this setup is working fine
Tested it with my movie db (~450 files) and worked perfect.

Based on your code (and the original of the moviemeter.nl parser)
I created the moviemeter parser for your framework (for the dutch).

File is attached.

The unit tests are also working for this parser.
File Attachment:
File name: wwwMOVIEMETERnl.zip
File size:2407 bytes
Pinnacle Showcenter 200
Vista x64 3TB Apache 2.2.14 / php 5.2.12 / mysql 5.1.43
SwissCenter: Latest SVN with local modifications.
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/15 06:38 Great! And glad to hear that there's no problem with larger movie collections Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/18 15:26 Utsi -

Please take a look at my posts in the bug report forum under updating tv details and see if you can confirm whether or not this caused the problem in that thread.

Also, the POC6 archive seems to be missing the video_obtain_info.php from POC4 which I believe is necessary.

Also, while I've got you here, since we know the Apple directors simply doesn't work, can you remove the test for that so we could get a green check mark when everything is ok instead of the long list?
Showcenters 1000g/250HD/Popcorn Hour A-100
Netgear HDX101 Powerline Adapters
Windows XP SP3 Simese 2.6.4 Beta SwissCenter latest SVN
NAS Server Intel PD 2.66Ghz/2GB Mem/1.5TB Storage
Hauppauge HVR 1600 GB-PVR
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/19 02:56 I've just had an unfortunate accident with my system. Basically I've lost almost all my movies, eclipse won't work (that's where I edit the parser code), musicip is screwed and I'm having a lot of problems with Ubuntu in general. Will have to do a full backup/re-install which can take a couple of evenings. Won't have time until late next week, I think.

Magician says he has fixed the issue with TV details, can you confirm that?

I'll try to find the time to create a new zip file tonight for poc6.

The Apple.DIRECTORS problem, do we know it's not a problem with the SC code?
Player: Popcornhour A-100
Server: Ubuntu 9.04, lighttpd/fastcgi
System specs: Intel Pentium 4 CPU 2GHz, 756MB RAM
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/19 07:48 I've just had an unfortunate accident with my system.
Ouch, we've all been there. Hopefully, you will be back up soon.

Magician says he has fixed the issue with TV details, can you confirm that?
His solution fixed the tv details but broke the system tests.

The Apple.DIRECTORS problem, do we know it's not a problem with the SC code?
No idea.
Showcenters 1000g/250HD/Popcorn Hour A-100
Netgear HDX101 Powerline Adapters
Windows XP SP3 Simese 2.6.4 Beta SwissCenter latest SVN
NAS Server Intel PD 2.66Ghz/2GB Mem/1.5TB Storage
Hauppauge HVR 1600 GB-PVR
  | | The administrator has disabled public write access.
Re: New movieparser discussion - 2010/03/19 09:26 I am currently making a few minor changes to Utsi's excellent parser framework which should be submitted in the next couple of days. The TV parsers will also be converted to the framework which will fix the conflicts that you are having. Players : Netgear EVA700 | Popcorn A-100 (091202) | Popcorn A-200 (100208)
Webserver : Simese v2.6.4 | Apache 2.2.14 | PHP v5.2.12 | MySQL v5.1.32
Server : Windows 7 Home Premium 64bit
Spec : Intel C2Q Q6600 - 4GB RAM - 3TB HDD
AV : Pioneer VSX-915 | Samsung LE40C650
  | | The administrator has disabled public write access.
<< Start < Previous 1 2 Next > End >>
spacer
 

Screenshots

www.flickr.com
This is a Flickr badge showing public photos from swisscenter. Make your own badge here.


 

Mambo is Free Software released under the GNU/GPL License.
spacer