Diese Board wurde aus Spamschutz-Gründen auf minimale Funktionen beschränkt.
Nutze für neue Anfragen/Bug-Reports bitte meine Gitlab-Instanz.

problem bei imdb suche

Hilfe bei Installation oder einem Update der Filmverwaltung. Behebung von aufgetretenen Fehlern

Moderator: Lifestyle

Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Butzemann hat geschrieben:Hab hier ein Script in Perl gefunden.
Bei Fremd-Skripten doch bitte immer die Quelle angeben. Danke!
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Butzemann
Beiträge: 139
Registriert: Mi 20. Dez 2006, 15:22
Kontaktdaten:

Beitrag von Butzemann »

der-domi hat geschrieben:
Butzemann hat geschrieben:Hab hier ein Script in Perl gefunden.
Bei Fremd-Skripten doch bitte immer die Quelle angeben. Danke!
http://search.cpan.org/src/STEPANOV/IMD ... DB/Film.pm

bzw.

http://search.cpan.org/~stepanov/IMDB-Film/
Nasenmann72
Beiträge: 10
Registriert: Mi 10. Jan 2007, 10:16

Beitrag von Nasenmann72 »

So...

habe die class.import.php so geändert, dass alle Schauspieler von der Detail-Seite importiert werden:

Code: Alles auswählen

    var $url;
    var $url2;
    var $buf1;
    var $buf2;
    var $siteBuf;
    var $siteBuf2;

