Probably fixed things by not really doing anything in particular?

This commit is contained in:
flash 2023-07-12 17:50:27 +00:00
parent fb9d9b02a0
commit d8e02e7f12
2 changed files with 25 additions and 11 deletions

View file

@ -3,6 +3,7 @@ namespace Uiharu;
use stdClass; use stdClass;
use Imagick; use Imagick;
use RuntimeException;
use Index\IO\Stream; use Index\IO\Stream;
use Index\IO\ProcessStream; use Index\IO\ProcessStream;
@ -23,23 +24,35 @@ final class FFMPEG {
} }
public static function probe(string $url): ?object { public static function probe(string $url): ?object {
return json_decode( $command = sprintf(
shell_exec(
sprintf(
'ffprobe -show_streams -show_format -print_format json -v quiet -i %s', 'ffprobe -show_streams -show_format -print_format json -v quiet -i %s',
escapeshellarg($url) escapeshellarg($url)
)
)
); );
$ffprobe = proc_open($command, [1 => ['pipe', 'w'], 2 => ['pipe', 'w']], $pipes);
if(!is_resource($ffprobe))
throw new RuntimeException('Could not open ffprobe.');
try {
$stderr = trim(stream_get_contents($pipes[2]));
if(!empty($stderr))
throw new RuntimeException('ffprobe: ' . $stderr);
$stdout = trim(stream_get_contents($pipes[1]));
if(empty($stdout))
throw new RuntimeException('ffprobe did not report any errors but exited without any output');
} finally {
proc_close($ffprobe);
}
return json_decode($stdout);
} }
public static function cleanProbe(string $url): ?object { public static function cleanProbe(string $url): ?object {
return self::cleanProbeResult(self::probe($url)); return self::cleanProbeResult(self::probe($url));
} }
public static function cleanProbeResult(?object $in): ?object { public static function cleanProbeResult(?object $in): object {
if($in === null)
return null;
$out = new stdClass; $out = new stdClass;
if(!empty($in->format)) { if(!empty($in->format)) {

View file

@ -4,6 +4,7 @@ namespace Uiharu\Lookup;
use Uiharu\AudioTags; use Uiharu\AudioTags;
use Uiharu\Url; use Uiharu\Url;
use Index\MediaType; use Index\MediaType;
use Index\Colour\Colour;
class WebLookupMediaResult extends WebLookupResult implements \Uiharu\IHasMediaInfo { class WebLookupMediaResult extends WebLookupResult implements \Uiharu\IHasMediaInfo {
private object $mediaInfo; private object $mediaInfo;
@ -26,7 +27,7 @@ class WebLookupMediaResult extends WebLookupResult implements \Uiharu\IHasMediaI
public function hasColour(): bool { public function hasColour(): bool {
return false; return false;
} }
public function getColour(): int { public function getColour(): Colour {
throw new RuntimeException('Unsupported'); throw new RuntimeException('Unsupported');
} }