mirror of
https://github.com/Yetangitu/ampache
synced 2025-10-05 02:39:47 +02:00
Use latest stable getid3 version (1.8.5)
2.0 is supposedly still being developed, but the current version is not recommended by upstream, and 1.8 receives active updates and appears to work better on the files I tested. Fixes FS#169
This commit is contained in:
parent
edd458690d
commit
cfaedb8e30
87 changed files with 33494 additions and 27036 deletions
|
@ -1,25 +1,18 @@
|
|||
<?php
|
||||
// +----------------------------------------------------------------------+
|
||||
// | PHP version 5 |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Copyright (c) 2002-2009 James Heinrich, Allan Hansen |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | This source file is subject to version 2 of the GPL license, |
|
||||
// | that is bundled with this package in the file license.txt and is |
|
||||
// | available through the world-wide-web at the following url: |
|
||||
// | http://www.gnu.org/copyleft/gpl.html |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | getID3() - http://getid3.sourceforge.net or http://www.getid3.org |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Authors: James Heinrich <infoØgetid3*org> |
|
||||
// | Allan Hansen <ahØartemis*dk> |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | extension.cache.mysql.php |
|
||||
// | MySQL Cache Extension. |
|
||||
// | dependencies: getid3. |
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: extension.cache.mysql.php,v 1.2 2006/11/02 10:47:59 ah Exp $
|
||||
/////////////////////////////////////////////////////////////////
|
||||
/// getID3() by James Heinrich <info@getid3.org> //
|
||||
// available at http://getid3.sourceforge.net //
|
||||
// or http://www.getid3.org //
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// extension.cache.mysql.php - part of getID3() //
|
||||
// Please see readme.txt for more information //
|
||||
// ///
|
||||
/////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// This extension written by Allan Hansen <ahØartemis*dk> //
|
||||
// ///
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
|
@ -31,23 +24,20 @@
|
|||
* Normal getID3 usage (example):
|
||||
*
|
||||
* require_once 'getid3/getid3.php';
|
||||
* $getid3 = new getid3;
|
||||
* $getid3->encoding = 'UTF-8';
|
||||
* try {
|
||||
* $info1 = $getid3->Analyse('file1.flac');
|
||||
* $info2 = $getid3->Analyse('file2.wv');
|
||||
* ....
|
||||
* $getID3 = new getID3;
|
||||
* $getID3->encoding = 'UTF-8';
|
||||
* $info1 = $getID3->analyze('file1.flac');
|
||||
* $info2 = $getID3->analyze('file2.wv');
|
||||
*
|
||||
* getID3_cached usage:
|
||||
*
|
||||
* require_once 'getid3/getid3.php';
|
||||
* require_once 'getid3/getid3/extension.cache.mysql.php';
|
||||
* $getid3 = new getid3_cached_mysql('localhost', 'database', 'username', 'password');
|
||||
* $getid3->encoding = 'UTF-8';
|
||||
* try {
|
||||
* $info1 = $getid3->analyse('file1.flac');
|
||||
* $info2 = $getid3->analyse('file2.wv');
|
||||
* ...
|
||||
* $getID3 = new getID3_cached_mysql('localhost', 'database',
|
||||
* 'username', 'password');
|
||||
* $getID3->encoding = 'UTF-8';
|
||||
* $info1 = $getID3->analyze('file1.flac');
|
||||
* $info2 = $getID3->analyze('file2.wv');
|
||||
*
|
||||
*
|
||||
* Supported Cache Types (this extension)
|
||||
|
@ -79,96 +69,101 @@
|
|||
*/
|
||||
|
||||
|
||||
class getid3_cached_mysql extends getID3
|
||||
class getID3_cached_mysql extends getID3
|
||||
{
|
||||
|
||||
private $cursor;
|
||||
private $connection;
|
||||
// private vars
|
||||
var $cursor;
|
||||
var $connection;
|
||||
|
||||
|
||||
public function __construct($host, $database, $username, $password) {
|
||||
// public: constructor - see top of this file for cache type and cache_options
|
||||
function getID3_cached_mysql($host, $database, $username, $password) {
|
||||
|
||||
// Check for mysql support
|
||||
if (!function_exists('mysql_pconnect')) {
|
||||
throw new getid3_exception('PHP not compiled with mysql support.');
|
||||
}
|
||||
// Check for mysql support
|
||||
if (!function_exists('mysql_pconnect')) {
|
||||
throw new Exception('PHP not compiled with mysql support.');
|
||||
}
|
||||
|
||||
// Connect to database
|
||||
$this->connection = @mysql_pconnect($host, $username, $password);
|
||||
if (!$this->connection) {
|
||||
throw new getid3_exception('mysql_pconnect() failed - check permissions and spelling.');
|
||||
}
|
||||
// Connect to database
|
||||
$this->connection = mysql_pconnect($host, $username, $password);
|
||||
if (!$this->connection) {
|
||||
throw new Exception('mysql_pconnect() failed - check permissions and spelling.');
|
||||
}
|
||||
|
||||
// Select database
|
||||
if (!@mysql_select_db($database, $this->connection)) {
|
||||
throw new getid3_exception('Cannot use database '.$database);
|
||||
}
|
||||
// Select database
|
||||
if (!mysql_select_db($database, $this->connection)) {
|
||||
throw new Exception('Cannot use database '.$database);
|
||||
}
|
||||
|
||||
// Create cache table if not exists
|
||||
$this->create_table();
|
||||
// Create cache table if not exists
|
||||
$this->create_table();
|
||||
|
||||
// Check version number and clear cache if changed
|
||||
$this->cursor = mysql_query("SELECT `value` FROM `getid3_cache` WHERE (`filename` = '".getid3::VERSION."') AND (`filesize` = '-1') AND (`filetime` = '-1') AND (`analyzetime` = '-1')", $this->connection);
|
||||
list($version) = @mysql_fetch_array($this->cursor);
|
||||
if ($version != getid3::VERSION) {
|
||||
$this->clear_cache();
|
||||
}
|
||||
// Check version number and clear cache if changed
|
||||
$version = '';
|
||||
if ($this->cursor = mysql_query("SELECT `value` FROM `getid3_cache` WHERE (`filename` = '".mysql_real_escape_string(GETID3_VERSION)."') AND (`filesize` = '-1') AND (`filetime` = '-1') AND (`analyzetime` = '-1')", $this->connection)) {
|
||||
list($version) = mysql_fetch_array($this->cursor);
|
||||
}
|
||||
if ($version != GETID3_VERSION) {
|
||||
$this->clear_cache();
|
||||
}
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
parent::getID3();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function clear_cache() {
|
||||
// public: clear cache
|
||||
function clear_cache() {
|
||||
|
||||
$this->cursor = mysql_query("DELETE FROM `getid3_cache`", $this->connection);
|
||||
$this->cursor = mysql_query("INSERT INTO `getid3_cache` VALUES ('".getid3::VERSION."', -1, -1, -1, '".getid3::VERSION."')", $this->connection);
|
||||
}
|
||||
$this->cursor = mysql_query("DELETE FROM `getid3_cache`", $this->connection);
|
||||
$this->cursor = mysql_query("INSERT INTO `getid3_cache` VALUES ('".GETID3_VERSION."', -1, -1, -1, '".GETID3_VERSION."')", $this->connection);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function Analyze($filename) {
|
||||
// public: analyze file
|
||||
function analyze($filename) {
|
||||
|
||||
if (file_exists($filename)) {
|
||||
if (file_exists($filename)) {
|
||||
|
||||
// Short-hands
|
||||
$filetime = filemtime($filename);
|
||||
$filesize = filesize($filename);
|
||||
// Short-hands
|
||||
$filetime = filemtime($filename);
|
||||
$filesize = filesize($filename);
|
||||
|
||||
// Loopup file
|
||||
$this->cursor = mysql_query("SELECT `value` FROM `getid3_cache` WHERE (`filename` = '".mysql_real_escape_string($filename)."') AND (`filesize` = '".mysql_real_escape_string($filesize)."') AND (`filetime` = '".mysql_real_escape_string($filetime)."')", $this->connection);
|
||||
list($result) = @mysql_fetch_array($this->cursor);
|
||||
// Loopup file
|
||||
$result = '';
|
||||
if ($this->cursor = mysql_query("SELECT `value` FROM `getid3_cache` WHERE (`filename` = '".mysql_real_escape_string($filename)."') AND (`filesize` = '".mysql_real_escape_string($filesize)."') AND (`filetime` = '".mysql_real_escape_string($filetime)."')", $this->connection)) {
|
||||
// Hit
|
||||
list($result) = mysql_fetch_array($this->cursor);
|
||||
return unserialize(base64_decode($result));
|
||||
}
|
||||
}
|
||||
|
||||
// Hit
|
||||
if ($result) {
|
||||
return unserialize(base64_decode($result));
|
||||
}
|
||||
}
|
||||
// Miss
|
||||
$analysis = parent::analyze($filename);
|
||||
|
||||
// Miss
|
||||
$result = parent::Analyze($filename);
|
||||
|
||||
// Save result
|
||||
if (file_exists($filename)) {
|
||||
$this->cursor = mysql_query("INSERT INTO `getid3_cache` (`filename`, `filesize`, `filetime`, `analyzetime`, `value`) VALUES ('".mysql_real_escape_string($filename)."', '".mysql_real_escape_string($filesize)."', '".mysql_real_escape_string($filetime)."', '".mysql_real_escape_string(time())."', '".mysql_real_escape_string(base64_encode(serialize($result)))."')", $this->connection);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
// Save result
|
||||
if (file_exists($filename)) {
|
||||
$this->cursor = mysql_query("INSERT INTO `getid3_cache` (`filename`, `filesize`, `filetime`, `analyzetime`, `value`) VALUES ('".mysql_real_escape_string($filename)."', '".mysql_real_escape_string($filesize)."', '".mysql_real_escape_string($filetime)."', '".mysql_real_escape_string(time())."', '".mysql_real_escape_string(base64_encode(serialize($analysis)))."')", $this->connection);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// (re)create sql table
|
||||
private function create_table($drop = false) {
|
||||
// private: (re)create sql table
|
||||
function create_table($drop=false) {
|
||||
|
||||
$this->cursor = mysql_query("CREATE TABLE IF NOT EXISTS `getid3_cache` (
|
||||
`filename` VARCHAR(255) NOT NULL DEFAULT '',
|
||||
`filesize` INT(11) NOT NULL DEFAULT '0',
|
||||
`filetime` INT(11) NOT NULL DEFAULT '0',
|
||||
`analyzetime` INT(11) NOT NULL DEFAULT '0',
|
||||
`value` TEXT NOT NULL,
|
||||
PRIMARY KEY (`filename`,`filesize`,`filetime`)) TYPE=MyISAM", $this->connection);
|
||||
echo mysql_error($this->connection);
|
||||
}
|
||||
$this->cursor = mysql_query("CREATE TABLE IF NOT EXISTS `getid3_cache` (
|
||||
`filename` VARCHAR(255) NOT NULL DEFAULT '',
|
||||
`filesize` INT(11) NOT NULL DEFAULT '0',
|
||||
`filetime` INT(11) NOT NULL DEFAULT '0',
|
||||
`analyzetime` INT(11) NOT NULL DEFAULT '0',
|
||||
`value` TEXT NOT NULL,
|
||||
PRIMARY KEY (`filename`,`filesize`,`filetime`)) TYPE=MyISAM", $this->connection);
|
||||
echo mysql_error($this->connection);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue