thcolin / scene-release-parser
dev-master
2017-08-04 23:29 UTC
Requires
- mhor/php-mediainfo: ~2.1
- symfony/console: ^3.2
- symfony/framework-bundle: ^3.2
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- phpunit/phpunit: ^6.2
This package is not auto-updated.
Last update: 2024-09-25 23:04:15 UTC
README
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问题