-
Custom BBCode i imdb
Witam,
na wstępnie zaznaczę, żeby poźniej nie było niejasności. :) Nie jestem programistą, nie znam się na tym.
Dlatego zwracam się o was do pomoc.
Chciałbym mieć na forum custom BBCode [imdb] adres [/imdb].
Poszukiwania na sieci nic nie przyniosły.
Znalazłem natomiast
imdb parser w php
plik: class.imdb_parser.php
Kod:
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
* class.imdb_parser.php (php4)
* Parse information of any film - need a fetched imdb.com video-detail-site
* @author Bernd Essl <bernd_at_b23.at>
* @copyright Bernd Essl <bernd_at_b23.at>
* @license license http://gnu.org/copyleft/gpl.html GNU GPL
* @link http://b23.at/
* @version $LastChangedRevision: 19 $
*/
class IMDB_Parser
{
function getMovieActors($imdb_website, $name_and_id=False)
{
if (preg_match('/<table class="cast">(.+)<\/table>/', $imdb_website, $hit))
{
if ($name_and_id === True)
{
#name and id
if (preg_match_all('/<a href="\/name\/(nm\d{1,8})\/">([^<]+)<\/a>/',$hit[0],$results, PREG_PATTERN_ORDER))
{
return $results;
}
else
{
return False;
}
}
else
{
#only name, old version
if (preg_match_all('/<a href="\/name\/nm\d{1,8}\/">([^<]+)<\/a>/',$hit[0],$results, PREG_PATTERN_ORDER))
{
return $results[1];
}
else
{
return False;
}
}
}
else
{
return False;
}
}
function getMovieDirectedBy($imdb_website, $all_directors=False)
{
if ($all_directors === True)
{
return False;
}
else
{
if (preg_match('/Directors?:<\/h5>.?<a href="\/name\/[a-z0-9]+\/">(.+)<\/a>/sU', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
}
function getMovieColor($imdb_website)
{
if (preg_match('/<a href="\/List\?color-info.+>([^<]+)<\/a>/i',$imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieCountry($imdb_website)
{
if (preg_match_all('/<a href="\/Sections\/Countries\/([a-z]+)\/">/i',$imdb_website,$results, PREG_PATTERN_ORDER))
{
return $results[1];
}
else
{
return False;
}
}
function getMovieLanguage($imdb_website)
{
if (preg_match_all('/<a href="\/Sections\/Languages\/([a-z]+)\/">/i',$imdb_website,$results, PREG_PATTERN_ORDER))
{
return $results[1];
}
else
{
return False;
}
}
function getMovieRating($imdb_website)
{
if (preg_match('/<b>([0-9]{1,2}\.[0-9]{1,2}\/10)<\/b>/', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieGenres($imdb_website)
{
if (preg_match_all('/\/Sections\/Genres\/(.+?)\//', $imdb_website, $hit, PREG_PATTERN_ORDER))
{
return $hit[1];
}
else
{
return False;
}
}
function getMoviePlot($imdb_website)
{
if (preg_match('/Plot:<\/h5>([^<]+)</', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieTagline($imdb_website)
{
if (preg_match('/Tagline:<\/h5>([^<]+)</', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieTitle($imdb_website)
{
if (preg_match('/\<title\>([^"]+)\<\/title\>/', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMoviePictureHtml($imdb_website)
{
if (preg_match('/<a name="poster".+title=".+">(.+)<\/a>/', $imdb_website, $hit))
{
return str_replace('ec.', '', $hit[1]);
}
else
{
return False;
}
}
function getMoviePicture($imdb_website)
{
if (preg_match('/ src="([^"]+)/', $this->getMoviePictureHtml($imdb_website), $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieYear($imdb_website)
{
if (preg_match('/\/Sections\/Years\/([^"]+)/', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieRuntime($imdb_website)
{
#contributed by Guvenc KAPLAN
if (preg_match('/Runtime:<\/h5>([^<]+)<\/div>/', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieStars($imdb_website)
{
if (preg_match('/<b>([0-9]{1,2}\.[0-9]{1,2})\/10<\/b>/', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieAka($imdb_website)
{
if (preg_match('/Also Known As:<\/h5>([^<]+)<br>/', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieAwards($imdb_website)
{
#contributed by D3FiANC3
if (preg_match('/Awards:<\/h5>([^<]+)<a class/', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieVotes($imdb_website)
{
#contributed by D3FiANC3
if (preg_match('/\<small\>\(\<a href="ratings"\>([^<]+)\<\/a\>\)\<\/small\>/', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieMPAA($imdb_website)
{
#contributed by Edward Husar
if (preg_match('/MPAA<\/a>:<\/h5>([^<]+)<\/div>/', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieAspectRatio($imdb_website)
{
if (preg_match('/<h5>Aspect Ratio:<\/h5>([^<]+)<a class/', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieSoundMix($imdb_website)
{
if (preg_match('/<a href="\/List\?sound-mix.+>([^<]+)<\/a>/i',$imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieReleaseDate($imdb_website)
{
#contributed by Edward Husar
if (preg_match('/Release Date:<\/h5>([^<]+)<a class/', $imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
function getMovieCompany($imdb_website)
{
if (preg_match('/<a href="\/company.+>([^<]+)<\/a>/i',$imdb_website, $hit))
{
return $hit[1];
}
else
{
return False;
}
}
}
?>
i drugi plik:
Kod:
<?php
/*
* Example using "file_get_contents"
* note: allow_url_fopen = On in your php.ini should be On
*/
//get a video detail site from imdb.com
$imdb_website = file_get_contents ('http://imdb.com/title/tt0138704/'); //movie PI
//include the parser-class
include_once("class.imdb_parser.php");
//init the class
$IMDB_Parser = new IMDB_Parser;
// output movie-picture (html)
print "<p>".$IMDB_Parser->getMoviePictureHtml($imdb_website)."</p>";
// output movie-title
print "<br />Title: ".$IMDB_Parser->getMovieTitle($imdb_website);
// output movie-tagline
print "<br />Tagline: ".$IMDB_Parser->getMovieTagline($imdb_website);
// output movie-plot
print "<br />Plot: ".$IMDB_Parser->getMoviePlot($imdb_website);
// output movie-actors (array)
print "<br />Actors: ";
foreach($IMDB_Parser->getMovieActors($imdb_website) as $value)
{
print $value." | ";
}
// output movie-actors (array) (name and ID)
print "<br />Actors (link, ID, name): ";
$a_actors = $IMDB_Parser->getMovieActors($imdb_website, $name_and_id=True);
for ($i=0; $i<count($a_actors[1]); $i++)
{
print $a_actors[0][$i].", ";
print $a_actors[1][$i].", ";
print $a_actors[2][$i].", ";
print ' | ';
}
// output movie-user rating
print "<br />User Rating: ".$IMDB_Parser->getMovieRating($imdb_website);
// output movie-languages (array)
print "<br />Languages: ";
foreach($IMDB_Parser->getMovieLanguage($imdb_website) as $value)
{
print $value." | ";
}
// output movie-color
print "<br />Color: ".$IMDB_Parser->getMovieColor($imdb_website);
// output movie-country (array)
print "<br />Country: ";
foreach($IMDB_Parser->getMovieCountry($imdb_website) as $value)
{
print $value." | ";
}
// output movie-directed by
print "<br />Directed by: ".$IMDB_Parser->getMovieDirectedBy($imdb_website);
// output movie-picture path
print "<br />Picture Path: ".$IMDB_Parser->getMoviePicture($imdb_website);
// output movie-genres (array)
print "<br />Genres: | ";
foreach($IMDB_Parser->getMovieGenres($imdb_website) as $value)
{
print $value." | ";
}
// output movie-year
print "<br />Year: ".$IMDB_Parser->getMovieYear($imdb_website);
// output runtime
print "<br />Runtime: ".$IMDB_Parser->getMovieRuntime($imdb_website);
// output moviestars
print "<br />Stars: ".$IMDB_Parser->getMovieStars($imdb_website);
// output also known as
print "<br />Also known as: ".$IMDB_Parser->getMovieAka($imdb_website);
// output votes
print "<br />Votes: ".$IMDB_Parser->getMovieVotes($imdb_website);
// output MPAA
print "<br />MPAA: ".$IMDB_Parser->getMovieMPAA($imdb_website);
// output Aspect Ratio
print "<br />Aspect Ratio: ".$IMDB_Parser->getMovieAspectRatio($imdb_website);
// output Awards
print "<br />Awards: ".$IMDB_Parser->getMovieAwards($imdb_website);
// output Sound Mix
print "<br />Sound Mix: ".$IMDB_Parser->getMovieSoundMix($imdb_website);
// ouput Release Date
print "<br />Release Date: ".$IMDB_Parser->getMovieReleaseDate($imdb_website);
// ouput Company
print "<br />Company: ".$IMDB_Parser->getMovieCompany($imdb_website);
?>
Po wrzuceniu na server i wpisaniu adres http://****/test.php ładnie wyświatla mi informacje, które chę.
Pomyślałem sobie, że to rozwiązuje wszystkie moje problemy.
class.imdb_parser.php zostawiłem w katalogu głównym vBulletin
otworzyłem custom BBcode i wpisałem coś takiego:
Tittle: imdb
BB Code Tag Name: imdb
Replacement: wkleiłem plik test.php z tym, że
Kod:
$imdb_website = file_get_contents ('http://imdb.com/title/tt0138704/'); //movie PI
zamieniłem na
Kod:
$imdb_website = file_get_contents ('{param}'); //movie PI
pouzupełniałem resztę rzeczy, dałem save.
I nie działa....
w oknie replacement
Kod:
.$IMDB_Parser->getMoviePictureHtml($imdb_website).""; // output movie-title print "
Title: ".$IMDB_Parser->getMovieTitle($imdb_website); // output movie-tagline print "
Tagline: ".$IMDB_Parser->getMovieTagline($imdb_website); // output movie-plot print "
Plot: ".$IMDB_Parser->getMoviePlot($imdb_website); // output movie-actors (array) print "
Actors: "; foreach($IMDB_Parser->getMovieActors($imdb_website) as $value) { print $value." | "; } // output movie-actors (array) (name and ID) print "
Actors (link, ID, name): "; $a_actors = $IMDB_Parser->getMovieActors($imdb_website, $name_and_id=True); for ($i=0; $i
User Rating: ".$IMDB_Parser->getMovieRating($imdb_website); // output movie-languages (array) print "
Languages: "; foreach($IMDB_Parser->getMovieLanguage($imdb_website) as $value) { print $value." | "; } // output movie-color print "
Color: ".$IMDB_Parser->getMovieColor($imdb_website); // output movie-country (array) print "
Country: "; foreach($IMDB_Parser->getMovieCountry($imdb_website) as $value) { print $value." | "; } // output movie-directed by print "
Directed by: ".$IMDB_Parser->getMovieDirectedBy($imdb_website); // output movie-picture path print "
Picture Path: ".$IMDB_Parser->getMoviePicture($imdb_website); // output movie-genres (array) print "
Genres: | "; foreach($IMDB_Parser->getMovieGenres($imdb_website) as $value) { print $value." | "; } // output movie-year print "
Year: ".$IMDB_Parser->getMovieYear($imdb_website); // output runtime print "
Runtime: ".$IMDB_Parser->getMovieRuntime($imdb_website); // output moviestars print "
Stars: ".$IMDB_Parser->getMovieStars($imdb_website); // output also known as print "
Also known as: ".$IMDB_Parser->getMovieAka($imdb_website); // output votes print "
Votes: ".$IMDB_Parser->getMovieVotes($imdb_website); // output MPAA print "
MPAA: ".$IMDB_Parser->getMovieMPAA($imdb_website); // output Aspect Ratio print "
Aspect Ratio: ".$IMDB_Parser->getMovieAspectRatio($imdb_website); // output Awards print "
Awards: ".$IMDB_Parser->getMovieAwards($imdb_website); // output Sound Mix print "
Sound Mix: ".$IMDB_Parser->getMovieSoundMix($imdb_website); // ouput Release Date print "
Release Date: ".$IMDB_Parser->getMovieReleaseDate($imdb_website); // ouput Company print "
Company: ".$IMDB_Parser->getMovieCompany($imdb_website); ?>
co dla mnie nie znaczy absolutnie nic, pozaty ze coś jest nie tak....
W związku z tym mam pytanie i prośbę do szanownych forumowiczów.
Czy możecie mi pomóc i rozwiązać mój problem ?
Z góry dziękuję.