thcolin/scene-release-parser

dev-master 2017-08-04 23:29 UTC

This package is not auto-updated.

Last update: 2024-09-25 23:04:15 UTC


README

Build Status Code Climate Test Coverage

PHP库,用于解析场景发布名称以检索标题和标签(源自 majestixx/scene-release-parser-php-lib)。

该库包含一个类:thcolin\SceneReleaseParser\Release,构造函数将尝试从发布名称中提取所有标签并为每个标签创建getter,剩余部分将构建媒体(电影或电视剧)的标题。

安装

使用composer安装

composer require thcolin/scene-release-parser dev-master

发布示例

开始使用该库的最简单方法是使用场景发布名称作为第一个参数实例化一个新的Release对象,它将检索所有标签和名称

use thcolin\SceneReleaseParser\Release;

// Optionals arguments
$strict = true; // if no tags found, it will throw an exception
$defaults = []; // defaults values for : language, resolution and year

$Release = new Release("Mr.Robot.S01E05.PROPER.VOSTFR.720p.WEB-DL.DD5.1.H264-ARK01", $strict, $defaults);

// TYPE
echo($Release -> getType()); // tvshow (::TVSHOW)

// TITLE
echo($Release -> getTitle()); // Mr Robot

// LANGUAGE
echo($Release -> getLanguage()); // VOSTFR

// YEAR
echo($Release -> getYear()); // null (no tag in the release name)
echo($Release -> guessYear()); // 2015 (year of the system)
echo($Release -> guess() -> getYear()); // 2015 (year of the system)

// RESOLUTION
echo($Release -> getResolution()); // 720p

// SOURCE
echo($Release -> getSource()); // WEB

// DUB
echo($Release -> getDub()); // null (no tag in the release name)

// ENCODING
echo($Release -> getEncoding()); // h264

// GROUP
echo($Release -> getGroup()); // ARK01

// FLAGS
print_r($Release -> getFlags()); // [PROPER, DD5.1]

// SCORE
echo($Release -> getScore()); // 7 (bigger is better, max : 7)

// ONLY TVSHOW
echo($Release -> getSeason()); // 1
echo($Release -> getEpisode()); // 5

猜测

可以猜测当前Release的未知信息

use thcolin\SceneReleaseParser\Release;

$Release = new Release("Bataille a Seattle BDRip", false, [
  'language' => 'FRENCH' // default to Release::LANGUAGE_DEFAULT (VO)
]);

// LANGUAGE
echo($Release -> getLanguage()); // null
echo($Release -> guessLanguage()); // FRENCH

// RESOLUTION
echo($Release -> getResolution()); // null
echo($Release -> guessResolution()); // SD

// YEAR
echo($Release -> getYear()); // null
echo($Release -> guessYear()); // 2017 (current year)

// Will set guessed values to the Release
$Release -> guess();

// LANGUAGE
echo($Release -> getLanguage()); // FRENCH

// RESOLUTION
echo($Release -> getResolution()); // SD

// YEAR
echo($Release -> getYear()); // 2017 (current year)

分析

为了获得最佳结果,您可以直接分析一个file,该方法将使用mediainfo

use thcolin\SceneReleaseParser\Release;

// Mhor\MediaInfo::setConfig arguments (default to empty)
$mediainfo = [
  // Optional, just for example
  'command' => '/usr/local/bin/mediainfo'
];

$Release = Release::analyze('/home/downloads/Bataille a Seattle BDRip.avi', $mediainfo);

// RELEASE
echo($Release -> getRelease(Release::GENERATED_RELEASE)): // Bataille.A.Seattle.FRENCH.720p.BDRip.x264-NOTEAM

// RESOLUTION
echo($Release -> getResolution()); // 720p

// ENCODING
echo($Release -> getEncoding()); // x264

// LANGUAGE
echo($Release -> getLanguage()); // FRENCH

二进制文件

bin文件夹中,您找到了一个名为scene-release-renamer的可执行文件,它需要一个<path>参数(默认为当前工作目录)。它将扫描<path>,搜索视频文件(avi、mp4、mkv、mov)和需要重命名(如果混乱)的文件夹,使用有效的生成场景发布名称。场景发布名称将使用当前文件名和mediainfo解析的信息(如果可用)来构建。如果出现错误,您将能够手动修复它们。

使用

php bin/scene-release-renamer <path> [--non-verbose] [--non-interactive] [--non-invasive] [--mediainfo=/usr/local/bin/mediainfo] [--default-(language|resolution|year)=value]

结果

测试

使用PHPUnit,在/utils文件夹中有一个脚本用于生成测试的json数据,它将从同一文件夹中的releases.txt文件中提取发布名称。使用它来生成测试所需的数据,但在测试之前,请确保所有生成数据都是有效的,如果不是这样,这将毫无意义。

错误

待办事项

  • Release->guessResolution()应考虑$Release->source
  • 添加Release::LANGUAGE_*常量
    • ReleaseTest中使用它们
    • 并在README ## Guess
  • Release::__toString添加boolean $flags
    • Release::getRelease中实现选项
    • 如果true,则将Release->flags添加到生成的发布名称中
  • 解决CodeCoverage问题