WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru
функция не описана

getID3::analyze() public WP 1.0

analyze file

Это метод класса: getID3{}

Хуков нет.

Возвращает

Массив.

Использование

$getID3 = new getID3();
$getID3->analyze( $filename, $filesize, $original_filename, $fp );
$filename(строка) (обязательный)
$filesize(число)

По умолчанию: null
$original_filename(строка)

По умолчанию: ''
$fp(resource)

По умолчанию: null

Код getID3::analyze() WP 5.5.1

wp-includes/ID3/getid3.php
<?php
public function analyze($filename, $filesize=null, $original_filename='', $fp=null) {
	try {
		if (!$this->openfile($filename, $filesize, $fp)) {
			return $this->info;
		}

		// Handle tags
		foreach (array('id3v2'=>'id3v2', 'id3v1'=>'id3v1', 'apetag'=>'ape', 'lyrics3'=>'lyrics3') as $tag_name => $tag_key) {
			$option_tag = 'option_tag_'.$tag_name;
			if ($this->$option_tag) {
				$this->include_module('tag.'.$tag_name);
				try {
					$tag_class = 'getid3_'.$tag_name;
					$tag = new $tag_class($this);
					$tag->Analyze();
				}
				catch (getid3_exception $e) {
					throw $e;
				}
			}
		}
		if (isset($this->info['id3v2']['tag_offset_start'])) {
			$this->info['avdataoffset'] = max($this->info['avdataoffset'], $this->info['id3v2']['tag_offset_end']);
		}
		foreach (array('id3v1'=>'id3v1', 'apetag'=>'ape', 'lyrics3'=>'lyrics3') as $tag_name => $tag_key) {
			if (isset($this->info[$tag_key]['tag_offset_start'])) {
				$this->info['avdataend'] = min($this->info['avdataend'], $this->info[$tag_key]['tag_offset_start']);
			}
		}

		// ID3v2 detection (NOT parsing), even if ($this->option_tag_id3v2 == false) done to make fileformat easier
		if (!$this->option_tag_id3v2) {
			fseek($this->fp, 0);
			$header = fread($this->fp, 10);
			if ((substr($header, 0, 3) == 'ID3') && (strlen($header) == 10)) {
				$this->info['id3v2']['header']        = true;
				$this->info['id3v2']['majorversion']  = ord($header[3]);
				$this->info['id3v2']['minorversion']  = ord($header[4]);
				$this->info['avdataoffset']          += getid3_lib::BigEndian2Int(substr($header, 6, 4), 1) + 10; // length of ID3v2 tag in 10-byte header doesn't include 10-byte header length
			}
		}

		// read 32 kb file data
		fseek($this->fp, $this->info['avdataoffset']);
		$formattest = fread($this->fp, 32774);

		// determine format
		$determined_format = $this->GetFileFormat($formattest, ($original_filename ? $original_filename : $filename));

		// unable to determine file format
		if (!$determined_format) {
			fclose($this->fp);
			return $this->error('unable to determine file format');
		}

		// check for illegal ID3 tags
		if (isset($determined_format['fail_id3']) && (in_array('id3v1', $this->info['tags']) || in_array('id3v2', $this->info['tags']))) {
			if ($determined_format['fail_id3'] === 'ERROR') {
				fclose($this->fp);
				return $this->error('ID3 tags not allowed on this file type.');
			} elseif ($determined_format['fail_id3'] === 'WARNING') {
				$this->warning('ID3 tags not allowed on this file type.');
			}
		}

		// check for illegal APE tags
		if (isset($determined_format['fail_ape']) && in_array('ape', $this->info['tags'])) {
			if ($determined_format['fail_ape'] === 'ERROR') {
				fclose($this->fp);
				return $this->error('APE tags not allowed on this file type.');
			} elseif ($determined_format['fail_ape'] === 'WARNING') {
				$this->warning('APE tags not allowed on this file type.');
			}
		}

		// set mime type
		$this->info['mime_type'] = $determined_format['mime_type'];

		// supported format signature pattern detected, but module deleted
		if (!file_exists(GETID3_INCLUDEPATH.$determined_format['include'])) {
			fclose($this->fp);
			return $this->error('Format not supported, module "'.$determined_format['include'].'" was removed.');
		}

		// module requires mb_convert_encoding/iconv support
		// Check encoding/iconv support
		if (!empty($determined_format['iconv_req']) && !function_exists('mb_convert_encoding') && !function_exists('iconv') && !in_array($this->encoding, array('ISO-8859-1', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'UTF-16'))) {
			$errormessage = 'mb_convert_encoding() or iconv() support is required for this module ('.$determined_format['include'].') for encodings other than ISO-8859-1, UTF-8, UTF-16LE, UTF16-BE, UTF-16. ';
			if (GETID3_OS_ISWINDOWS) {
				$errormessage .= 'PHP does not have mb_convert_encoding() or iconv() support. Please enable php_mbstring.dll / php_iconv.dll in php.ini, and copy php_mbstring.dll / iconv.dll from c:/php/dlls to c:/windows/system32';
			} else {
				$errormessage .= 'PHP is not compiled with mb_convert_encoding() or iconv() support. Please recompile with the --enable-mbstring / --with-iconv switch';
			}
			return $this->error($errormessage);
		}

		// include module
		include_once(GETID3_INCLUDEPATH.$determined_format['include']);

		// instantiate module class
		$class_name = 'getid3_'.$determined_format['module'];
		if (!class_exists($class_name)) {
			return $this->error('Format not supported, module "'.$determined_format['include'].'" is corrupt.');
		}
		$class = new $class_name($this);
		$class->Analyze();
		unset($class);

		// close file
		fclose($this->fp);

		// process all tags - copy to 'tags' and convert charsets
		if ($this->option_tags_process) {
			$this->HandleAllTags();
		}

		// perform more calculations
		if ($this->option_extra_info) {
			$this->ChannelsBitratePlaytimeCalculations();
			$this->CalculateCompressionRatioVideo();
			$this->CalculateCompressionRatioAudio();
			$this->CalculateReplayGain();
			$this->ProcessAudioStreams();
		}

		// get the MD5 sum of the audio/video portion of the file - without ID3/APE/Lyrics3/etc header/footer tags
		if ($this->option_md5_data) {
			// do not calc md5_data if md5_data_source is present - set by flac only - future MPC/SV8 too
			if (!$this->option_md5_data_source || empty($this->info['md5_data_source'])) {
				$this->getHashdata('md5');
			}
		}

		// get the SHA1 sum of the audio/video portion of the file - without ID3/APE/Lyrics3/etc header/footer tags
		if ($this->option_sha1_data) {
			$this->getHashdata('sha1');
		}

		// remove undesired keys
		$this->CleanUp();

	} catch (Exception $e) {
		$this->error('Caught exception: '.$e->getMessage());
	}

	// return info array
	return $this->info;
}