mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-24 20:17:24 +08:00
technicial info
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
<?php
|
||||
|
||||
namespace Nexus\Torrent;
|
||||
|
||||
class TechnicalInformation
|
||||
{
|
||||
private $mediaInfo;
|
||||
|
||||
private $mediaInfoArr;
|
||||
|
||||
public function __construct(string $mediaInfo)
|
||||
{
|
||||
$this->mediaInfo = $mediaInfo;
|
||||
$this->mediaInfoArr = $this->getMediaInfoArr($mediaInfo);
|
||||
}
|
||||
|
||||
public function getMediaInfoArr(string $mediaInfo)
|
||||
{
|
||||
$arr = preg_split('/[\r\n]+/', $mediaInfo);
|
||||
$result = [];
|
||||
$parentKey = "";
|
||||
foreach ($arr as $key => $value) {
|
||||
$value = trim($value);
|
||||
if (empty($value)) {
|
||||
continue;
|
||||
}
|
||||
$rowKeyValue = explode(':', $value);
|
||||
$rowKeyValue = array_filter(array_map('trim', $rowKeyValue));
|
||||
if (count($rowKeyValue) == 1) {
|
||||
$parentKey = $rowKeyValue[0];
|
||||
} elseif (count($rowKeyValue) == 2) {
|
||||
if (empty($parentKey)) {
|
||||
continue;
|
||||
}
|
||||
$result[$parentKey][$rowKeyValue[0]] = $rowKeyValue[1];
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
public function getRuntime()
|
||||
{
|
||||
return $this->mediaInfoArr['General']['Duration'] ?? '';
|
||||
}
|
||||
|
||||
public function getResolution()
|
||||
{
|
||||
$width = $this->mediaInfoArr['Video']['Width'] ?? '';
|
||||
$height = $this->mediaInfoArr['Video']['Height'] ?? '';
|
||||
$ratio = $this->mediaInfoArr['Video']['Display aspect ratio'] ?? '';
|
||||
$result = $width . 'x' . $height;
|
||||
if ($ratio) {
|
||||
$result .= "($ratio)";
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getBitrate()
|
||||
{
|
||||
$result = $this->mediaInfoArr['Video']['Bit rate'] ?? '';
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getFramerate()
|
||||
{
|
||||
$result = $this->mediaInfoArr['Video']['Frame rate'] ?? '';
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getProfile()
|
||||
{
|
||||
$result = $this->mediaInfoArr['Video']['Format profile'] ?? '';
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getRefFrame()
|
||||
{
|
||||
foreach ($this->mediaInfoArr['Video'] as $key => $value) {
|
||||
if (strpos($key, 'Reference frames') !== false) {
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
public function getAudios()
|
||||
{
|
||||
$result = [];
|
||||
foreach ($this->mediaInfoArr as $parentKey => $values) {
|
||||
if (strpos($parentKey, 'Audio') == false) {
|
||||
continue;
|
||||
}
|
||||
$audioInfoArr = [];
|
||||
if (!empty($values['Language'])) {
|
||||
$audioInfoArr[] = $values['Language'];
|
||||
}
|
||||
if (!empty($values['Format'])) {
|
||||
$audioInfoArr[] = $values['Format'];
|
||||
}
|
||||
if (!empty($values['Channel(s)'])) {
|
||||
$audioInfoArr[] = $values['Channel(s)'];
|
||||
}
|
||||
if (!empty($values['Bit rate'])) {
|
||||
$audioInfoArr[]= "@" . $values['Bit rate'];
|
||||
}
|
||||
if (!empty($audioInfoArr)) {
|
||||
$result[$parentKey] = implode(" ", $audioInfoArr);
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getSubtitles()
|
||||
{
|
||||
$result = [];
|
||||
foreach ($this->mediaInfoArr as $parentKey => $values) {
|
||||
if (strpos($parentKey, 'Text') == false) {
|
||||
continue;
|
||||
}
|
||||
$audioInfoArr = [];
|
||||
if (!empty($values['Language'])) {
|
||||
$audioInfoArr[] = $values['Language'];
|
||||
}
|
||||
if (!empty($values['Format'])) {
|
||||
$audioInfoArr[] = $values['Format'];
|
||||
}
|
||||
if (!empty($audioInfoArr)) {
|
||||
$result[$parentKey] = implode(" ", $audioInfoArr);
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function renderOnDetailsPage()
|
||||
{
|
||||
global $lang_functions;
|
||||
$runtime = $this->getRuntime();
|
||||
$resolution = $this->getResolution();
|
||||
$bitrate = $this->getBitrate();
|
||||
$profile = $this->getProfile();
|
||||
$framerate = $this->getFramerate();
|
||||
$refFrame = $this->getRefFrame();
|
||||
$audios = $this->getAudios();
|
||||
$subtitles = $this->getSubtitles();
|
||||
$html = '<table>';
|
||||
if (!empty($runtime)) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user