本文整理汇总了PHP中nzedb\utility\Misc::fileInfo方法的典型用法代码示例。如果您正苦于以下问题:PHP Misc::fileInfo方法的具体用法?PHP Misc::fileInfo怎么用?PHP Misc::fileInfo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类nzedb\utility\Misc
的用法示例。
在下文中一共展示了Misc::fileInfo方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: isNFO
/**
* Confirm this is an NFO file.
*
* @param string $possibleNFO The nfo.
* @param string $guid The guid of the release.
*
* @return bool True on success, False on failure.
*
* @access public
*/
public function isNFO(&$possibleNFO, $guid)
{
if ($possibleNFO === false) {
return false;
}
// Make sure it's not too big or small, size needs to be at least 12 bytes for header checking. Ignore common file types.
$size = strlen($possibleNFO);
if ($size < 65535 && $size > 11 && !preg_match('/\\A(\\s*<\\?xml|=newz\\[NZB\\]=|RIFF|\\s*[RP]AR|.{0,10}(JFIF|matroska|ftyp|ID3))|;\\s*Generated\\s*by.*SF\\w/i', $possibleNFO)) {
// File/GetId3 work with files, so save to disk.
$tmpPath = $this->tmpPath . $guid . '.nfo';
file_put_contents($tmpPath, $possibleNFO);
$result = Misc::fileInfo($tmpPath);
if (!empty($result)) {
// Check if it's text.
if (preg_match('/(ASCII|ISO-8859|UTF-(8|16|32).*?)\\s*text/', $result)) {
@unlink($tmpPath);
return true;
// Or binary.
} else {
if (preg_match('/^(JPE?G|Parity|PNG|RAR|XML|(7-)?[Zz]ip)/', $result) || preg_match('/[\\x00-\\x08\\x12-\\x1F\\x0B\\x0E\\x0F]/', $possibleNFO)) {
@unlink($tmpPath);
return false;
}
}
}
// If above checks couldn't make a categorical identification, Use GetId3 to check if it's an image/video/rar/zip etc..
$check = (new \getid3())->analyze($tmpPath);
@unlink($tmpPath);
if (isset($check['error'])) {
// Check if it's a par2.
$par2info = new \Par2Info();
$par2info->setData($possibleNFO);
if ($par2info->error) {
// Check if it's an SFV.
$sfv = new \SfvInfo();
$sfv->setData($possibleNFO);
if ($sfv->error) {
return true;
}
}
}
}
return false;
}
示例2: _processExtractedFiles
/**
* Go through all the extracted files in the temp folder and process them.
*/
protected function _processExtractedFiles()
{
$nestedLevels = 0;
// Go through all the files in the temp folder, look for compressed files, extract them and the nested ones.
while ($nestedLevels < $this->_maxNestedLevels) {
// Break out if we checked more than x compressed files.
if ($this->_compressedFilesChecked >= self::maxCompressedFilesToCheck) {
break;
}
$foundCompressedFile = false;
// Get all the compressed files in the temp folder.
$files = $this->_getTempDirectoryContents('/.*\\.([rz]\\d{2,}|rar|zipx?|0{0,2}1)($|[^a-z0-9])/i');
if ($files instanceof \Traversable) {
foreach ($files as $file) {
// Check if the file exists.
if (is_file($file[0])) {
$rarData = @file_get_contents($file[0]);
if ($rarData !== false) {
$this->_processCompressedData($rarData);
$foundCompressedFile = true;
}
@unlink($file[0]);
}
}
}
// If we found no compressed files, break out.
if ($foundCompressedFile === false) {
break;
}
$nestedLevels++;
}
$fileType = [];
// Get all the remaining files in the temp dir.
$files = $this->_getTempDirectoryContents();
if ($files instanceof \Traversable) {
foreach ($files as $file) {
$file = (string) $file;
// Skip /. and /..
if (preg_match('/[\\/\\\\]\\.{1,2}$/', $file)) {
continue;
}
if (is_file($file)) {
// Process PAR2 files.
if ($this->_foundPAR2Info === false && preg_match('/\\.par2$/', $file)) {
$this->_siftPAR2Info($file);
} else {
if ($this->_releaseHasNoNFO === true && preg_match('/(\\.(nfo|inf|ofn)|info\\.txt)$/i', $file)) {
$this->_processNfoFile($file);
} else {
if (($this->_foundAudioInfo === false || $this->_foundAudioSample === false) && preg_match('/(.*)' . $this->_audioFileRegex . '$/i', $file, $fileType)) {
// Try to get audio sample/audio media info.
@rename($file, $this->tmpPath . 'audiofile.' . $fileType[2]);
$this->_getAudioInfo($this->tmpPath . 'audiofile.' . $fileType[2], $fileType[2]);
@unlink($this->tmpPath . 'audiofile.' . $fileType[2]);
} else {
if ($this->_foundJPGSample === false && preg_match('/\\.jpe?g$/i', $file)) {
$this->_getJPGSample($file);
@unlink($file);
} else {
if (($this->_foundSample === false || $this->_foundVideo === false || $this->_foundMediaInfo === false) && preg_match('/(.*)' . $this->_videoFileRegex . '$/i', $file)) {
$this->_processVideoFile($file);
} else {
if (in_array($this->_releaseGroupName, ['alt.binaries.u4e', 'alt.binaries.mom']) && preg_match('/Linux_2rename\\.sh/i', $file) && ($this->_release['categoryid'] == Category::CAT_OTHER_HASHED || $this->_release['categoryid'] == Category::CAT_MISC)) {
$this->_processU4ETitle($file);
} else {
$output = Misc::fileInfo($file);
if (!empty($output)) {
switch (true) {
case $this->_foundJPGSample === false && preg_match('/^JPE?G/i', $output):
$this->_getJPGSample($file);
@unlink($file);
break;
case ($this->_foundMediaInfo === false || $this->_foundSample === false || $this->_foundVideo === false) && preg_match('/Matroska data|MPEG v4|MPEG sequence, v2|\\WAVI\\W/i', $output):
$this->_processVideoFile($file);
break;
case ($this->_foundAudioSample === false || $this->_foundAudioInfo === false) && preg_match('/^FLAC|layer III|Vorbis audio/i', $output, $fileType):
switch ($fileType[0]) {
case 'FLAC':
$fileType = 'FLAC';
break;
case 'layer III':
$fileType = 'MP3';
break;
case 'Vorbis audio':
$fileType = 'OGG';
break;
}
@rename($file, $this->tmpPath . 'audiofile.' . $fileType);
$this->_getAudioInfo($this->tmpPath . 'audiofile.' . $fileType, $fileType);
@unlink($this->tmpPath . 'audiofile.' . $fileType);
break;
case $this->_foundPAR2Info === false && preg_match('/^Parity/i', $output):
$this->_siftPAR2Info($file);
break;
}
}
}
//.........这里部分代码省略.........