Download as PDF
SmartTUBE supports two VoD metadata formats:
- SmartLabs format — based on CableLabs 3.0 with extensions, additional fields, and provides improved support for multiple languages.
- HBO format — based on CableLabs 3.0 with discarding some XML fields. HBO importer processes only data specified in the chapter “HBO Format Example.”
Setting up automatic regular content import is described in the “Configuring Regular VOD Import” topic.
SmartLabs VoD Metadata Format
Basic Concepts
- All movies are imported from one XML file with the <ADI3>root. The file is downloaded via HTTP.
- One movie is represented by a set of elements: Movie (1 or more), Preview, Poster, Title and ContentGroup. ContentGroup links together all metadata blocks related to the movie.
- The licensing window start and end are individually specified for each movie as the <ContentGroup> attributes.
- In contrast to CableLabs 3.0, any number of genres can be specified for a movie (0 and more).
- You can specify several genres, rubrics (content type), countries and persons (actors, directors, producers) by using several xml tags. Each tag has a string uriId (or externalId) attribute and String value (name). Attribute uriId/externalId corresponds to the object’s external ID in the SDP DB. SDP uses this identifier to search this object (genre/country/etc.) in its DB when importing. If there is no object with such an external ID in SDP, the platform adds the new object with the defined name and external ID. If the object with such an external ID exists, SDP leaves the existing object or replaces its name with the new one, depending on the SDP configuration setting.
- In contrast to CableLabs 3.0, terms:SuggestedPrice, offer:PromotionalContentGroup, offer:BillingId, title:TitleBrief, title:TitleMedium, firstName are not mandatory (minOccurs=”0″, optional).
- Optional <content:posterType> field allows you to import different pictures for a movie. SDP supports importing ‘Poster’ (default) and ‘Screenshot’ movie pictures. You can import one Poster and several Screenshots (max 16) for a movie. All images are downloaded during import.
- New title:generic-metadata field requested by Provider is added for additional textual information.
- When importing movies, SDP tries to find the specified title:Genre and offer:CategoryRef among the ‘Genres’ and ‘Rubrics’ (content type) in the SDP database. If no matching entries are found, SDP adds a new genre and/or rubric to the database and links the movie to the new ones. CategoryRef also have uriId attribute to search in SDP database.
- In contrast to CableLabs 3.0, title:CountryOfOrigin is not an ISO-3166-1 country code (xsd type changed to type=”xsd:string”). Now CountryOfOrigin is an arbitrary string containing the country name, which is imported to SDP, if missing. You can import several countries using several CountryOfOrigin fields. You should use externalId attribute to determine country external id. SDP uses this identifier to search this country in its database when importing. If there is no country with such externalId in SDP, the platform adds the new country with the defined name and uriId. You do not need to define the country dictionary in SDP before import.
- Use title:AccessLevel field to specify movie access level (age rating, for example 0+, 3+, 18+, etc.). If not specified – min access level will be used for movie. The value should be taken from SDP pre-installed AccessLevel dictionary external ID.
- JPG and PNG files are supported for poster and screenshot images. The recommended size for posters — not less than 296×450 pixels, for screenshots — not less than 500×280 pixels. The specified proportions must be observed.
![]()
|
The identification of image type is performed as follows:
- By the header Content-Type: image/jpeg or Content-Type: image/png;
- If the header was not recognized, by the file extension in the URL (e.g. http://image_storage/imagename.jpg);
- If the file extension was not recognized, the error is logged.
|
Series Import
To import series with the corresponding episodes and seasons designation use the contentType argument in the <ContentGroup> field. It can take the following values:
- contentType=”series”
Example:
<ContentGroup uriId=“CGROUP_SD_VOD_129821_thecrucifixion_series” startDateTime=“2018-09-18T00:00:00” endDateTime=“2019-03-18T00:00:00” contentType=“series”>
<offer:TitleRef uriId=“TTL_SD_VOD_129821_thecrucifixion” />
<offer:MovieRef uriId=“MOV_SD_VOD_129821_thecrucifixion” />
<offer:PosterRef uriId=“POST_SD_VOD_129821_thecrucifixion_636733813107639486” />
<offer:PreviewRef uriId=“TRA_SD_VOD_129821_thecrucifixion” /> <!– The trailer is only supported for the series, not for seasons and / or episodes –>
</ContentGroup> |
- contentType=”season”
Example:
<ContentGroup uriId=“CGROUP_SD_VOD_129821_thecrucifixion_season_1” startDateTime=“2018-09-18T00:00:00” endDateTime=“2019-03-18T00:00:00” contentType=“season”>
<offer:TitleRef uriId=“TTL_SD_VOD_129821_thecrucifixion” />
<offer:MovieRef uriId=“MOV_SD_VOD_129821_thecrucifixion” />
<offer:PosterRef uriId=“POST_SD_VOD_129821_thecrucifixion_636733813107639486” />
<offer:ParentRef uriId=“CGROUP_SD_VOD_129821_thecrucifixion_series” /> <!– link to the series –>
</ContentGroup>
|
- contentType=”episode”
Example:
<ContentGroup uriId=“CGROUP_SD_VOD_129821_thecrucifixion” startDateTime=“2018-09-18T00:00:00” endDateTime=“2019-03-18T00:00:00” contentType=“episode”>
<offer:TitleRef uriId=“TTL_SD_VOD_129821_thecrucifixion” />
<offer:MovieRef uriId=“MOV_SD_VOD_129821_thecrucifixion” />
<offer:PosterRef uriId=“POST_SD_VOD_129821_thecrucifixion_636733813107639486” />
<offer:ParentRef uriId=“CGROUP_SD_VOD_129821_thecrucifixion_season_1” /> <!– link to the season –>
</ContentGroup>
|
![]()
|
If the contentType argument is not specified, the <ContentGroup> field is considered to contain the movie description (i.e. contentType = “movie”).
|
When importing serials, it is important to follow the sequence of descriptions in XML: first there should be a description of the series, then the season and only then the episode. Otherwise, an error on the series/season absence with the specified externalId will be displayed.
If the series/season is already present in the SmartTUBE SDP database, you can import individual episodes (with reference to the season by externalId) without adding the season information into the XML.
Inside the <title> section for the episode and season there are fields for specifying the season / episode number and the series title.
Example:
<Title uriId=“TTL_SD_VOD_129821_thecrucifixion”>
<title:LocalizableTitle>
<title:TitleLong>
Cuckoo
</title:TitleLong>
<!– Series title –>
<title:EpisodeName>
Cuckoo, ep. 2
</title:EpisodeName>
<!– Episode title. It can also be used for a season. –>
</title:LocalizableTitle>
<title:SeasonNumber>
1
</title:SeasonNumber>
<!– Season number –>
<title:EpisodeNumber>
10
</title:EpisodeNumber>
<!– Episode number –>
</Title>
|
All other fields related to the description of the series / episode (poster, genres, actors of the year) are similar to the fields described above for movies, and can be set separately for each episode.
Packaging
- In order to include one movie in several packages (bundles), add the appropriate <ContentGroupRef> to <Offer> elements corresponding to these packages.
- A movie is imported, no matter if it is included in the <Offer> section or not.
- The <Offer> section may link several movies to a set of rubrics and packages.
- Specified VOD bundle should exist before XML import. It should be created from AdminUI, for example.
- The <content:EncryptionInfo> section should be specified for each encrypted asset.
- If a movie asset is encrypted, specify true in the <content:Encryption> field nested within the <content:EncryptionInfo> section. Otherwise SDP will treat the asset as non-encrypted.
- You can set the alternative mapping for the assets’ encryption type specified by the content:EncryptionInfo section.
- The <content:EncryptionSystemInfo> field contains the asset identifier of the DRM system.
- The <content:DrmType> parameter contains the DRM type of which the asset is encrypted (securemedia, widevine, etc.) Value is constant and should be taken from the SDP DB, from the pre-configured SmartTUBE Admin Console > Administration > Encryption types dictionary.
- In contrast to CableLabs 3.0, ReceiverType (EncryptionInfoType) is not a mandatory field (minOccurs=”0″).
- Unencrypted previews (trailers) are only supported.
Metadata dictionaries (countries, content genres, content categories, personalities) are added to the system automatically, if no such value has been added previously. The comparison is performed by the externalID argument.
Multilanguage Support
- The following fields can be represented and displayed in several languages in the SmartTUBE apps (the fields are agreed between Provider and SmartLabs):
- title:TitleLong
- title:SummaryShort
- title:Genre
- title:CountryOfOrigin
- offer:CategoryRef
- title:Actor
- title:Director
- title:Producer
The list of localizable fields can be extended by an additional Operator request.
- In order to provide several translations, specify each variant in the field value separated by the appropriate language separator (see the Example 2):
Language
|
Separator*
|
English
|
@@en=
|
Czech
|
@@cz=
|
Greek
|
@@el=
|
* Language denotation is a lower-case, two-letter ISO 639 language code.
Example:
<title:Genre uriId=“Romance”>
@@en=Romance@@ru=Романтическая история
</title:Genre>
|
- If no language separator is specified, the whole value is attributed to the default language. The default language is specified in the SmartTUBE SDP configuration file system.conf (system-properties > metacontent > defaultLangForProvidersExternalIds).
- To avoid duplicates and exactly determine which object has to be updated in the SDP DB, it also needed to specify uriId or externalId attribute (see the Example 2) within the <Title> section fields. These IDs are used to compare parameters during import.
SmartLabs Format Examples
Example 1
One-language description of ‘Harry Potter And The Deathly Hallows: Part 2’ with one encrypted HD media file. SDP will imply the default language for this data.
For XML validation, you can download the XSD schemas of the SmartLabs format.
<?xml version=“1.0” encoding=“UTF-8”?>
<ADI3
xmlns=“https://smartlabs.tv/static/share/xsd/”
xmlns:content=“https://smartlabs.tv/static/share/xsd/content/1”
xmlns:offer=“https://smartlabs.tv/static/share/xsd/offer/1”
xmlns:title=“https://smartlabs.tv/static/share/xsd/title/1”
>
<!– start of the ”Harry Potter And The Deathly Hallows: Part 2″ movie metadata –>
<Movie uriId=“PAID000413282ASST00513862”>
<!– HD content asset in SDP. UriId corresponds to asset External ID in SDP database –>
<content:SourceUrl>ODG00513862M42.mpg</content:SourceUrl>
<!– relative path or full asset URL–>
<content:Resolution>private:HD</content:Resolution>
<!– asset type preceded by the ‘private:’ prefix–>
<content:Duration>PT02H05M02S</content:Duration>
<!– asset Duration in cablelabs format –>
<content:EncryptionInfo>
<!– For encrypted assets only. Skip this element if the asset is non-encrypted–>
<content:Encryption>true</content:Encryption>
<!– Specify this value if the asset is encrypted–>
<content:EncryptionSystemInfo>XTV-123456789</content:EncryptionSystemInfo>
<!– String asset id associated to the DRM side –>
<content:DrmType>securemedia</content:DrmType>
<!– Encryption type of which asset is encrypted (securemedia, widevine. playready, etc.) –>
</content:EncryptionInfo>
</Movie>
<Preview uriId=“PAID000413282PREV00513888”>
<!– Preview asset in SDP. Only unencrypted previews (trailers) are supported in the current implementation –>
<content:SourceUrl>ODG00513888P42.mpg</content:SourceUrl>
<!– relative path or full asset URL –>
</Preview>
<Poster uriId=“PAID000413282POST00513861”>
<content:SourceUrl>http://provider.location/images/ODG00513861I42.jpg</content:SourceUrl>
<!–full image URL –>
<content:posterType>Poster</content:posterType>
<!– ‘Poster’ means that the picture is a movie poster. More possible posterType values can be added in future. It can be ‘Screenshot’ for example–>
</Poster>
<Poster uriId=“PAID000413282POST00513862”>
<content:SourceUrl>http://provider.location/images/ODG00513861I43.jpg</content:SourceUrl>
<content:posterType>Screenshot</content:posterType>
<!– ‘Screenshot’ type picture –>
</Poster>
<Poster uriId=“PAID000413282POST00513863”>
<content:SourceUrl>http://provider.location/images/ODG00513861I44.jpg</content:SourceUrl>
<content:posterType>Screenshot</content:posterType>
<!– one more ‘Screenshot’. Max 16 screenshots –>
</Poster>
<Title uriId=“PAID000413282PROD00374006”>
<title:LocalizableTitle>
<!– the xml:lang attribute is not used –>
<title:TitleLong>Harry Potter And The Deathly Hallows: Part 2</title:TitleLong>
<!– the movie name imported to SDP –>
<title:SummaryShort>
Harry, Ron and Hermione search for Voldemort’s remaining Horcruxes in their effort to destroy the Dark Lord.
</title:SummaryShort>
<!– the movie description imported to SDP –>
<title:Actor fullName=“Daniel Radcliffe” externalId=“Daniel Radcliffe” />
<title:Actor fullName=“Emma Watson” externalId=“Emma Watson” />
<title:Actor fullName=“Rupert Grint” externalId=“Rupert Grint” />
<title:Director fullName=“David Yates” externalId=“David Yates” />
<title:Producer fullName=“David Barron” externalId=“David Barron” />
<title:Producer fullName=“David Heyman” externalId=“David Heyman” />
<title:Producer fullName=“J.K. Rowling” externalId=“J.K. Rowling” />
<title:EpisodeName>
Cuckoo, ep. 2
</title:EpisodeName>
</title:LocalizableTitle>
<title:Rating ratingSystem=“MPAA”>PG</title:Rating>
<title:Year>2011</title:Year>
<title:CountryOfOrigin externalId=“us”>USA</title:CountryOfOrigin>
<!– country –>
<title:CountryOfOrigin externalId=“ca”>Canada</title:CountryOfOrigin>
<!– another country–>
<title:Genre uriId=“ADVENTURE”>Adventure-Περιπέτεια</title:Genre>
<!– movie genre in SDP–>
<title:Genre uriId=“FANTASY”>Fantasy</title:Genre>
<!– another genre –>
<title:AccessLevel>12+</title:AccessLevel>
<title:ShowcaseId>16700877</title:ShowcaseId>
<!– showcase identifier, which should contains the movie –>
<title:IsPublished>false</title:IsPublished>
<!– is media file published or not –>
<title:ShowAsVod>true</title:ShowAsVod>
<!– is episode should be shown as vod –>
<!–
<title:SeasonNumber>1</title:SeasonNumber>
–>
<!– Season number (for episodes/seasons only) –>
<!–
<title:EpisodeNumber>10</title:EpisodeNumber>
–>
<!– Episode number (for episodes/seasons only) –>
<title:generic-metadata>
Any custom string. Optional.
</title:generic-metadata>
</Title>
<ContentGroup uriId=“PAID000413282” startDateTime=“2012-03-11T00:00:00Z” endDateTime=“2012-06-11T00:00:00Z”>
<!– uriId – movie externalId in SDP; startDateTime corresponds to Licensing_Window_Start, endDateTime – to Licensing_Window_End–>
<offer:TitleRef uriId=” PAID000413282PROD00374006″ />
<!– Movie title reference –>
<offer:MovieRef uriId=“PAID000413282ASST00513862” />
<!– Asset reference –>
<offer:PreviewRef uriId=“PAID000413282PREV00513888” />
<!– Preview asset reference –>
<offer:PosterRef uriId=“PAID000413282POST00513861” />
<!– Poster reference –>
<offer:PosterRef uriId=“PAID000413282POST00513862” />
<!– Screenshot 1 reference –>
<offer:PosterRef uriId=“PAID000413282POST00513863” />
<!– Screenshot 2 reference –>
<!–<offer:ParentRef uriId=”CGROUP_SD_VOD_129821_thecrucifixion_season_1″ />–>
<!– link to the season/series. For episodes/seasons only –>
</ContentGroup>
<Offer uriId=“”>
<offer:Presentation>
<offer:CategoryRef uriId=“VOD_Movies_EN_G-L” name=“VOD_Movies_EN_G-L” />
<!– movie rubrics imported to SDP –>
</offer:Presentation>
<offer:TermsRef uriId=“VOD bundle 1”>
<!– VoD bundle externalId in SDP. The required parameter — to specify which VoD bundle (package) must include imported movie –>
<offer:TvodPriceList>
<!– OPTIONAL (for tvod bundles only, if needed) – list of tvod prices to use (instead of default prices, managed on tvod bundle in AdminUI) –>
<offer:TvodPrice>
<offer:Price>100</offer:Price>
<!– full price (cents) –>
<offer:Duration>172800</offer:Duration>
<!– Rental duration (in seconds) –>
<offer:Quality>HD</offer:Quality>
<!– OPTIONAL, if needed, content asset quality –>
</offer:TvodPrice>
</offer:TvodPriceList>
</offer:TermsRef>
<offer:ContentGroupRef uriId=“PAID000413282” />
<!– Link to movie (ContentGroup field). Either ContentGroupRef or MovieRef is required — to specify which movie must be included to the specified (in TermsRef) VoD bundle. If ContentGroupRef is specified, all assets of this movie are added to the VoD bundle. –>
<offer:MovieRef uriId=“PAID000413282ASST00513862” />
<!– Link to asset (Movie field). OPTIONAL, if needed to set prices not to all movie assets, but to separate assets. In most cases ContentGroupRef is enough. Either ContentGroupRef or MovieRef is required — to specify which movie must be included to the specified (in TermsRef) VoD bundle. If MovieRef is specified, the asset is added to the VoD bundle. –>
</Offer>
<!– end of the ”Harry Potter And The Deathly Hallows: Part 2″ movie metadata –>
</ADI3>
|
Example 2
Here is a two-language valid example. In this case there are two video files, SD and HD, for the same movie. Both files are non-encrypted, so the EncryptionInfo section is omitted.
<?xml version=“1.0” encoding=“UTF-8”?>
<ADI3
xmlns=“https://smartlabs.tv/static/share/xsd/”
xmlns:content=“https://smartlabs.tv/static/share/xsd/content/1”
xmlns:offer=“https://smartlabs.tv/static/share/xsd/offer/1”
xmlns:title=“https://smartlabs.tv/static/share/xsd/title/1”
>
<Movie uriId=“PAID000413282ASST00513862” >
<content:SourceUrl>ODG00513862M42.mpg</content:SourceUrl>
<content:Resolution>private:HD</content:Resolution>
<content:Duration>PT02H05M02S</content:Duration>
</Movie>
<Movie uriId=“PAID000413282ASST00513863” >
<content:SourceUrl>ODG00513862M43.mpg</content:SourceUrl>
<content:Resolution>private:SD</content:Resolution>
<content:Duration>PT02H05M02S</content:Duration>
</Movie>
<Preview uriId=“PAID000413282PREV00513888”>
<content:SourceUrl>ODG00513888P42.mpg</content:SourceUrl>
</Preview>
<Poster uriId=“PAID000413282POST00513861”>
<content:SourceUrl>http://provider.location/images/ODG00513861I42en.jpg</content:SourceUrl>
<content:posterType>Poster</content:posterType>
</Poster>
<Title uriId=“PAID000413282PROD00374006”>
<title:LocalizableTitle >
<!– the xml:lang attribute is not used –>
<title:TitleLong>@@en=Harry Potter And The Deathly Hallows: Part 2@@ru=Гарри Поттер и дары смерти: Часть II</title:TitleLong>
<title:SummaryShort>
@@en=Harry, Ron and Hermione search for Voldemort’s remaining Horcruxes in their effort to destroy the Dark Lord.@@ru=В грандиозной последней главе битва между добрыми и злыми силами мира волшебников перерастает во всеобщую войну. Ставки ещё никогда не были так высоки, а поиск убежища — столь сложен. И быть может именно Гарри Поттеру придется пожертвовать всем в финальном сражении с Волан-де-Мортом. Способен ли наш герой спасти мир? И всё закончится здесь.
</title:SummaryShort>
<title:Actor fullName=“@@en=Daniel Radcliffe@@ru=Дэниел Рэдклифф” externalId=“Daniel Radcliffe”/>
<title:Actor fullName=“@@en=Emma Watson@@ru=Эмма Уотсон” externalId=“Emma Watson”/>
<title:Actor fullName=“@@en=Rupert Grint@@ru=Руперт Гринт” externalId=“Rupert Grint”/>
<title:Director fullName=“@@en=David Yates@@ru=Дэвид Ейтс” externalId=“David Yates”/>
<title:Producer fullName=“@@en=David Barron@@ru=Дэвид Бэрон” externalId=“David Barron”/>
<title:Producer fullName=“@@en=David Heyman@@ru=Дэвид Хьюмэн” externalId=“David Heyman”/>
<title:Producer fullName=“@@en=J.K. Rowling@@ru=J.K. Rowling” externalId=“J.K. Rowling”/>
</title:LocalizableTitle>
<title:Rating ratingSystem=“MPAA”>PG</title:Rating>
<title:Year>2011</title:Year>
<title:CountryOfOrigin externalId=“us”>@@en=USA@@ru=США</title:CountryOfOrigin>
<!– country –>
<title:CountryOfOrigin externalId=“ca”>@@en=Canada@@ru=Канада</title:CountryOfOrigin>
<!– another country –>
<title:Genre uriId=“ADVENTURE”>@@en=Adventure-Περιπέτεια@@ru=Приключения</title:Genre>
<title:AccessLevel>12+</title:AccessLevel>
<title:ShowcaseId>16700877</title:ShowcaseId>
<!– showcase identifier –>
<title:IsPublished>false</title:IsPublished>
<!– is media file published or not –>
<title:ShowAsVod>true</title:ShowAsVod>
<!– is episode should be shown as vod –>
<title:generic-metadata>
Any custom string. Optional.
</title:generic-metadata>
</Title>
<ContentGroup uriId=“PAID000413282” startDateTime=“2012-03-11T00:00:00Z” endDateTime=“2012-06-11T00:00:00Z”>
<!– uriId — movie externalId in SDP; startDateTime corresponds to Licensing_Window_Start, endDateTime — to Licensing_Window_End–>
<offer:TitleRef uriId=“PAID000413282PROD00374006”/>
<offer:MovieRef uriId=“PAID000413282ASST00513862”/>
<offer:MovieRef uriId=“PAID000413282ASST00513863”/>
<offer:PreviewRef uriId=“PAID000413282PREV00513888”/>
<offer:PosterRef uriId=“PAID000413282POST00513861”/>
<offer:PosterRef uriId=“PAID000413282POST00513862”/>
<offer:PosterRef uriId=“PAID000413282POST00513863”/>
</ContentGroup>
<Offer uriId=“”>
<offer:Presentation>
<offer:CategoryRef name=“@@en=VOD_Movies_EN_G-L@@ru=Фильмы от А до Я” uriId=“VOD_Movies_EN_G-L”/>
</offer:Presentation>
<offer:Presentation>
<offer:CategoryRef name=“@@en=VOD_Movies_Adventure@@ru=Приключенческие фильмы” uriId=“VOD_Movies_Adventure”/>
</offer:Presentation>
<offer:Presentation>
<offer:CategoryRef name=“@@en=VOD_Movies_Premieres@@ru=Премьеры” uriId=“VOD_Movies_Premieres”/>
</offer:Presentation>
<offer:TermsRef uriId=“VOD bundle 1”>
<!– VoD bundle externalId in SDP –>
<offer:TvodPriceList>
<!– OPTIONAL (for tvod bundles only, if needed) – list of tvod prices to use (instead of default prices, managed on tvod bundle in AdminUI) –>
<offer:TvodPrice>
<offer:Price>100</offer:Price>
<!– full price (cents) –>
<offer:Duration>172800</offer:Duration>
<!– Rental duration (in seconds) –>
<offer:Quality>HD</offer:Quality>
<!– OPTIONAL, if needed, content asset quality –>
</offer:TvodPrice>
</offer:TvodPriceList>
</offer:TermsRef>
<offer:ContentGroupRef uriId=“PAID000413282”/>
</Offer>
</ADI3>
|
HBO VoD Metadata Format
Basic Concepts
- Movie assets and metadata files are downloaded via FTP. The location and naming of files on the provider’s FTP server must comply with the following rules:.
- The movies on FTP should be located in individual directories (ex. /HBO_M70675_GAME_OF_THRONES_EP.01-_WINTER_IS_COMING/). The directory name is treated as the movie File name parameter in the SmartTUBE Admin Console.
- Inside each movie folder, there should be the /metadata folder with the ADI3.xml file (ex. /HBO_M70675_GAME_OF_THRONES_EP.01-_WINTER_IS_COMING/metadata/ADI3.XML) containing movie metadata.
- Poster filename should be as follows: “assetName” + “_poster_portrait.jpg” (ex. /HBO_M70675_GAME_OF_THRONES_EP.01-_WINTER_IS_COMING/HBO_M70675_GAME_OF_THRONES_EP._01_WINTER_IS_COMING_poster_portrait.jpg)
- Screenshot filename should be as follows: “assetName” + “_poster_landscape.jpg” (ex. /HBO_M70675_GAME_OF_THRONES_EP.01-_WINTER_IS_COMING/HBO_M70675_GAME_OF_THRONES_EP._01_WINTER_IS_COMING_poster_landscape.jpg)
- Setting up automatic regular content import is described in the Configuring Regular VOD Import article.
- During import, two parallel processes are executed:
- SDP imports metadata from the /metadata/ADI3.xml files to the DB. The full path to the movie playlist (manifest) requested by end-user devices is formed as described in the Configuring Movie Assets article.
- The transcoder imports assets from the FTP, transcodes them (if needed), stores in the operator’s CDN, and sends a notification to the SDP upon the transcoding competition. Until this notification is received, SDP does not publish the movie to end-user devices.
- Each time the import job is run, the importer compares the availability of movies on FTP and in the SDP DB:
- If the assets of some movie are not available on FTP at the time of import, these assets are also deleted from the operator’s CDN. To prevent this, add the following setting to the SDP configuration file system.conf:
system-properties = {
metacontent = {
hbo.dropUnusedProviderLinks = 0 // where “hbo” is the provider name from the SmartTUBE Admin Console > Administration > Content providers dictionary
}
}
|
- By default, once imported metadata is not updated on subsequent runs of the import job. To have metadata updated on every import, add the following setting to the system.conf:
system-properties = {
metacontent = {
hbo.overrideContentFields.do = 1
}
}
|
- All images are downloaded at the time of import. JPG and PNG files are supported. The recommended size for posters — not less than 296×450 pixels, for screenshots — not less than 500×280 pixels. The specified proportions must be observed.
![]()
|
The identification of image type is performed as follows:
1. By the header Content-Type: image/jpeg or Content-Type: image/png;
2. If the header was not recognized, by the file extension in the URL (e.x. http://image_storage/imagename.jpg);
3. If the file extension was not recognized, the error is logged.
|
- Movies can be also deleted via SmartTUBE Admin Console (see the Deleting Content article).
Movie Parameters
- All considered metadata fields are specified in the example below. Other fields are ignored. Example contains detailed comments of used fields.
- One movie is represented by a set of elements: <Asset xsi:type=”content:MovieType”> (1 or more), <Asset xsi:type=”content:PosterType”>, <Asset xsi:type=”title:TitleType”> and <Asset xsi:type=”offer:ContentGroupType”>. The <Asset xsi:type=”offer:ContentGroupType”> section links together all metadata blocks related to the movie.
- All movies are imported in published state. As soon the movies are imported, they immediately become visible to users, if the corresponding packages are available to users.
- The licensing window start and end are individually specified for each movie as the <Asset xsi:type=”content:MovieType” startDateTime=”YYYY-MM-DDTHH:MM:SSZ” endDateTime=”YYYY-MM-DDTHH:MM:SSZ“> attributes.
- You can specify any number of genres, rubrics (content type), countries and persons (actors, directors, producers) using corresponding xml tags.
- All the <Asset xsi:type=”content:PosterType”> tags are ignored, as images are downloaded from FTP using the directory naming specified in the “Basic Concepts” chapter.
- In contrast to CableLabs 3.0, <title:CountryOfOrigin> is not an ISO-3166-1 country code (xsd type changed to type=”xsd:string”). This is an arbitrary string containing the country name, which is imported to SDP, if missing. You can import several countries using several <title:CountryOfOrigin> tags.
- Use the <title:Rating> tag to specify the movie access level (age rating, for example 0+, 3+, 18+, etc.). If not specified, the minimal access level is used for the movie. Only the <title:Rating> tags with the ratingSystem=”TV” attribute are taken into account. The value must match the External ID field of the pre-configured Access levels dictionary.
Series Import
To import series use the <title:ShowType>Series</title:ShowType> construction. The episode, season and series are created in the SmartTUBE catalog automatically using data from the <Asset xsi:type=”title:TitleType”> section (see the example below).
All other fields related to the description of the series / episode (poster, genres, actors of the year) are similar to the fields described above for movies, and can be set separately for each episode.
To avoid doubling series, seasons, and episodes, the following mapping is used:
- The mapping is performed by the name of a series in the default language.For example: <title:LocalizableTitle xml:lang=”en”><title:TitleLong>Dora the Explorer</title:TitleLong></title:LocalizableTitle>
- The series name is converted to uppercase, spaces are removed:Dora the Explorer –> DORATHEEXPLORER
- The season and episode number is added to the result, as in the example:DORATHEEXPLORER — mapping unique ID of the series
DORATHEEXPLORER_2_3 — mapping unique ID of the third episode of the second season
Packaging
All the imported movies are placed in a single SVoD bundle created automatically with the following settings:
- Name: fake nonFree svod-package (SVOD) for provider = {Provider name}
- Content provider: HBO (configurable with the import job settings)
- Content delivery rule: SVOD
- External ID: DEFAULT_SVOD
The bundle configuring is performed via SmartTUBE Admin Console.
Automatic Dictionaries Updating
Metadata (movie titles, countries, content genres, content categories, personalities, etc.) are added to the corresponding SDP dictionaries automatically, if no such value has been added previously. Mapping the imported values to the existing ones in the corresponding SmartTUBE dictionaries uses the values enclosed in the movie description tags. For example, the value Drama of the <title:Genre>Drama</title:Genre> construction will be used for mapping as a genre External ID and as a name of a genre in default language.
Multilanguage Support
- The following fields can be represented and displayed in several languages in the SmartTUBE apps:
- title:TitleLong
- title:SummaryShort
- title:SummaryLong
- title:Genre
- title:CountryOfOrigin
- title:Actor
- title:Director
- title:Producer
- title:EpisodeName
The list of localizable fields can be extended by an additional Operator request.
- In order to provide several translations, specify each variant inside the <title:LocalizableTitle xml:lang=”xx“> tag, where “xx“ is a language ID (a lower-case, two-letter ISO 639 language code). See the example below.
- If no <title:LocalizableTitle> section with the language ID is specified, the <title:…> tags are attributed to the default language. The default language is specified in the SmartTUBE SDP configuration parameters (system.conf > system-properties > metacontent > defaultLangForProvidersExternalIds)
HBO Format Example
An example below is an XML description of an episode of a series and differs from the movie description by having the series related tags.
<?xml version=“1.0” encoding=“utf-8”?>
<ADI3
xmlns=“urn:cablelabs:md:xsd:core:3.0”
xmlns:xs=“http://www.w3.org/2001/XMLSchema”
xmlns:content=“urn:cablelabs:md:xsd:content:3.0”
xmlns:core=“urn:cablelabs:md:xsd:core:3.0”
xmlns:offer=“urn:cablelabs:md:xsd:offer:3.0”
xmlns:title=“urn:cablelabs:md:xsd:title:3.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns:xml=“http://www.w3.org/XML/1998/namespace”>
<Asset xsi:type=“offer:OfferType” uriId=“mediahub.hbo.hu/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE” providerVersionNum=“1” creationDateTime=“2021-03-26T00:00:00Z” startDateTime=“2021-04-02T00:00:00Z” endDateTime=“2022-09-30T23:59:00Z”>
<core:AssetName deprecated=“true”>DORA THE EXPLORER VIII. EP. 05 – DORA AND PERRITO TO THE RESCUE</core:AssetName>
<!– Ignored –>
<core:Provider>HBO</core:Provider>
<!– Ignored –>
<core:Ext>
<!– Ignored –>
<App_Data App=“VOD” Name=“Asset_ID” Value=“HBO_210329_M95221”/>
<!– Ignored –>
</core:Ext>
<offer:BillingId>HBO01</offer:BillingId>
<!– Ignored –>
<offer:ContentGroupRef uriId=“mediahub.hbo.hu/ContentGroup/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE”/>
<!– Ignored –>
</Asset>
<Asset xsi:type=“title:TitleType” uriId=“mediahub.hbo.hu/Title/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE” providerVersionNum=“1” creationDateTime=“2021-03-26T00:00:00Z” startDateTime=“2021-04-02T00:00:00Z” endDateTime=“2022-09-30T23:59:00Z”>
<!– The providerVersionNum and creationDateTime attributes are ignored –>
<core:Ext>
<!– Entire section is ignored –>
<App_Data App=“VOD” Name=“SeasonNumber” Value=“8”/>
<App_Data App=“VOD” Name=“TotalEpisodeNumber” Value=“19”/>
<App_Data App=“VOD” Name=“OriginalLanguage” Value=“en”/>
</core:Ext>
<title:LocalizableTitle xml:lang=“en”>
<title:TitleLong>
Dora the Explorer
</title:TitleLong>
<!– Series name –>
<title:SummaryShort>
Join Dora for adventures in an imaginative tropical world filled with jungles, beaches and rainforests. Dora is bilingual and uses her knowledge of English and Spanish to communicate with her friends, overcome obstacles and reach her goals.
</title:SummaryShort>
<!– Series short description –>
<title:SummaryLong>
Armed with her trusty backpack and friend Boots the monkey, Dora is off on adventures in her imaginative, tropical world filled with jungles, beaches and rainforests. Using her knowledge of English and Spanish to communicate with her friends, she overcomes obstacles to reach her goals in each episode.
</title:SummaryLong>
<!– Series long description –>
<title:ActorDisplay>
Fatima Ptacek, Koda Gursoy, Alexandria Suarez, Skai Jackson
</title:ActorDisplay>
<!– Ignored –>
<title:Actor fullName=“Fatima Ptacek”/>
<!– Episode, season and series actors –>
<title:Actor fullName=“Koda Gursoy”/>
<title:Actor fullName=“Alexandria Suarez”/>
<title:Actor fullName=“Skai Jackson”/>
<title:DirectorDisplay>
</title:DirectorDisplay>
<!– Ignored –>
<title:Director fullName=“”/>
<!– Episode, season and series director –>
<title:Producer fullName=“Shrimp Roll”/>
<!– Episode, season and series producer –>
<title:StudioDisplay>
TURNER BROADCASTING SYSTEM EUROP
</title:StudioDisplay>
<!– Ignored –>
<title:EpisodeName>
Dora and Perrito to the Rescue
</title:EpisodeName>
<!– Episode name –>
<title:EpisodeID>
5
</title:EpisodeID>
<!– Episode number –>
</title:LocalizableTitle>
<title:LocalizableTitle xml:lang=“cs”>
<title:TitleLong>
Dora průzkumnice
</title:TitleLong>
<title:SummaryShort>
Vydejte se s Dorou na dobrodružství do tropického světa plného džunglí a deštných pralesů. Dora mluví dvěma jazyky a své znalosti angličtiny a španělštiny využívá k tomu, aby se dorozuměla s přáteli, překonala překážky a dosáhla svých cílů.
</title:SummaryShort>
<title:SummaryLong>
Se svým batůžkem a opičím kamarádem Botičkou se Dora vydá na dobrodružství do nápaditého tropického světa plného džunglí, pláží a deštných pralesů. Dora mluví dvěma jazyky a své znalosti angličtiny a španělštiny využívá v každé epizodě k tomu, aby se dorozuměla s přáteli, překonala překážky a dosáhla svých cílů.
</title:SummaryLong>
<title:ActorDisplay>
Fatima Ptacek, Koda Gursoy, Alexandria Suarez, Skai Jackson
</title:ActorDisplay>
<title:Actor fullName=“Fatima Ptacek”/>
<title:Actor fullName=“Koda Gursoy”/>
<title:Actor fullName=“Alexandria Suarez”/>
<title:Actor fullName=“Skai Jackson”/>
<title:DirectorDisplay>
</title:DirectorDisplay>
<title:Director fullName=“”/>
<title:Producer fullName=“Shrimp Roll”/>
<title:StudioDisplay>
TURNER BROADCASTING SYSTEM EUROP
</title:StudioDisplay>
<title:EpisodeID>
5
</title:EpisodeID>
</title:LocalizableTitle>
<title:Rating ratingSystem=“TV”>
All
</title:Rating>
<!– Episode, season and series age rating –>
<title:IsClosedCaptioning>
false
</title:IsClosedCaptioning>
<!– Ignored –>
<title:DisplayRunTime>
00:23:08
</title:DisplayRunTime>
<!– Episode duration. Only taken into account if the <Asset xsi:type=”content:MovieType”><content:Duration> tag is omitted. –>
<title:Year>
2013
</title:Year>
<!– Episode release year –>
<title:CountryOfOrigin>
US
</title:CountryOfOrigin>
<title:Genre>
Animation
</title:Genre>
<title:Genre>
Kids
</title:Genre>
<title:ShowType>
Series
</title:ShowType>
<!– Content rubrics. If the value is not “Series”, the metadata is processed as a movie. –>
</Asset>
<Asset xsi:type=“offer:ContentGroupType” uriId=“mediahub.hbo.hu/ContentGroup/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE” providerVersionNum=“1” creationDateTime=“2021-03-26T00:00:00Z” startDateTime=“2021-04-02T00:00:00Z” endDateTime=“2022-09-30T23:59:00Z”>
<offer:TitleRef uriId=“mediahub.hbo.hu/Title/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE”/>
<offer:MovieRef uriId=“mediahub.hbo.hu/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE.ts”/>
<offer:PosterRef uriId=“mediahub.hbo.hu/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE/metadata/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE_poster_portrait.jpg”/>
<offer:PosterRef uriId=“mediahub.hbo.hu/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE/metadata/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE_poster_landscape.jpg”/>
<offer:PosterRef uriId=“mediahub.hbo.hu/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE/metadata/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE_season_poster_portrait.jpg”/>
<offer:PosterRef uriId=“mediahub.hbo.hu/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE/metadata/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE_season_poster_landscape.jpg”/>
</Asset>
<Asset xsi:type=“content:MovieType” uriId=“mediahub.hbo.hu/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE.ts” providerVersionNum=“1” creationDateTime=“2021-03-26T00:00:00Z” startDateTime=“2021-04-02T00:00:00Z” endDateTime=“2022-09-30T23:59:00Z”>
<!– startDateTime and endDateTime — the start and end date of the movie license period. –>
<core:Provider>HBO</core:Provider>
<content:ContentFileSize>2194272080</content:ContentFileSize>
<content:ContentCheckSum>E64B75A86418E69D977091834AD26072</content:ContentCheckSum>
<content:Duration>PT00H23M08S</content:Duration>
<content:Language>en</content:Language>
<content:DubbedLanguage>cs</content:DubbedLanguage>
</Asset>
<Asset xsi:type=“content:PosterType” uriId=“mediahub.hbo.hu/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE/metadata/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE_poster_portrait.jpg” providerVersionNum=“1” creationDateTime=“2021-03-26T00:00:00Z” startDateTime=“2021-04-02T00:00:00Z” endDateTime=“2022-09-30T23:59:00Z”>
<!– All the <Asset xsi:type=”content:PosterType”> tags are ignored, as in the case of HBO import, images are uploaded from FTP using the specified directory naming. –>
<content:ContentFileSize>180134</content:ContentFileSize>
<content:ContentCheckSum>5EE76232B46E925E9E1899AC5C7C560E</content:ContentCheckSum>
<content:X_Resolution>700</content:X_Resolution>
<content:Y_Resolution>1000</content:Y_Resolution>
<content:Codec>JPG</content:Codec>
</Asset>
<Asset xsi:type=“content:PosterType” uriId=“mediahub.hbo.hu/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE/metadata/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE_poster_landscape.jpg” providerVersionNum=“1” creationDateTime=“2021-03-26T00:00:00Z” startDateTime=“2021-04-02T00:00:00Z” endDateTime=“2022-09-30T23:59:00Z”>
<content:ContentFileSize>466725</content:ContentFileSize>
<content:ContentCheckSum>2B1F0C285C4D287168E6E75E698BD022</content:ContentCheckSum>
<content:X_Resolution>1920</content:X_Resolution>
<content:Y_Resolution>1080</content:Y_Resolution>
<content:Codec>JPG</content:Codec>
</Asset>
<Asset xsi:type=“content:PosterType” uriId=“mediahub.hbo.hu/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE/metadata/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE_season_poster_portrait.jpg” providerVersionNum=“1” creationDateTime=“2021-03-26T00:00:00Z” startDateTime=“2021-04-02T00:00:00Z” endDateTime=“2022-09-30T23:59:00Z”>
<content:ContentFileSize>123634</content:ContentFileSize>
<content:ContentCheckSum>F94AD7A9CC77DA9ABF2C8A2B278C4783</content:ContentCheckSum>
<content:X_Resolution>700</content:X_Resolution>
<content:Y_Resolution>1000</content:Y_Resolution>
<content:Codec>JPG</content:Codec>
</Asset>
<Asset xsi:type=“content:PosterType” uriId=“mediahub.hbo.hu/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE/metadata/HBO_M95221_DORA_THE_EXPLORER_VIII._EP._05_-_DORA_AND_PERRITO_TO_THE_RESCUE_season_poster_landscape.jpg” providerVersionNum=“1” creationDateTime=“2021-03-26T00:00:00Z” startDateTime=“2021-04-02T00:00:00Z” endDateTime=“2022-09-30T23:59:00Z”>
<content:ContentFileSize>279904</content:ContentFileSize>
<content:ContentCheckSum>11D0EE4F716D60B4DCE8D75BA6F593B6</content:ContentCheckSum>
<content:X_Resolution>1920</content:X_Resolution>
<content:Y_Resolution>1080</content:Y_Resolution>
<content:Codec>JPG</content:Codec>
</Asset>
</ADI3> |