...

    function ofdbimport() {

        if ( !strlen($_GET["importID"]) )
            return -1;

        $this->importID = $_GET['importID'];

        // url to get search result
        $this->url = ret_entities( $this->getLinkToDB( $this->importID ) );      
        // url to get actor details
        $this->url2 =  str_replace("film", "film_detail", $this->url);        

...

           // Schauspieler
            if ( loadFile( $this->url2, $this->siteBuf2, "r" ) >= 0 ) {
              $search = "<td nowrap><font face=\"Arial,Helvetica,sans-serif\" size=\"2\" class=\"Normal\">Darsteller:";
              $search = "<b><i>Darsteller</i></b>";
              $this->buf1 = explode( $search, $this->siteBuf2 );
              $this->buf2 = explode( "</td><td><br> ", $this->buf1[1] );
              $this->buf1 = explode( "</tr>\n</table>\n<br>\n", $this->buf2[0]);
              $this->buf2[0] = str_replace("</a>", ";", $this->buf1[0]);
              $this->buf2[0] = str_replace("&nbsp;", "", $this->buf2[0]);
              $this->buf2[0] = strip_tags($this->buf2[0]);
              $this->buf1 = explode ( ";", $this->buf2[0]);
              $this->varToImport['actors'] = array();
              for ( $i=1; $i<count($this->buf1); $i++ ) {
            	   $this->varToImport['actors'][$i-1] = $this->buf1[$i-1];
              }
            }

Viele Grüße,
Der Nasenmann
Butzemann
Beiträge: 139
Registriert: Mi 20. Dez 2006, 15:22
Kontaktdaten:

Beitrag von Butzemann »

Großartig. Nun hat man auch schön viele Schauspieler.

Mich geht's ja nichts an -weil ich standardmäßig die ofdb benutze-, aber nochmal zur imdb. Hast du da auch ne Lösung parat?

Wäre echt super.
Nasenmann72
Beiträge: 10
Registriert: Mi 10. Jan 2007, 10:16

Beitrag von Nasenmann72 »

Hi,

ich nutze auch nicht imdb und habe leider momentan keine Zeit mich dem Problem anzunehmen, sorry!

Viele Grüße,
Der Nasenmann
Nasenmann72
Beiträge: 10
Registriert: Mi 10. Jan 2007, 10:16

Beitrag von Nasenmann72 »

Hi,

da es bei den Regisseuren das gleiche Problem geben kann, wie bei den Schauspielern, habe ich die Bestimmung beider zusammengefasst:

Code: Alles auswählen

    var $url;
    var $url2;
    var $buf1;
    var $buf2;
    var $siteBuf;
    var $siteBuf2;

...

    function ofdbimport() {

        if ( !strlen($_GET["importID"]) )
            return -1;

        $this->importID = $_GET['importID'];

        // url to get search result
        $this->url = ret_entities( $this->getLinkToDB( $this->importID ) );
        // url to get actor details
        $this->url2 =  str_replace("film", "film_detail", $this->url);

...

            // Regisseure & Schauspieler
            if ( loadFile( $this->url2, $this->siteBuf2, "r" ) >= 0 ) {
              // Regisseure
			  $search = "<b><i>Regie</i></b>";
              $this->buf1 = explode( $search, $this->siteBuf2 );
              $this->buf2 = explode( "</td><td><br> ", $this->buf1[1] );
              $this->buf1 = explode( "</tr>\n</table>\n<br>\n", $this->buf2[0]);
              $this->buf2[0] = str_replace("</a>", ";", $this->buf1[0]);
              $this->buf2[0] = str_replace("&nbsp;", "", $this->buf2[0]);
              $this->buf2[0] = strip_tags($this->buf2[0]);
              $this->buf1 = explode ( ";", $this->buf2[0]);
              $this->varToImport['regisseure'] = array();
              for ( $i=1; $i<count($this->buf1); $i++ ) {
            	   $this->varToImport['regisseure'][$i-1] = $this->buf1[$i-1];
              }
	      // Schauspieler
                    $search = "<b><i>Darsteller</i></b>";
              $this->buf1 = explode( $search, $this->siteBuf2 );
              $this->buf2 = explode( "</td><td><br> ", $this->buf1[1] );
              $this->buf1 = explode( "</tr>\n</table>\n<br>\n", $this->buf2[0]);
              $this->buf2[0] = str_replace("</a>", ";", $this->buf1[0]);
              $this->buf2[0] = str_replace("&nbsp;", "", $this->buf2[0]);
              $this->buf2[0] = strip_tags($this->buf2[0]);
              $this->buf1 = explode ( ";", $this->buf2[0]);
              $this->varToImport['actors'] = array();
              for ( $i=1; $i<count($this->buf1); $i++ ) {
            	   $this->varToImport['actors'][$i-1] = $this->buf1[$i-1];
              }
            }

Butzemann
Beiträge: 139
Registriert: Mi 20. Dez 2006, 15:22
Kontaktdaten:

Beitrag von Butzemann »

Klappt wunderbar. Danke.

Is auch ganz sinnvoll, wenn ich zum Beispiel eine Serie habe:

http://www.ofdb.de/view.php?page=film&fid=89284
zeljko
Beiträge: 16
Registriert: Fr 15. Sep 2006, 12:22

Beitrag von zeljko »

sagt mal IMDB importe funktionieren garnicht mehr?
(weder über Suche noch ID)
Butzemann
Beiträge: 139
Registriert: Mi 20. Dez 2006, 15:22
Kontaktdaten:

Beitrag von Butzemann »

Das stimmt. Es hat damit zu tun, dass die IMDB vor einiger Zeit ihr Design komplett umgestaltet hat, und sich somit neue Veränderungen für die Filmdatenbank ergeben. Ich würde erst mal empfehlen, auf den OFDB Import auszuweichen, da die Veränderungen der IMDB wohl nicht auf die Schnelle umgesetzt werden können (ich spreche da mal vom domi selber, der meist alles alleine macht).

Ein kleiner Tip (an den domi). Es wäre denkbar auf das alte Design der IMDB zurückzugreifen, welches unter http://former.imdb.com zu erreichen ist. (als Zwischen -bzw. Übergangslösung)

Zum Beispiel: http://former.imdb.com/title/tt0327162/
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Butzemann hat geschrieben:Ein kleiner Tip (an den domi). Es wäre denkbar auf das alte Design der IMDB zurückzugreifen, welches unter http://former.imdb.com zu erreichen ist.
Super! Das ist sehr hilfreich. Es ist wirklich nervig, dass das Layout ständig geändert wird. Die entsprechenden Änderungen sind alles andere als trivial. Ich muß mich jedesmal neu einarbeiten.
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Moin,

testet mal bitte, ob mit den Änderungen alles funktioniert! (Vorallem der IMDB-Import)

Danke!
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Butzemann
Beiträge: 139
Registriert: Mi 20. Dez 2006, 15:22
Kontaktdaten:

Beitrag von Butzemann »

Die Suche funktoniert schonmal. Beim Import gibt es einen Fehler:

Besonders dieser Abschnitt (Import der Schauspieler):

$tmpBuf = $this->siteBuf;
// get position of </td></tr>
$needle = '<table cellpadding="1" cellspacing="0"><tr><td colspan="4" align="left"><b class="blackcatheader">';
$pos = strrpos($tmpBuf, $needle);
// delete $needle and follow string
$tmpBuf = substr( $tmpBuf, $pos );
$needle = '</table>';
$pos = strpos($tmpBuf, $needle);
// delete $needle and follow string
$tmpBuf = substr( $tmpBuf, 0, $pos );

// Actors
$pattern = '<a href="\/name\/nm[0-9]+\/">|' .
'<\/a><\/td>';
$pattern = "/" . $pattern . "/";
$string_array = preg_split( $pattern, trim($tmpBuf), -1, PREG_SPLIT_NO_EMPTY );

for ( $i=1; $i<count($string_array)-1; $i=$i+2 )
{
$this->varToImport['actors'][] = htmlentities( $string_array[$i] );
}

/*
$search = '<b class="blackcatheader">Cast overview, first billed only: </b></td></tr> ';
$this->buf1 = explode( $search, $this->siteBuf );
$this->buf2 = explode( '<b class="ch">Alternativ:</b>', $this->buf1[1] );
$search = '/">';
$this->buf1 = explode( $search, $this->buf2[0] );
$this->varToImport['actors'] = array();
for ( $i=1; $i<count($this->buf1); ++$i ) {

$this->buf2 = explode( '</a></td>', $this->buf1[$i] );
if ( !substr_count( $this->buf2[0], "http://ia.ec.imdb.com/media/imdb/" ) )
$this->varToImport['actors'][] = htmlentities( urldecode( $this->buf2[0] ) );
}
*/


Hier passiert beim Import nichts. Wenn man aber die Kommentarzeichen im unteren Ende wegnimmt, spuckt er die Schauspieler (Import) folgendermaßen aus (als Beispiel: der Film Zodiac):

<img src="http://ia.imdb.com/media/imdb/01/I/32/45/38t.jpg" width="23" height="32" border="0"></a><br></td><td valign="middle"><a href="/name/nm0350453, Jake Gyllenhaal, <img src="http://ia.imdb.com/media/imdb/01/I/53/31/48t.jpg" width="23" height="32" border="0"></a><br></td><td valign="middle"><a href="/name/nm0749263, Mark Ruffalo, <img src="http://ia.imdb.com/media/imdb/01/I/68/65/12t.jpg" width="23" height="32" border="0"></a><br></td><td valign="middle"><a href="/name/nm0000381, Anthony Edwards, <img src="http://ia.imdb.com/media/imdb/01/I/28/65/12t.jpg" width="23" height="32" border="0"></a><br></td>


Vielleicht kann man die alte Schauspielerimportfunktion weiterhin nutzen und dahingehend umbauen, dass "nur" das Bild vor dem Schauspielernamen eliminiert wird.

Trotzdem erstmal Danke für die Arbeit.
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Hallo,

es war noch ein kleiner Fehler vorhanden, welcher nun behoben wurde. Lade die neue Datei mit obigen Link nochmals runter.

Dass, viel Quellcode auskommentiert ist, ist schon richtig so! Das ist der Originalcode und macht überhaupt keinen Sinn, wenn du diesen wieder einfügst.

PS: Benutze das nächste mal doch bitte die

Code: Alles auswählen

-Umgebung, um Quellcode zu posten. Das verbessert deutlich die Lesbarkeit
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Butzemann
Beiträge: 139
Registriert: Mi 20. Dez 2006, 15:22
Kontaktdaten:

Beitrag von Butzemann »

Und nun schaut's auch wieder bei former.imdb komisch aus:

http://demo.der-domi.de/filmverwaltung/ ... =tt0450278
Butzemann
Beiträge: 139
Registriert: Mi 20. Dez 2006, 15:22
Kontaktdaten:

Beitrag von Butzemann »

Da der domi verhindert ist, versuche ich im Forum mein Glück. Da bisweilen nun auch die neue Veränderung des domi (siehe Post hierdrüber) Fehler aufweist, habe ich nun Veränderungen auf Grundlage der german.imdb.com vorgenommen. Ohne Fehler wird bis auf den Regisseur/Regisseure alles übernommen bzw. importiert. Nur besteht ein geringfügiges Problem:

Wenn ein Film "einen" Regisseur hat, dann funktioniert die Integration, jedoch bei "zweien" nicht. Hier der Quelltext:

Code: Alles auswählen

            // Regisseure
            $search = "<h5>Regisseur:</h5>";
            $this->buf1 = explode( $search, $this->siteBuf );
            $this->buf2 = explode( '</div>', $this->buf1[1] );
            $search = '/">';
            $this->buf1 = explode( $search, $this->buf2[0] );
            $this->varToImport['regisseure'] = array();
            for ( $i=1; $i<count($this->buf1); ++$i ) {
                
                $this->buf2 = explode( '</a>', $this->buf1[$i] );
                $this->varToImport['regisseure'][$i-1] = htmlentities( urldecode( $this->buf2[0] ) );
            }


Das Problem ist, dass im Quelltext (german.imdb) bei "einem" Regisseur die Zeile mit </a> endet, bei "zweien" aber ein Umbruch hinzugefügt wird: <br/>

Wer Ratschläge oder sogar eine Lösung aufbietet, dem wäre ich sehr verbunden.
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste