Bei Fremd-Skripten doch bitte immer die Quelle angeben. Danke!Butzemann hat geschrieben:Hab hier ein Script in Perl gefunden.
Diese Board wurde aus Spamschutz-Gründen auf minimale Funktionen beschränkt.
Nutze für neue Anfragen/Bug-Reports bitte meine Gitlab-Instanz.
Nutze für neue Anfragen/Bug-Reports bitte meine Gitlab-Instanz.
problem bei imdb suche
Moderator: Lifestyle
- der-domi
- Site Admin
- Beiträge: 673
- Registriert: Di 4. Apr 2006, 19:22
- Kontaktdaten:
-
- Beiträge: 139
- Registriert: Mi 20. Dez 2006, 15:22
- Kontaktdaten:
http://search.cpan.org/src/STEPANOV/IMD ... DB/Film.pmder-domi hat geschrieben:Bei Fremd-Skripten doch bitte immer die Quelle angeben. Danke!Butzemann hat geschrieben:Hab hier ein Script in Perl gefunden.
bzw.
http://search.cpan.org/~stepanov/IMDB-Film/
-
- Beiträge: 10
- Registriert: Mi 10. Jan 2007, 10:16
So...
habe die class.import.php so geändert, dass alle Schauspieler von der Detail-Seite importiert werden:
Viele Grüße,
Der Nasenmann
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(" ", "", $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
-
- Beiträge: 139
- Registriert: Mi 20. Dez 2006, 15:22
- Kontaktdaten:
-
- Beiträge: 10
- Registriert: Mi 10. Jan 2007, 10:16
-
- Beiträge: 10
- Registriert: Mi 10. Jan 2007, 10:16
Hi,
da es bei den Regisseuren das gleiche Problem geben kann, wie bei den Schauspielern, habe ich die Bestimmung beider zusammengefasst:
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(" ", "", $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(" ", "", $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];
}
}
-
- Beiträge: 139
- Registriert: Mi 20. Dez 2006, 15:22
- Kontaktdaten:
Klappt wunderbar. Danke.
Is auch ganz sinnvoll, wenn ich zum Beispiel eine Serie habe:
http://www.ofdb.de/view.php?page=film&fid=89284
Is auch ganz sinnvoll, wenn ich zum Beispiel eine Serie habe:
http://www.ofdb.de/view.php?page=film&fid=89284
-
- Beiträge: 139
- Registriert: Mi 20. Dez 2006, 15:22
- Kontaktdaten:
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/
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/
- der-domi
- Site Admin
- Beiträge: 673
- Registriert: Di 4. Apr 2006, 19:22
- Kontaktdaten:
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.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.
Nicht verzagen, Domi fragen
Viele Grüße
Dominik
Viele Grüße
Dominik
- der-domi
- Site Admin
- Beiträge: 673
- Registriert: Di 4. Apr 2006, 19:22
- Kontaktdaten:
-
- Beiträge: 139
- Registriert: Mi 20. Dez 2006, 15:22
- Kontaktdaten:
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.
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.
- der-domi
- Site Admin
- Beiträge: 673
- Registriert: Di 4. Apr 2006, 19:22
- Kontaktdaten:
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
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
Viele Grüße
Dominik
-
- Beiträge: 139
- Registriert: Mi 20. Dez 2006, 15:22
- Kontaktdaten:
Und nun schaut's auch wieder bei former.imdb komisch aus:
http://demo.der-domi.de/filmverwaltung/ ... =tt0450278
http://demo.der-domi.de/filmverwaltung/ ... =tt0450278
-
- Beiträge: 139
- Registriert: Mi 20. Dez 2006, 15:22
- Kontaktdaten:
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:
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.
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.
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste