|
|
Line 3: |
Line 3: |
|
| |
|
| = Digital Metadata = | | = Digital Metadata = |
| Digital Metadata can passed through key-values using the Nielsen reserved keys. The keys and values are listed by product below. | | Digital Metadata can pass through key values using the Nielsen reserved keys. The keys and values are listed by the product below. |
|
| |
|
| == Digital Content Ratings (DCR) Metadata == | | == Content Metadata== |
| === Video Metadata ===
| |
| <!--
| |
|
| |
|
| ==== Example Video Metadata Object ====
| |
| <syntaxhighlight lang="javascript">
| |
| var contentMetadataObject =
| |
| {
| |
| type: 'content',
| |
| assetid: 'VID-123456',
| |
| program: 'The Big Bang Theory',
| |
| title: 'The Pants Alternative S03E18', //no abbreviations or shorthand
| |
| length: '1320', //lengths in seconds
| |
| airdate: '2021-03-21T12:00:00Z',
| |
| isfullepisode: 'y',
| |
| adloadtype: '2',
| |
| segB: 'custom segment B', // optional
| |
| segC: 'custom segment C', // optional
| |
| crossId1: 'Standard Episode ID', // optional
| |
| crossId2: 'Content Originator' //optional
| |
| };
| |
| </syntaxhighlight>
| |
|
| |
| === Ad Metadata ===
| |
| The Ad Metadata (if applicable) should be passed for each individual ad.
| |
| {| class="wikitable" | | {| class="wikitable" |
| |- | | |- |
| ! Keys !! Description !! Values !! Required | | ! Nielsen Key !! MMS Attribute Name/Field Name !! Description !! Values !! Required |
| |- | | |- |
| | type || type of Ad || <code>'preroll'</code>, <code>'midroll'</code>, <code>'postroll'</code> <br> <code>'ad'</code> - If specific type can not be identified.|| ✓ | | | type || || type of asset || "content" || yes |
| |- | | |- |
| | assetid || unique ID assigned to Ad || custom <br>(no [[Special Characters]]) || ✓ | | | assetid || Content ID, mms_tid || unique ID assigned to an asset within the same media house. || "For content on simulcast channels, this has a standard format: simulcast_channelnumber (e.g. for Channel TV4, the expected value is: simulcast_29). |
| |}
| | A complete list of channel reference libraries with channel numbers is on the [https://mms.se/?page_id=108 MMS homepage] |
|
| |
|
| ==== Example Ad Object ====
| | For VoDs, it does not need to follow the simulcast_channelnumber format. |
| <syntaxhighlight lang="javascript">
| |
| var adMetadataObject =
| |
| {
| |
| type: 'preroll',
| |
| assetid: 'AD-1'
| |
| };
| |
| </syntaxhighlight>
| |
|
| |
|
| === Static Metadata ===
| | Length limit: 20 characters |
| {| class="wikitable"
| | [https://engineeringportal.nielsen.com/docs/Special_Characters no special characters] || yes || |
| | |- |
| | | length || Clip Length, ns_st_cl || length of content in seconds || Length of content in seconds. |
| | - for 24/7 live stream, 86400 |
| | - for event-Live streams, the planned length |
| | - for VoD, video length || yes |
| | |- |
| | | client_passthrough_parameters || MMS Values, mms_values || pass-through parameters || Example || mandatory for clients that have DAI service (Telia, Telenor, Canal-digital, Comhem, Boxer, Sappa, Discovery, Cmore) |
| | |- |
| | | Example || Example || Example || Example || Example |
| |- | | |- |
| ! Key !! Description !! Data Type !! Value !! Required?
| | | Example || Example || Example || Example || Example |
| |- | | |- |
| | type || asset type || fixed || <code>'static'</code> || Yes | | | Example || Example || Example || Example || Example |
| |- | | |- |
| | assetid || Unique ID for each article || dynamic || custom <br>(no [[Special Characters]]) || Yes | | | Example || Example || Example || Example || Example |
| |- | | |- |
| | section || section of each site (e.g. section value should be first level in page URL: website.com/section). Limit to 25 unique values || dynamic || custom <br>(no [[Special Characters]]) || Yes | | | Example || Example || Example || Example || Example |
| |- | | |- |
| | segA || custom segment for reporting: Limit to 25 unique values across custom segments (segA + segB + segC) || dynamic || custom || No | | | Example || Example || Example || Example || Example |
| |- | | |- |
| | segB || custom segment for reporting: Limit to 25 unique values across custom segments (segA + segB + segC) || dynamic || custom || No | | | Example || Example || Example || Example || Example |
| |- | | |- |
| | segC || custom segment for reporting: Limit to 25 unique values across custom segments (segA + segB + segC) || dynamic || custom || No | | | Example || Example || Example || Example || Example |
| |} | | |} |
|
| |
|
| The values passed through the Nielsen keys will determine the breakouts that are seen in reporting. The custom segments (A, B & C) will roll into the sub-brand. To not use custom segments A, B and C, do not pass any value in these keys.
| |
|
| |
|
| ==== Example Static Metadata Object ====
| | |
| | |
| | |
| | |
| | example of metadata object for content |
| | |
| <syntaxhighlight lang="javascript"> | | <syntaxhighlight lang="javascript"> |
| var contentMetadataObject = | | var contentMetadataObject = { |
| { | | "assetid": "cz-500358-98731568435405", |
| type: 'static', | | "type": "content", |
| assetid: 'HHF887465-9486', // *DYNAMIC METADATA*: unique ID for each article **REQUIRED** | | "program": "Vítejte na svobodě", |
| section: 'SPORTS', // *DYNAMIC METADATA*: section of site **REQUIRED** | | "title": "2. díl - 20.6.2018 20:00", |
| segA: 'HD Videos', // *DYNAMIC METADATA*: custom segment | | "length": "3359", |
| segB: '', // *DYNAMIC METADATA*: custom segment | | "airdate": "20180620 20:00:00", |
| segC: '' // *DYNAMIC METADATA*: custom segment | | "isfullepisode": "y", |
| };
| | "crossId1": "915 954 39504", |
| </syntaxhighlight>
| | "nol_c1": "p1,", |
| | | "nol_c2": "p2, 651678089925925", |
| == Digital TV Ratings (DTVR) Metadata ==
| | "segB": "011", |
| === Content Metadata ===
| | "segC": "", |
| {| class="wikitable"
| | "adloadtype": "2", |
| |-
| | "hasAds": "1" |
| ! Key !! Description !! Values !! Required
| |
| |-
| |
| | type || type of asset || "content" || ✓
| |
| |-
| |
| | adModel || linear vs dynamic ad model || * 1) - Linear – matches TV ad load * 2) Dynamic – Dynamic Ad Insertion (DAI) || ✓
| |
| |-
| |
| |}
| |
| ====Example Content Object====
| |
| <syntaxhighlight lang="javascript"> var contentMetadataObject =
| |
| {
| |
| type: 'content', | |
| adModel: '1' | |
| }; | | }; |
| </syntaxhighlight> | | </syntaxhighlight> |
| ==== Custom Variables Extension ====
| |
| If you are looking for additional reporting options, reach out to us. We have a [[Custom Variables Extension]] and can work with you to obtain your desired reporting.
| |
|
| |
|
| |
|
| |
|
| | == Ad Metadata== |
|
| |
|
| {| class="wikitable" | | {| class="wikitable" |
| |- | | |- |
| ! Key | | ! Nielsen Key !! MMS Attribute Name/Field Name !! Description !! Values !! Required |
| ! Description | |
| ! style="width: 14%;" | Values | |
| ! style="width: 12%;" | Required for Audio/Video? | |
| ! style="width: 12%;" | Required for Static (page)? | |
| ! Reported for
| |
| |-
| |
| | clientid || Brand value is automatically populated through the App ID provided. The value passed here will override the default value. (e.g. Multiple brands in App) || custom || Optional || Optional || Audio / Video and Static Measurement
| |
| |-
| |
| | subbrand || VCID value is automatically populated through the App ID provided. This value passed here will override the default value. (e.g. Multiple Sub-brands in App) || custom || Optional || Optional || Audio / Video and Static Measurement
| |
| |-
| |
| | type ||
| |
| Type of measurement:
| |
| *audio / video – "content"
| |
| *page – "static"
| |
| *ad – "preroll", "midroll" or "postroll"
| |
| || "content", "static" || Mandatory || Mandatory ||
| |
| |-
| |
| | assetid || ID assigned to content. '''Must be unique and consistent''' across all content at the episode level, as well as across platforms (e.g. iOS and Android use the same ID). || custom<br>(no [[Special Characters]]) || Mandatory || Not Required ||
| |
| |-
| |
| | section || Section of site || custom || Not Required || Mandatory ||
| |
| |-
| |
| | isfullepisode || Full episode flag ||
| |
| *"y" or "lf" - full episode
| |
| *"n" or "sf" - short form
| |
| || Mandatory || Not Required ||
| |
| |-
| |
| | program || Program name || custom || Mandatory || Not Required || Audio / Video Measurement
| |
| |-
| |
| | title || Episode title || custom || Mandatory || Not Required || Audio / Video Measurement
| |
| |-
| |
| | length || Length of content in seconds for VOD. 0 may be used for Live content if the exact content length is not known. || custom || Mandatory || Not Required ||
| |
| |- | | |- |
| | segA || Segment A (this is not available for audio / video Measurement reporting as the episode title is reported) || custom || Not Required || Not Required || Static Measurement | | | assetid || Co || d || d || yes || |
| |- | | |- |
| | segB || Segment B || custom || Not Required || Not Required || Audio / Video and Static Measurement | | | type || 0 || “1” || “1” || = 2 || |
| |- | | |- |
| | segC || Segment C || custom || Not Required || Not Required || Audio / Video and Static Measurement | | | program || 0 || “1” || “1” || = 2 || |
| |- | | |- |
| | crossId1 || Standard episode ID. Gracenote/TMS ID should be used when available. Must be unique per episode. || custom || Optional || Not Required || | | | title || 0 || “1” || “1” || = 2 || |
| |- | | |- |
| | crossId2 || Content originator (required only for distributors) || custom || Optional || Not Required || | | | length || 0 || “1” || “1” || = 2 || |
| |- | | |- |
| | airdate || Original (local) air date and time (Eastern Time for US) || YYYYMMDD HH24:MI:SS || Mandatory || Not Required || | | | airdate || 0 || “1” || “1” || = 2 || |
| |- | | |- |
| | pipmode || | | | isfullepisode || 0 || “1” || “1” || = 2 || |
| Current state of picture-in-picture (PIP) mode on device.
| |
| *"true" if audio / video measurement is displayed in PIP mode
| |
| *"false" if audio / video measurement is displayed in regular mode
| |
| || "true", "false" || Optional || Not Required || Audio / Video Measurement | |
| |- | | |- |
| | adloadtype || | | | crossId1 || 0 || “1” || “1” || = 2 || |
| Type of ad load:
| |
| #Linear - matches TV ad load
| |
| #Dynamic - Dynamic Ad Insertion (DAI)
| |
| || "1" - Linear | |
| "2" - Dynamic
| |
| || Mandatory for DCR || Not Required || DCR | |
| |- | | |- |
| | adModel || | | | c1 || 0 || “1” || “1” || = 2 || |
| Type of ad model:
| |
| #Linear - matches TV ad load
| |
| #Dynamic - Dynamic Ad Insertion (DAI)
| |
| || "1" - Linear | |
| "2" - Dynamic
| |
| || Mandatory for DTVR || Not Required || DTVR | |
| |- | | |- |
| | progen || Genre (required only for non-TV originated content). See [[DCR OTT Genre List]] for acceptable values. || e.g. DD for Daytime Drama || Required for non-TV content || Not Required | | | c2 || 0 || “1” || “1” || = 2 || |
| |} | |
| | |
| '''clientid & subbrand (vcid)'''
| |
| By default, clientid and subbrand are setup in Nielsen backend configuration to capture brand and sub-brand information. The fields get populated from backend for a registered client appid. But if an app contains multiple brands and sub-brands and client is willing to give credit to another brand or sub-brand then :
| |
| *Client app developer can override the clientid and subbrand (brand and sub-brand info.) in [[loadMetadata]] call to get a proper measurement for a desired brand and sub-brand.
| |
| **If no clientid and subbrand are specified in CMS of a content and an ad, default values reported in the Configuration will be reported.
| |
| **If clientid and subbrand are specified in CMS of the content or ad, the most recent clientid and subbrand will be reported in subsequent pings. To report with a different clientid and subbrand, include the new values for the keys in their subsequent [[loadMetadata]] call.
| |
| '''Picture-in-picture (PIP) mode'''
| |
| Once the app detects PIP mode, call [[loadMetadata]] with the same set of assetids, values and with one additional parameter "pipmode": "true". Once PIP mode is disabled in the device, call [[loadMetadata]] again with "pipmode":"false".
| |
| | |
| ==== Custom Variables Extension ====
| |
| Contact Nielsen Technical Account Manager (TAM) to configure any custom variables, as needed for implementing the application.
| |
| | |
| See [[Custom Variables Extension]] for more information.
| |
| | |
| ==== Advertisement Metadata ====
| |
| {| class="wikitable"
| |
| |- | | |- |
| ! Key !! Description !! Values !! Required for Audio / Video? !! Required for Static (page)
| | | segB || 0 || “1” || “1” || = 2 || |
| |- | | |- |
| | type || Type of ad || "preroll" | | | segC || 0 || “1” || “1” || = 2 || |
| "midroll"
| |
| "postroll"
| |
| || Mandatory || Not Required | |
| |- | | |- |
| | assetid || An ID assigned to the advertisement. Can be an internal ID, an ID provided by the ad server, or a randomly generated ID. Must be unique across all ads || custom || Mandatory || Not Required | | | adloadtype || 0 || “1” || “1” || = 2 || |
| |- | | |- |
| | title || Title of the advertisement || "MyAdName" || Mandatory || Not Required | | | hasAds || P|| zí) || “0” || =1 |
| |} | | |} |
|
| |
| === Passing Metadata ===
| |
| The required metadata can be passed as key values through the loadMetadata method. The sample code below shows a metadata objects for various assets.
| |
| '''Audio / Video Measurement Asset'''
| |
| Type should be "content"
| |
| <syntaxhighlight lang="json"> {
| |
| "type": "content",
| |
| "assetName": "myassetName",
| |
| "length": "300.0",
| |
| "title": "myTitle",
| |
| "program": "myProgram",
| |
| "censuscategory": "myCensusCategory",
| |
| "assetid": "myAssetId",
| |
| "channelName": "myChannel",
| |
| "adloadtype": "2",
| |
| "segB": "segmentB",
| |
| "segC": "segmentC",
| |
| "isfullepisode":"y",
| |
| "crossId1": "Reference11",
| |
| "crossId2": "Reference22",
| |
| "airdate": "20161013 20:00:00"
| |
| }</syntaxhighlight>
| |
|
| |
| '''Static (Page) Measurement Asset'''
| |
| Type should be "static"
| |
| <syntaxhighlight lang="json"> {
| |
| "type": "static",
| |
| "assetid": "static123",
| |
| "section": "siteSection",
| |
| "segA": "segmentA",
| |
| "segB": "segmentB",
| |
| "segC": "segmentC"
| |
| }</syntaxhighlight>
| |
|
| |
| '''For any of the ad types'''
| |
| <syntaxhighlight lang="json"> {
| |
| "type": "midroll",
| |
| "length": "30.0",
| |
| "assetid": "myMidrollAssetId",
| |
| "adloadtype": "2",
| |
| "tv": "true",
| |
| "dataSrc": "cms"
| |
| }</syntaxhighlight>
| |
| <blockquote>'''Note''': In case the individual ad details are not available, send ad pod (presence) details through the <code>loadMetadata</code> and playhead position through <code>setPlayheadPosition</code>.</blockquote>
| |
|
| |
| '''loadMetadata'''
| |
| The object can then be passed when calling [[loadMetadata]].
| |
| <syntaxhighlight lang="java"> loadMetadata(jsonMetadataObject);</syntaxhighlight>
| |
|
| |
| -->
| |