Files
MeDBia/videodb/engines/youtube.php
Malin f55c91276e feat: add videodb media index with Docker stack
- Add videodb PHP/MySQL media collection manager (Blu-ray, DVD, CD)
- Dockerfile: PHP 8.1 + Apache with GD/mysqli/exif extensions
- docker-compose.yml: app on port 6761 + MySQL 8.0 with health checks
- docker-entrypoint.sh: auto-generates config.inc.php from env vars,
  waits for MySQL, initializes DB schema idempotently
- init-db.php: CLI schema installer using app's own prefix_query() logic
- Persistent volumes for DB, cache, and cover images

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 09:49:52 +02:00

75 lines
2.4 KiB
PHP

<?php
// DEFUNCT, maybe implement new api since current code doesn't work anymore: https://developers.google.com/youtube/v3/docs/search
/**
* youtube.com trailer search
*
* Search trailers on youtube.com
*
* @package Engines
* @author Andreas Goetz <cpuidle@gmx.de>
* @author Adam Benson <precarious_panther@bigpond.com>
* @link http://www.youtube.com YouTube
* @version $Id: youtube.php,v 1.9 2012/08/10 16:07:53 andig2 Exp $
*/
require_once './core/functions.php';
require_once './core/httpclient.php';
define('YOUTUBE_CLIENT_ID', 'ytapi-AndreasGoetz-videodb-g7dk2dh6-0');
define('YOUTUBE_DEVELOPER_KEY', 'AI39si7znfvxGu-6OfT-PIPHxUJbAy429l63_jnWSThlJ7Hitv_gmCpJ9cE_HCnH7PDvSLgthw4wEZ5wSrw139DPLbbmLb50GQ');
// http://gdata.youtube.com/feeds/api/videos?client=ytapi-AndreasGoetz-videodb-g7dk2dh6-0&key=AI39si7znfvxGu-6OfT-PIPHxUJbAy429l63_jnWSThlJ7Hitv_gmCpJ9cE_HCnH7PDvSLgthw4wEZ5wSrw139DPLbbmLb50GQ&v=2&start-index=1&max-results=10&q=alien
/**
* Get meta information about the engine
*/
function youtubeMeta()
{
return array('name' => 'YouTube', 'stable' => 1, 'php' => '5.0', 'capabilities' => array('trailer'));
}
function youtubeHasTrailer($title)
{
return count(youtubeSearch($title)) > 0;
}
function normalize($str)
{
return preg_replace('/[^a-zäöüA-ZÄÖÜ0-9\s]/', '', $str);
}
function youtubeSearch($title)
{
$trailers = array();
$title = normalize($title);
$trailerquery = $title." trailer";
$youtubeurl = "http://gdata.youtube.com/feeds/api/videos?client=".YOUTUBE_CLIENT_ID."&key=".YOUTUBE_DEVELOPER_KEY."&v=2&".
"q=".urlencode($trailerquery)."&start-index=1&max-results=10";
$resp = httpClient($youtubeurl, true);
if (!$resp['success']) return $trailers;
$xml = simplexml_load_string($resp['data']);
// obtain namespaces
$namespaces = $xml->getNameSpaces(true);
foreach ($xml->entry as $trailer)
{
$media = $trailer->children($namespaces['media']);
$yt = $media->group->children($namespaces['yt']);
$id = $yt->videoid;
// API filtering code removed
$trailers[] = array('id' => (string) $id,
'src' => (string) $trailer->content['src'],
'title' => (string) $trailer->title);
if (count($trailers) >= 10) break;
}
return $trailers;
}