cwhite92 / scene-release-parser-php
v2.0.0
2018-09-03 19:32 UTC
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- phpunit/phpunit: ^6.2
This package is not auto-updated.
Last update: 2024-09-12 01:20:41 UTC
README
PHP 库,解析场景发布名称以检索标题和标签(原始自 majestixx/scene-release-parser-php-lib)。
该库由一个类组成:thcolin\SceneReleaseParser\Release
,构造函数将尝试从发布名称中提取所有标签并为每个标签创建getters
,剩余部分将构建媒体(电影或电视剧)的标题。
安装
使用 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 问题