Skip to content

Commit

Permalink
add Subtitle type fix #15
Browse files Browse the repository at this point in the history
  • Loading branch information
mhor committed Jan 25, 2015
1 parent dfa853a commit 73018bb
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 6 deletions.
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,16 @@ foreach ($audios as $audio) {
}
```

### Get subtitles information from media information container

```php
$subtitles = $mediaInfoContainer->getSubtitles();

foreach ($subtitles as $subtitle) {
// ... do something
}
```

### Get images information from media information container

```php
Expand Down
26 changes: 26 additions & 0 deletions src/Container/MediaInfoContainer.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Mhor\MediaInfo\Type\Audio;
use Mhor\MediaInfo\Type\General;
use Mhor\MediaInfo\Type\Image;
use Mhor\MediaInfo\Type\Subtitle;
use Mhor\MediaInfo\Type\Video;

class MediaInfoContainer
Expand All @@ -14,6 +15,7 @@ class MediaInfoContainer
const AUDIO_CLASS = 'Mhor\MediaInfo\Type\Audio';
const IMAGE_CLASS = 'Mhor\MediaInfo\Type\Image';
const VIDEO_CLASS = 'Mhor\MediaInfo\Type\Video';
const SUBTITLE_CLASS = 'Mhor\MediaInfo\Type\Subtitle';

/**
* @var string
Expand All @@ -35,6 +37,11 @@ class MediaInfoContainer
*/
private $videos = array();

/**
* @var Subtitle[]
*/
private $subtitles = array();

/**
* @var Image[]
*/
Expand Down Expand Up @@ -88,6 +95,14 @@ public function getVideos()
return $this->videos;
}

/**
* @return Subtitle[]
*/
public function getSubtitles()
{
return $this->subtitles;
}

/**
* @param General $general
*/
Expand Down Expand Up @@ -115,6 +130,9 @@ public function add(AbstractType $trackType)
case self::GENERAL_CLASS:
$this->setGeneral($trackType);
break;
case self::SUBTITLE_CLASS:
$this->addSubtitle($trackType);
break;
default:
throw new \Exception('Unknow type');
}
Expand Down Expand Up @@ -143,4 +161,12 @@ private function addImage(Image $image)
{
$this->images[] = $image;
}

/**
* @param Subtitle $subtitle
*/
private function addSubtitle(Subtitle $subtitle)
{
$this->subtitles[] = $subtitle;
}
}
4 changes: 4 additions & 0 deletions src/Factory/TypeFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Mhor\MediaInfo\Type\Audio;
use Mhor\MediaInfo\Type\General;
use Mhor\MediaInfo\Type\Image;
use Mhor\MediaInfo\Type\Subtitle;
use Mhor\MediaInfo\Type\Video;

class TypeFactory
Expand All @@ -14,6 +15,7 @@ class TypeFactory
const IMAGE = 'Image';
const GENERAL = 'General';
const VIDEO = 'Video';
const SUBTITLE = 'Text';

/**
* @param $type
Expand All @@ -31,6 +33,8 @@ public function create($type)
return new General();
case self::VIDEO:
return new Video();
case self::SUBTITLE:
return new Subtitle();
default:
throw new \Exception('Type doesn\'t exist');
}
Expand Down
7 changes: 7 additions & 0 deletions src/Type/Subtitle.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?php

namespace Mhor\MediaInfo\Type;

class Subtitle extends AbstractType
{
}
14 changes: 10 additions & 4 deletions test/Builder/MediaInfoContainerBuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Mhor\MediaInfo\Test\Builder;

use Mhor\MediaInfo\Builder\MediaInfoContainerBuilder;
use Mhor\MediaInfo\Factory\TypeFactory;
use Mhor\MediaInfo\Type\AbstractType;

class TrackTestType extends AbstractType{}
Expand All @@ -26,24 +27,29 @@ public function testAddTrackType()
{
$mediaInfoContainerBuilder = new MediaInfoContainerBuilder();

$mediaInfoContainerBuilder->addTrackType('Audio', array());
$mediaInfoContainerBuilder->addTrackType(TypeFactory::AUDIO, array());
$mediaContainer = $mediaInfoContainerBuilder->build();
$audios = $mediaContainer->getAudios();
$this->assertEquals(0, count($audios[0]->get()));

$mediaInfoContainerBuilder->addTrackType('Video', array());
$mediaInfoContainerBuilder->addTrackType(TypeFactory::VIDEO, array());
$mediaContainer = $mediaInfoContainerBuilder->build();
$videos = $mediaContainer->getVideos();
$this->assertEquals(0, count($videos[0]->get()));

$mediaInfoContainerBuilder->addTrackType('General', array());
$mediaInfoContainerBuilder->addTrackType(TypeFactory::GENERAL, array());
$mediaContainer = $mediaInfoContainerBuilder->build();
$this->assertEquals(0, count($mediaContainer->getGeneral()->get()));

$mediaInfoContainerBuilder->addTrackType('Image', array());
$mediaInfoContainerBuilder->addTrackType(TypeFactory::IMAGE, array());
$mediaContainer = $mediaInfoContainerBuilder->build();
$images = $mediaContainer->getImages();
$this->assertEquals(0, count($images[0]->get()));

$mediaInfoContainerBuilder->addTrackType(TypeFactory::SUBTITLE, array());
$mediaContainer = $mediaInfoContainerBuilder->build();
$subtitles = $mediaContainer->getSubtitles();
$this->assertEquals(0, count($subtitles[0]->get()));
}

/**
Expand Down
3 changes: 2 additions & 1 deletion test/Parser/MediaInfoOutputParserTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ public function testGetMediaInfoContainer()
$this->assertEquals(20974464, $audios[0]->get('samples_count'));
$this->assertEquals(null, $audios[0]->get('test'));

$this->assertEquals(34, count($mediaInfoContainer->getGeneral()->get()));
$subtitles = $mediaInfoContainer->getSubtitles();
$this->assertEquals(16, count($subtitles[0]->get()));
}
}
30 changes: 29 additions & 1 deletion test/fixtures/mediainfo-output.xml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,34 @@
<Stream_size>18.1 MiB (98%)</Stream_size>
<Proportion_of_this_stream>0.98404</Proportion_of_this_stream>
</track>

<track type="Text" streamid="7">
<Count>195</Count>
<Count_of_stream_of_this_kind>8</Count_of_stream_of_this_kind>
<Kind_of_stream>Text</Kind_of_stream>
<Kind_of_stream>Text</Kind_of_stream>
<Stream_identifier>6</Stream_identifier>
<Stream_identifier>7</Stream_identifier>
<StreamOrder>9</StreamOrder>
<ID>11</ID>
<ID>11</ID>
<Unique_ID>652628868</Unique_ID>
<Format>UTF-8</Format>
<Commercial_name>UTF-8</Commercial_name>
<Codec_ID>S_TEXT/UTF8</Codec_ID>
<Codec_ID_Info>UTF-8 Plain Text</Codec_ID_Info>
<Codec>S_TEXT/UTF8</Codec>
<Codec>UTF-8</Codec>
<Codec_Info>UTF-8 Plain Text</Codec_Info>
<Language>ja</Language>
<Language>Japanese</Language>
<Language>Japanese</Language>
<Language>ja</Language>
<Language>jpn</Language>
<Language>ja</Language>
<Default>No</Default>
<Default>No</Default>
<Forced>No</Forced>
<Forced>No</Forced>
</track>
</File>
</Mediainfo>

0 comments on commit 73018bb

Please sign in to comment.