cwhite92/scene-release-parser-php

v2.0.0 2018-09-03 19:32 UTC

This package is not auto-updated.

Last update: 2024-09-12 01:20:41 UTC


README

Build Status Code Climate Test Coverage

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 问题