protected function execute(InputInterface $input, OutputInterface $output)
 {
     $path = realpath($input->getArgument('path'));
     if (!$path) {
         throw new Exception('Incorrect path');
     }
     $scandir = scandir($path);
     foreach ($scandir as $filename) {
         $file = $path . '/' . $filename;
         $ext = substr($filename, -3, 3);
         if (in_array($ext, ['mp4', 'avi', 'mkv'])) {
             try {
                 $release = new Release(substr($filename, 0, -4));
                 if ($filename != $release->__toString() . '.' . $ext) {
                     rename($file, dirname($file) . '/' . $release->__toString() . '.' . $ext);
                     $output->writeln('<comment>' . $filename . '</comment> renamed to <info>' . $release->__toString() . '.' . $ext . '</info>');
                 } else {
                     $output->writeln('<error>' . $filename . '</error> already renamed to "correct" scene release name : <comment>ignored</comment>');
                 }
             } catch (Exception $e) {
                 $exceptions[] = $filename;
             }
         }
     }
     if (count($exceptions)) {
         throw new Exception("Invalid release name :\n" . implode("\n", $exceptions));
     }
 }
Example #2
0
 public function parse($filepath)
 {
     if (!is_file($filepath)) {
         throw new Exception("File '" . $filepath . "' not found");
     }
     $basename = pathinfo($filepath, PATHINFO_FILENAME);
     $release = new Release($basename);
     $container = $this->mediainfo->getInfo($filepath);
     foreach ($container->getVideos() as $video) {
         // CODEC
         if (!$release->getEncoding()) {
             if ($codec = $video->get('codec_cc')) {
                 switch ($codec) {
                     case 'DIVX':
                         $release->setEncoding(Release::ENCODING_DIVX);
                         break;
                     case 'XVID':
                         $release->setEncoding(Release::ENCODING_XVID);
                         break;
                 }
             } else {
                 if ($codec = $video->get('encoded_library_name')) {
                     switch ($codec) {
                         case 'x264':
                             $release->setEncoding(Release::ENCODING_X264);
                             break;
                         case 'x265':
                             $release->setEncoding(Release::ENCODING_X265);
                             break;
                     }
                 } else {
                     if ($codec = $video->get('internet_media_type')) {
                         switch ($codec) {
                             case 'video/H264':
                                 $release->setEncoding(Release::ENCODING_H264);
                                 break;
                         }
                     }
                 }
             }
         }
         // RESOLUTION
         if (!$release->getResolution()) {
             $height = $video->get('height')->getAbsoluteValue();
             $width = $video->get('width')->getAbsoluteValue();
             if ($height >= 1000 || $width >= 1900) {
                 $release->setResolution(Release::RESOLUTION_1080P);
             } else {
                 if ($height >= 700 || $width >= 1200) {
                     $release->setResolution(Release::RESOLUTION_720P);
                 }
             }
         }
     }
     // LANGUAGE
     $audios = $container->getAudios();
     if (!$release->getLanguage()) {
         if (count($audios) > 1) {
             $release->setLanguage(Release::LANGUAGE_MULTI);
         } else {
             $languages = $audios[0]->get('language');
             if ($languages && $languages[1] != 'English') {
                 $release->setLanguage(strtoupper($languages[1]));
             } else {
                 $release->setLanguage($this->getDefaultLanguage());
             }
         }
     }
     return $release;
 }
<?php

require __DIR__ . '/../vendor/autoload.php';
use thcolin\SceneReleaseParser\Release;
$content = file_get_contents(__DIR__ . '/releases.txt');
$elements = [];
foreach (explode("\n", $content) as $release) {
    if (!$release) {
        continue;
    }
    $release = utf8_encode($release);
    $Release = new Release($release);
    $element = ['generated' => $Release->__toString(), 'title' => utf8_encode($Release->getTitle()), 'type' => utf8_encode($Release->getType())];
    if ($year = $Release->getYear()) {
        $element['year'] = utf8_encode($year);
    } else {
        $element['guess']['year'] = $Release->guessYear();
    }
    if ($language = $Release->getLanguage()) {
        $element['language'] = utf8_encode($language);
    } else {
        $element['guess']['language'] = $Release->guessLanguage();
    }
    if ($resolution = $Release->getResolution()) {
        $element['resolution'] = utf8_encode($resolution);
    } else {
        $element['guess']['resolution'] = $Release->guessResolution();
    }
    if ($source = $Release->getSource()) {
        $element['source'] = utf8_encode($source);
    }