diff --git a/.gitignore b/.gitignore
index 6eeaa59..8072fd6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
-__pycache__
-*.swp
-ddexui
+__pycache__
+*.swp
+ddexui
*.swn
*.swo
out
@@ -8,3 +8,4 @@ PIL
build
EGG-INFO
eggs.pth
+/wheelhouse/
diff --git a/ddex/__init__.py b/ddex/__init__.py
index e69de29..49297bc 100644
--- a/ddex/__init__.py
+++ b/ddex/__init__.py
@@ -0,0 +1,45 @@
+import xml.etree.cElementTree as ET
+import datetime
+from ddex.message_header import MessageHeader
+from ddex.release import ReleaseIdType
+
+
+def generate_batch_id(now=datetime.datetime.now):
+ return now().strftime("%Y%m%d%H%M%S%f")[:-3]
+
+class DDEX:
+
+ def __init__(self, sender, recipient, releases=[], resources=[], update=False):
+ self.update = update
+ self.releases = releases
+ self.resources = resources
+ self.sender = sender
+ self.recipient = recipient
+
+ def write(self, file_name):
+ root = ET.Element("ernm:NewReleaseMessage", {'MessageSchemaVersionId': 'ern/341', 'LanguageAndScriptCode': 'en', 'xs:schemaLocation': 'http://ddex.net/xml/ern/341 http://ddex.net/xml/ern/341/release-notification.xsd', 'xmlns:ernm': 'http://ddex.net/xml/ern/341', 'xmlns:xs':'http://www.w3.org/2001/XMLSchema-instance'})
+ header = self.__write_message_header(root)
+ root.append(header)
+
+ update_indicator = ET.SubElement(root, "UpdateIndicator")
+ if(self.update):
+ update_indicator.text = "UpdateMessage"
+ else:
+ update_indicator.text = "OriginalMessage"
+
+ resource_list = ET.SubElement(root, "ResourceList")
+ for resource in self.resources:
+ resource_list.append(resource.write())
+
+ release_list = ET.SubElement(root, "ReleaseList")
+ deal_list = ET.SubElement(root, "DealList")
+
+ for release in self.releases:
+ release_list.append(release.write())
+ deal_list.append(release.write_deals())
+
+ tree = ET.ElementTree(root)
+ tree.write(file_name)
+
+ def __write_message_header(self, root):
+ return MessageHeader(self.sender, self.recipient).write();
diff --git a/ddex/ddex.py b/ddex/ddex.py
deleted file mode 100644
index c64c75e..0000000
--- a/ddex/ddex.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import xml.etree.cElementTree as ET
-import datetime
-from DDEXUI.ddex.message_header import MessageHeader
-from DDEXUI.ddex.release import ReleaseIdType
-
-def generate_batch_id(now=datetime.datetime.now):
- return now().strftime("%Y%m%d%H%M%S%f")[:-3]
-
-class DDEX:
-
- def __init__(self, sender, recipient, releases=[], resources=[], update=False):
- self.update = update
- self.releases = releases
- self.resources = resources
- self.sender = sender
- self.recipient = recipient
-
- def write(self, file_name):
- root = ET.Element("ernm:NewReleaseMessage", {'MessageSchemaVersionId': 'ern/341', 'LanguageAndScriptCode': 'en', 'xs:schemaLocation': 'http://ddex.net/xml/ern/341 http://ddex.net/xml/ern/341/release-notification.xsd', 'xmlns:ernm': 'http://ddex.net/xml/ern/341', 'xmlns:xs':'http://www.w3.org/2001/XMLSchema-instance'})
- header = self.__write_message_header(root)
- root.append(header)
-
- update_indicator = ET.SubElement(root, "UpdateIndicator")
- if(self.update):
- update_indicator.text = "UpdateMessage"
- else:
- update_indicator.text = "OriginalMessage"
-
- resource_list = ET.SubElement(root, "ResourceList")
- for resource in self.resources:
- resource_list.append(resource.write())
-
- release_list = ET.SubElement(root, "ReleaseList")
- deal_list = ET.SubElement(root, "DealList")
-
- for release in self.releases:
- release_list.append(release.write())
- deal_list.append(release.write_deals())
-
- tree = ET.ElementTree(root)
- tree.write(file_name)
-
- def __write_message_header(self, root):
- return MessageHeader(self.sender, self.recipient).write();
diff --git a/ddex/ddex_builder.py b/ddex/ddex_builder.py
index c432776..ca70562 100644
--- a/ddex/ddex_builder.py
+++ b/ddex/ddex_builder.py
@@ -1,6 +1,6 @@
-from DDEXUI.ddex.ddex import DDEX
-from DDEXUI.ddex.resource import Resource
-from DDEXUI.ddex.release import ReleaseIdType
+from ddex import DDEX
+from ddex.resource import Resource
+from ddex.release import ReleaseIdType
class DDEXBuilder:
def __init__(self):
@@ -39,7 +39,7 @@ def build(self):
def get_upc(self):
try:
- return list(filter(lambda release: release.release_id.type == ReleaseIdType.Upc, self._releases))[0].release_id.id
+ return list(filter(lambda release: release.release_id.type == ReleaseIdType.Upc, self._releases))[0].release_id.id
except Exception as e:
print("No product release!")
raise e
diff --git a/ddex/file_metadata.py b/ddex/file_metadata.py
index 8abbb6d..8f90020 100644
--- a/ddex/file_metadata.py
+++ b/ddex/file_metadata.py
@@ -4,7 +4,7 @@ def __init__(self, md5, name, extension):
self.name = name
self.extension = extension
-class ImageFileMetadata:
+class ImageFileMetadata(FileMetadata):
def __init__(self, md5, name, extension, width, height):
FileMetadata.__init__(self, md5, name, extension)
self.width = width
diff --git a/ddex/message_header.py b/ddex/message_header.py
index 854df93..68df498 100644
--- a/ddex/message_header.py
+++ b/ddex/message_header.py
@@ -6,7 +6,6 @@ class MessageHeader:
def __init__(self, sender, recipient):
self.sender = sender
self.recipient = recipient
-
def write(self):
message_header = ET.Element('MessageHeader')
diff --git a/ddex/party.py b/ddex/party.py
index bd58d80..427162a 100644
--- a/ddex/party.py
+++ b/ddex/party.py
@@ -1,5 +1,5 @@
import xml.etree.cElementTree as ET
-from DDEXUI.ddex.enum import enum
+from ddex.enum import enum
PartyType = enum(MessageSender=1, MessageRecipient=2)
diff --git a/ddex/release.py b/ddex/release.py
index a4d5aa4..916766c 100644
--- a/ddex/release.py
+++ b/ddex/release.py
@@ -1,115 +1,115 @@
-import xml.etree.cElementTree as ET
-from DDEXUI.ddex.enum import enum
-
-ReleaseIdType = enum(Upc=1, Isrc=2)
-ReleaseType = enum(Single=1)
-
-class ReleaseId:
- def __init__(self, type, id):
- self.type = type
- self.id = id
-
- def write(self):
- name = None
- attrs = {}
- if(self.type == ReleaseIdType.Upc):
- name = "ICPN"
- attrs = {"IsEan": "false"}
- elif(self.type == ReleaseIdType.Isrc):
- name = "ISRC"
- element = ET.Element(name, attrs)
- element.text = self.id
- return element
-
-class Release:
- def __init__(self, title, cline, pline, year, release_reference, release_id, release_type, artist, label, parental_warning):
- self.release_type = release_type
- self.release_id = release_id
- self.genres = []
- self.pline = pline
- self.release_reference = release_reference
- self.cline = cline
- self.year = str(year)
- self.title = title
- self.artist = artist
- self.label = label
- self.deals = []
- self.release_resource_references = []
- if(parental_warning):
- self.parental_warning = "Explicit"
- else:
- self.parental_warning = "NotExplicit"
-
- def write(self):
- release = ET.Element("Release")
- releaseId = ET.SubElement(release, "ReleaseId")
- releaseId.append(self.release_id.write())
- self.__add_element(release, "ReleaseReference", self.release_reference)
- referenceTitle = ET.SubElement(release, "ReferenceTitle")
- self.__add_element(referenceTitle, "TitleText", self.title)
- resource_reference_list = ET.SubElement(release, "ReleaseResourceReferenceList")
-
- resource_group = ET.Element("ResourceGroup")
- i = 0
- for ref, ref_type in self.release_resource_references:
- self.__add_element(resource_reference_list, "ReleaseResourceReference", ref, {"ReleaseResourceType":ref_type})
- content_item = self.__add_element(resource_group, "ResourceGroupContentItem")
- self.__add_element(content_item, "SequenceNumber", str(i + 1))
- self.__add_element(content_item, "ResourceType", "SoundRecording")
- self.__add_element(content_item, "ReleaseResourceReference", ref)
- i = i+1
-
- self.__add_element(release, "ReleaseType", self.release_type)
- release_details_by_territory = ET.SubElement(release, "ReleaseDetailsByTerritory")
- ET.SubElement(release_details_by_territory, "TerritoryCode").text = "Worldwide"
- self.__add_element(release_details_by_territory, "DisplayArtistName", self.artist)
- self.__add_element(release_details_by_territory, "LabelName", self.label)
- self.__write_titles(release, release_details_by_territory)
- self.__write_genres(release_details_by_territory)
- self.__write_artist(release_details_by_territory)
- self.__add_element(release_details_by_territory, "ParentalWarningType", self.parental_warning)
- release_details_by_territory.append(resource_group)
- pline = ET.SubElement(release, "PLine")
- self.__add_element(pline, "Year", self.year)
- self.__add_element(pline, "PLineText", self.pline)
- cline = ET.SubElement(release, "CLine")
- self.__add_element(cline, "Year", self.year)
- self.__add_element(cline, "CLineText", self.cline)
- return release
-
- def __add_element(self, parent, name, text="", attrs={}):
- element = ET.SubElement(parent, name, attrs)
- element.text = text
- return element
-
- def __write_artist(self, release_details_by_territory):
- artist = ET.SubElement(release_details_by_territory, "DisplayArtist")
- party_name = ET.SubElement(artist, "PartyName")
- self.__add_element(party_name, "FullName", self.artist)
- self.__add_element(artist, "ArtistRole", "MainArtist")
-
- def __write_genres(self, release_details_by_territory):
- for genre in self.genres:
- genreElement = ET.SubElement(release_details_by_territory, "Genre")
- ET.SubElement(genreElement, "GenreText").text = genre
-
- def __write_titles(self, release, release_details_by_territory):
- for type in ["FormalTitle", "DisplayTitle", "GroupingTitle"]:
- self.__add_title(release_details_by_territory, type)
-
- def __add_title(self, release_details_by_territory, type):
- title = ET.SubElement(release_details_by_territory, "Title", {"TitleType": type})
- self.__add_element(title, "TitleText", self.title)
-
- def add_deal(self, deal):
- self.deals.append(deal)
-
- def add_resource_reference(self, reference, release_resource_type="PrimaryResource"):
- self.release_resource_references.append((reference, release_resource_type))
-
- def write_deals(self):
- release_deal = ET.Element("ReleaseDeal")
- self.__add_element(release_deal, "DealReleaseReference", self.release_reference)
- for deal in self.deals:
- release_deal.append(deal.write())
- return release_deal
+import xml.etree.cElementTree as ET
+from ddex.enum import enum
+
+ReleaseIdType = enum(Upc=1, Isrc=2)
+ReleaseType = enum(Single=1)
+
+class ReleaseId:
+ def __init__(self, type, id):
+ self.type = type
+ self.id = id
+
+ def write(self):
+ name = None
+ attrs = {}
+ if(self.type == ReleaseIdType.Upc):
+ name = "ICPN"
+ attrs = {"IsEan": "false"}
+ elif(self.type == ReleaseIdType.Isrc):
+ name = "ISRC"
+ element = ET.Element(name, attrs)
+ element.text = self.id
+ return element
+
+class Release:
+ def __init__(self, title, cline, pline, year, release_reference, release_id, release_type, artist, label, parental_warning):
+ self.release_type = release_type
+ self.release_id = release_id
+ self.genres = []
+ self.pline = pline
+ self.release_reference = release_reference
+ self.cline = cline
+ self.year = str(year)
+ self.title = title
+ self.artist = artist
+ self.label = label
+ self.deals = []
+ self.release_resource_references = []
+ if(parental_warning):
+ self.parental_warning = "Explicit"
+ else:
+ self.parental_warning = "NotExplicit"
+
+ def write(self):
+ release = ET.Element("Release")
+ releaseId = ET.SubElement(release, "ReleaseId")
+ releaseId.append(self.release_id.write())
+ self.__add_element(release, "ReleaseReference", self.release_reference)
+ referenceTitle = ET.SubElement(release, "ReferenceTitle")
+ self.__add_element(referenceTitle, "TitleText", self.title)
+ resource_reference_list = ET.SubElement(release, "ReleaseResourceReferenceList")
+
+ resource_group = ET.Element("ResourceGroup")
+ i = 0
+ for ref, ref_type in self.release_resource_references:
+ self.__add_element(resource_reference_list, "ReleaseResourceReference", ref, {"ReleaseResourceType":ref_type})
+ content_item = self.__add_element(resource_group, "ResourceGroupContentItem")
+ self.__add_element(content_item, "SequenceNumber", str(i + 1))
+ self.__add_element(content_item, "ResourceType", "SoundRecording")
+ self.__add_element(content_item, "ReleaseResourceReference", ref)
+ i = i+1
+
+ self.__add_element(release, "ReleaseType", self.release_type)
+ release_details_by_territory = ET.SubElement(release, "ReleaseDetailsByTerritory")
+ ET.SubElement(release_details_by_territory, "TerritoryCode").text = "Worldwide"
+ self.__add_element(release_details_by_territory, "DisplayArtistName", self.artist)
+ self.__add_element(release_details_by_territory, "LabelName", self.label)
+ self.__write_titles(release, release_details_by_territory)
+ self.__write_genres(release_details_by_territory)
+ self.__write_artist(release_details_by_territory)
+ self.__add_element(release_details_by_territory, "ParentalWarningType", self.parental_warning)
+ release_details_by_territory.append(resource_group)
+ pline = ET.SubElement(release, "PLine")
+ self.__add_element(pline, "Year", self.year)
+ self.__add_element(pline, "PLineText", self.pline)
+ cline = ET.SubElement(release, "CLine")
+ self.__add_element(cline, "Year", self.year)
+ self.__add_element(cline, "CLineText", self.cline)
+ return release
+
+ def __add_element(self, parent, name, text="", attrs={}):
+ element = ET.SubElement(parent, name, attrs)
+ element.text = text
+ return element
+
+ def __write_artist(self, release_details_by_territory):
+ artist = ET.SubElement(release_details_by_territory, "DisplayArtist")
+ party_name = ET.SubElement(artist, "PartyName")
+ self.__add_element(party_name, "FullName", self.artist)
+ self.__add_element(artist, "ArtistRole", "MainArtist")
+
+ def __write_genres(self, release_details_by_territory):
+ for genre in self.genres:
+ genreElement = ET.SubElement(release_details_by_territory, "Genre")
+ ET.SubElement(genreElement, "GenreText").text = genre
+
+ def __write_titles(self, release, release_details_by_territory):
+ for type in ["FormalTitle", "DisplayTitle", "GroupingTitle"]:
+ self.__add_title(release_details_by_territory, type)
+
+ def __add_title(self, release_details_by_territory, type):
+ title = ET.SubElement(release_details_by_territory, "Title", {"TitleType": type})
+ self.__add_element(title, "TitleText", self.title)
+
+ def add_deal(self, deal):
+ self.deals.append(deal)
+
+ def add_resource_reference(self, reference, release_resource_type="PrimaryResource"):
+ self.release_resource_references.append((reference, release_resource_type))
+
+ def write_deals(self):
+ release_deal = ET.Element("ReleaseDeal")
+ self.__add_element(release_deal, "DealReleaseReference", self.release_reference)
+ for deal in self.deals:
+ release_deal.append(deal.write())
+ return release_deal
diff --git a/ddex/release_builder.py b/ddex/release_builder.py
index 9b36318..eabd957 100644
--- a/ddex/release_builder.py
+++ b/ddex/release_builder.py
@@ -1,4 +1,4 @@
-from DDEXUI.ddex.release import *
+from ddex.release import *
class ReleaseBuilder:
def __init__(self):
diff --git a/ddex/resource.py b/ddex/resource.py
index e64af0e..53d3444 100644
--- a/ddex/resource.py
+++ b/ddex/resource.py
@@ -1,7 +1,11 @@
import xml.etree.cElementTree as ET
from abc import ABCMeta, abstractmethod
-class Resource(metaclass=ABCMeta):
+
+class Resource:
+
+ __metaclass__ = ABCMeta
+
def __init__(self, technical_resource_details_reference, id_attrs={}):
self._id_attrs = id_attrs
self._technical_resource_details_reference = technical_resource_details_reference
@@ -73,12 +77,12 @@ def __init__(self, resource_reference, id_value, file_metadata, technical_resour
self.file_metadata = file_metadata
def write(self):
- resource = super().write()
+ resource = super(Image, self).write()
self._append_technical_details(resource)
return resource
def _append_technical_details(self, resource):
- technical_details = super()._append_technical_details(resource, self._technical_resource_details_reference)
+ technical_details = super(Image, self)._append_technical_details(resource, self._technical_resource_details_reference)
self._append_element_with_text(technical_details, "ImageCodecType", self.file_metadata.codec)
self._append_element_with_text(technical_details, "ImageHeight", str(self.file_metadata.height))
self._append_element_with_text(technical_details, "ImageWidth", str(self.file_metadata.width))
@@ -108,7 +112,7 @@ def __init__(self, resource_reference, isrc, title, file_metadata, technical_res
self.file_metadata = file_metadata
def write(self):
- sound_recording = super().write()
+ sound_recording = super(SoundRecording, self).write()
title = self._append_element_with_text(sound_recording, "ReferenceTitle")
self._append_element_with_text(title, "TitleText", self.title)
@@ -118,7 +122,7 @@ def write(self):
return sound_recording
def _append_technical_details(self, resource):
- technical_details = super()._append_technical_details(resource, self._technical_resource_details_reference)
+ technical_details = super(SoundRecording, self)._append_technical_details(resource, self._technical_resource_details_reference)
self._append_element_with_text(technical_details, "AudioCodecType", self.file_metadata.codec)
self._append_file(technical_details, self.file_metadata)
diff --git a/ddex/tests/data.py b/ddex/tests/data.py
index 77afd0d..a8bcc9f 100644
--- a/ddex/tests/data.py
+++ b/ddex/tests/data.py
@@ -1,9 +1,9 @@
import random
-from DDEXUI.ddex.ddex_builder import DDEXBuilder
-from DDEXUI.ddex.release_builder import ReleaseBuilder
-from DDEXUI.ddex.party import Party, PartyType
-from DDEXUI.ddex.release import *
-from DDEXUI.ddex.deal import *
+from ddex.ddex_builder import DDEXBuilder
+from ddex.release_builder import ReleaseBuilder
+from ddex.party import Party, PartyType
+from ddex.release import *
+from ddex.deal import *
from datetime import datetime
diff --git a/ddex/tests/data_helper.py b/ddex/tests/data_helper.py
index 6f43323..a2284f2 100644
--- a/ddex/tests/data_helper.py
+++ b/ddex/tests/data_helper.py
@@ -1,5 +1,5 @@
-from DDEXUI.ddex.release_builder import *
-from DDEXUI.ddex.release import *
+from ddex.release_builder import *
+from ddex.release import *
class TestData:
@staticmethod
diff --git a/ddex/tests/resources/ddex-sample.xml b/ddex/tests/resources/ddex-sample.xml
index bffadc1..1549930 100644
--- a/ddex/tests/resources/ddex-sample.xml
+++ b/ddex/tests/resources/ddex-sample.xml
@@ -1 +1,6058 @@
-
MyMessageThreadId
MyMessageId
MyPartyId
ICanHaz Music Group
MyPartyId
ICanHaz Music Group
2140
2140-IMadeUA-MP3
2012-06-08T04:00:31Z
TestMessage
UpdateMessage
MusicalWorkSoundRecording
US82M0754801
A1
Destination
PT5M7.000S
Worldwide
Destination
Destination
Messages
448566
MainArtist
Me Iz Label
IR A Majr
2007
2007 The Me Iz Label
Alternative Rock
NoAdviceAvailable
T1
MP3
256
2
44.1
false
93
PT0H2M28.000S
Informative
myfile1.mp3
/resources
4c342562837456fff325434e325a24cf
MD5
MusicalWorkSoundRecording
ISRC_Woot
A2
TitleGoesHere
PT6M6.000S
Worldwide
TitleGoesHere
TitleGoesHere
Messages
448566
MainArtist
Me Iz Label
IR A Majr
2007
2007 The Me Iz Label
Alternative Rock
NoAdviceAvailable
FrontCoverImage
ICPN_VALUE.jpg
A3
Worldwide
T2
JPEG
480
640
ICPN_VALUE.jpg
/resources
e2h23d23e32a65463245634ff27364cc
MD5
GRID_NUMBER
ICPN_VALUE
R0
Album Title?
A1
A2
A3
Single
Worldwide
Messages
Me Iz Label
IR A Majr
Album Title?
Album Title?
Album Title?
Messages
448566
MainArtist
NoAdviceAvailable
1
1
SoundRecording
A1
2
SoundRecording
A2
Image
A3
Alternative Rock
2007-08-28
Messages Album Title? Alternative Rock
2007
2007 The Me Iz Label
2007
2007 The Me Iz Label
A10302B00004247715
US82M0754801
R1
Destination
A1
TrackRelease
Worldwide
Messages
Me Iz Label
IR A Majr
Destination
Destination
Messages
448566
MainArtist
1
1
SoundRecording
A1
Alternative Rock
Messages Destination Alternative Rock
2007
2007 The Me Iz Label
A10302B00004247723
ISRC_Woot
R2
TitleGoesHere
A2
TrackRelease
Worldwide
Messages
Me Iz Label
IR A Majr
TitleGoesHere
TitleGoesHere
Messages
448566
MainArtist
1
1
SoundRecording
A2
Alternative Rock
Messages TitleGoesHere Alternative Rock
2007
2007 The Me Iz Label
R0
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
AT
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
AT
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
AT
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
AU
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
AU
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
AU
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
BE
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
BE
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
BE
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
BG
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
BG
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
BG
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
CA
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
CA
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
CA
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
CH
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
CH
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
CH
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
CY
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
CY
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
CY
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
CZ
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
CZ
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
CZ
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
DE
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
DE
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
DE
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
DK
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
DK
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
DK
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
EE
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
EE
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
EE
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
ES
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
ES
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
ES
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
FI
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
FI
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
FI
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
FR
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
FR
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
FR
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
GB
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
GB
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
GB
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
GR
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
GR
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
GR
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
HU
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
HU
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
HU
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
ID
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
ID
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
ID
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
IE
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
IE
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
IE
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
IS
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
IS
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
IS
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
IT
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
IT
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
IT
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
LI
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
LI
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
LI
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
LT
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
LT
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
LT
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
LU
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
LU
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
LU
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
LV
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
LV
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
LV
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
MT
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
MT
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
MT
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
MY
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
MY
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
MY
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
NL
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
NL
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
NL
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
NO
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
NO
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
NO
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
NZ
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
NZ
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
NZ
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
PL
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
PL
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
PL
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
PT
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
PT
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
PT
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
RO
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
RO
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
RO
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
SE
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
SE
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
SE
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
SG
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
SG
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
SG
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
SI
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
SI
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
SI
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
SK
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
SK
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
SK
Q5
A08
2007-08-28
2007-08-14
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
TH
2007-08-28
2007-08-14
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
TH
2007-08-28
2007-08-14
2007-08-28
PayAsYouGoModel
PermanentDownload
TH
Q5
A08
2007-08-28
2007-08-14
2007-08-28
true
US
2012-06-08
R1
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
AT
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
AT
2007-08-28
PayAsYouGoModel
PermanentDownload
AT
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
AU
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
AU
2007-08-28
PayAsYouGoModel
PermanentDownload
AU
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
BE
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
BE
2007-08-28
PayAsYouGoModel
PermanentDownload
BE
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
BG
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
BG
2007-08-28
PayAsYouGoModel
PermanentDownload
BG
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
CA
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
CA
2007-08-28
PayAsYouGoModel
PermanentDownload
CA
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
CH
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
CH
2007-08-28
PayAsYouGoModel
PermanentDownload
CH
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
CY
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
CY
2007-08-28
PayAsYouGoModel
PermanentDownload
CY
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
CZ
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
CZ
2007-08-28
PayAsYouGoModel
PermanentDownload
CZ
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
DE
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
DE
2007-08-28
PayAsYouGoModel
PermanentDownload
DE
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
DK
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
DK
2007-08-28
PayAsYouGoModel
PermanentDownload
DK
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
EE
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
EE
2007-08-28
PayAsYouGoModel
PermanentDownload
EE
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
ES
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
ES
2007-08-28
PayAsYouGoModel
PermanentDownload
ES
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
FI
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
FI
2007-08-28
PayAsYouGoModel
PermanentDownload
FI
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
FR
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
FR
2007-08-28
PayAsYouGoModel
PermanentDownload
FR
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
GB
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
GB
2007-08-28
PayAsYouGoModel
PermanentDownload
GB
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
GR
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
GR
2007-08-28
PayAsYouGoModel
PermanentDownload
GR
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
HU
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
HU
2007-08-28
PayAsYouGoModel
PermanentDownload
HU
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
ID
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
ID
2007-08-28
PayAsYouGoModel
PermanentDownload
ID
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
IE
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
IE
2007-08-28
PayAsYouGoModel
PermanentDownload
IE
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
IS
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
IS
2007-08-28
PayAsYouGoModel
PermanentDownload
IS
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
IT
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
IT
2007-08-28
PayAsYouGoModel
PermanentDownload
IT
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
LI
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
LI
2007-08-28
PayAsYouGoModel
PermanentDownload
LI
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
LT
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
LT
2007-08-28
PayAsYouGoModel
PermanentDownload
LT
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
LU
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
LU
2007-08-28
PayAsYouGoModel
PermanentDownload
LU
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
LV
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
LV
2007-08-28
PayAsYouGoModel
PermanentDownload
LV
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
MT
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
MT
2007-08-28
PayAsYouGoModel
PermanentDownload
MT
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
MY
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
MY
2007-08-28
PayAsYouGoModel
PermanentDownload
MY
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
NL
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
NL
2007-08-28
PayAsYouGoModel
PermanentDownload
NL
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
NO
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
NO
2007-08-28
PayAsYouGoModel
PermanentDownload
NO
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
NZ
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
NZ
2007-08-28
PayAsYouGoModel
PermanentDownload
NZ
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
PL
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
PL
2007-08-28
PayAsYouGoModel
PermanentDownload
PL
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
PT
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
PT
2007-08-28
PayAsYouGoModel
PermanentDownload
PT
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
RO
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
RO
2007-08-28
PayAsYouGoModel
PermanentDownload
RO
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
SE
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
SE
2007-08-28
PayAsYouGoModel
PermanentDownload
SE
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
SG
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
SG
2007-08-28
PayAsYouGoModel
PermanentDownload
SG
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
SI
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
SI
2007-08-28
PayAsYouGoModel
PermanentDownload
SI
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
SK
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
SK
2007-08-28
PayAsYouGoModel
PermanentDownload
SK
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
TH
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
TH
2007-08-28
PayAsYouGoModel
PermanentDownload
TH
Q5
S02
2007-08-28
true
US
2012-06-08
R2
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
AT
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
AT
2007-08-28
PayAsYouGoModel
PermanentDownload
AT
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
AU
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
AU
2007-08-28
PayAsYouGoModel
PermanentDownload
AU
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
BE
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
BE
2007-08-28
PayAsYouGoModel
PermanentDownload
BE
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
BG
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
BG
2007-08-28
PayAsYouGoModel
PermanentDownload
BG
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
CA
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
CA
2007-08-28
PayAsYouGoModel
PermanentDownload
CA
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
CH
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
CH
2007-08-28
PayAsYouGoModel
PermanentDownload
CH
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
CY
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
CY
2007-08-28
PayAsYouGoModel
PermanentDownload
CY
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
CZ
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
CZ
2007-08-28
PayAsYouGoModel
PermanentDownload
CZ
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
DE
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
DE
2007-08-28
PayAsYouGoModel
PermanentDownload
DE
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
DK
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
DK
2007-08-28
PayAsYouGoModel
PermanentDownload
DK
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
EE
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
EE
2007-08-28
PayAsYouGoModel
PermanentDownload
EE
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
ES
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
ES
2007-08-28
PayAsYouGoModel
PermanentDownload
ES
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
FI
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
FI
2007-08-28
PayAsYouGoModel
PermanentDownload
FI
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
FR
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
FR
2007-08-28
PayAsYouGoModel
PermanentDownload
FR
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
GB
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
GB
2007-08-28
PayAsYouGoModel
PermanentDownload
GB
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
GR
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
GR
2007-08-28
PayAsYouGoModel
PermanentDownload
GR
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
HU
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
HU
2007-08-28
PayAsYouGoModel
PermanentDownload
HU
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
ID
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
ID
2007-08-28
PayAsYouGoModel
PermanentDownload
ID
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
IE
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
IE
2007-08-28
PayAsYouGoModel
PermanentDownload
IE
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
IS
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
IS
2007-08-28
PayAsYouGoModel
PermanentDownload
IS
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
IT
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
IT
2007-08-28
PayAsYouGoModel
PermanentDownload
IT
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
LI
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
LI
2007-08-28
PayAsYouGoModel
PermanentDownload
LI
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
LT
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
LT
2007-08-28
PayAsYouGoModel
PermanentDownload
LT
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
LU
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
LU
2007-08-28
PayAsYouGoModel
PermanentDownload
LU
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
LV
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
LV
2007-08-28
PayAsYouGoModel
PermanentDownload
LV
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
MT
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
MT
2007-08-28
PayAsYouGoModel
PermanentDownload
MT
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
MY
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
MY
2007-08-28
PayAsYouGoModel
PermanentDownload
MY
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
NL
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
NL
2007-08-28
PayAsYouGoModel
PermanentDownload
NL
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
NO
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
NO
2007-08-28
PayAsYouGoModel
PermanentDownload
NO
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
NZ
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
NZ
2007-08-28
PayAsYouGoModel
PermanentDownload
NZ
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
PL
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
PL
2007-08-28
PayAsYouGoModel
PermanentDownload
PL
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
PT
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
PT
2007-08-28
PayAsYouGoModel
PermanentDownload
PT
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
RO
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
RO
2007-08-28
PayAsYouGoModel
PermanentDownload
RO
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
SE
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
SE
2007-08-28
PayAsYouGoModel
PermanentDownload
SE
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
SG
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
SG
2007-08-28
PayAsYouGoModel
PermanentDownload
SG
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
SI
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
SI
2007-08-28
PayAsYouGoModel
PermanentDownload
SI
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
SK
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
SK
2007-08-28
PayAsYouGoModel
PermanentDownload
SK
Q5
S02
2007-08-28
AdvertisementSupportedModel
NonInteractiveStream
OnDemandStream
TH
2007-08-28
SubscriptionModel
NonInteractiveStream
OnDemandStream
ConditionalDownload
TH
2007-08-28
PayAsYouGoModel
PermanentDownload
TH
Q5
S02
2007-08-28
true
US
2012-06-08
\ No newline at end of file
+
+
+
+ MyMessageThreadId
+ MyMessageId
+
+ MyPartyId
+
+ ICanHaz Music Group
+
+
+
+ MyPartyId
+
+ ICanHaz Music Group
+
+
+
+ 2140
+
+ 2140-IMadeUA-MP3
+
+
+ 2012-06-08T04:00:31Z
+ TestMessage
+
+ UpdateMessage
+
+
+ MusicalWorkSoundRecording
+
+ US82M0754801
+
+ A1
+
+ Destination
+
+ PT5M7.000S
+
+ Worldwide
+
+ Destination
+
+
+ Destination
+
+
+
+ Messages
+
+ 448566
+ MainArtist
+
+ Me Iz Label
+ IR A Majr
+
+ 2007
+ 2007 The Me Iz Label
+
+
+ Alternative Rock
+
+ NoAdviceAvailable
+
+ T1
+ MP3
+ 256
+ 2
+ 44.1
+ false
+
+ 93
+ PT0H2M28.000S
+ Informative
+
+
+ myfile1.mp3
+ /resources
+
+ 4c342562837456fff325434e325a24cf
+ MD5
+
+
+
+
+
+
+ MusicalWorkSoundRecording
+
+ ISRC_Woot
+
+ A2
+
+ TitleGoesHere
+
+ PT6M6.000S
+
+ Worldwide
+
+ TitleGoesHere
+
+
+ TitleGoesHere
+
+
+
+ Messages
+
+ 448566
+ MainArtist
+
+ Me Iz Label
+ IR A Majr
+
+ 2007
+ 2007 The Me Iz Label
+
+
+ Alternative Rock
+
+ NoAdviceAvailable
+
+
+
+ FrontCoverImage
+
+ ICPN_VALUE.jpg
+
+ A3
+
+ Worldwide
+
+ T2
+ JPEG
+ 480
+ 640
+
+ ICPN_VALUE.jpg
+ /resources
+
+ e2h23d23e32a65463245634ff27364cc
+ MD5
+
+
+
+
+
+
+
+
+
+ GRID_NUMBER
+ ICPN_VALUE
+
+ R0
+
+ Album Title?
+
+
+ A1
+ A2
+ A3
+
+ Single
+
+ Worldwide
+ Messages
+ Me Iz Label
+ IR A Majr
+
+ Album Title?
+
+
+ Album Title?
+
+
+ Album Title?
+
+
+
+ Messages
+
+ 448566
+ MainArtist
+
+ NoAdviceAvailable
+
+
+ 1
+
+ 1
+ SoundRecording
+ A1
+
+
+ 2
+ SoundRecording
+ A2
+
+
+
+ Image
+ A3
+
+
+
+ Alternative Rock
+
+ 2007-08-28
+ Messages Album Title? Alternative Rock
+
+
+ 2007
+ 2007 The Me Iz Label
+
+
+ 2007
+ 2007 The Me Iz Label
+
+
+
+
+ A10302B00004247715
+ US82M0754801
+
+ R1
+
+ Destination
+
+
+ A1
+
+ TrackRelease
+
+ Worldwide
+ Messages
+ Me Iz Label
+ IR A Majr
+
+ Destination
+
+
+ Destination
+
+
+
+ Messages
+
+ 448566
+ MainArtist
+
+
+ 1
+
+ 1
+ SoundRecording
+ A1
+
+
+
+ Alternative Rock
+
+ Messages Destination Alternative Rock
+
+
+ 2007
+ 2007 The Me Iz Label
+
+
+
+
+ A10302B00004247723
+ ISRC_Woot
+
+ R2
+
+ TitleGoesHere
+
+
+ A2
+
+ TrackRelease
+
+ Worldwide
+ Messages
+ Me Iz Label
+ IR A Majr
+
+ TitleGoesHere
+
+
+ TitleGoesHere
+
+
+
+ Messages
+
+ 448566
+ MainArtist
+
+
+ 1
+
+ 1
+ SoundRecording
+ A2
+
+
+
+ Alternative Rock
+
+ Messages TitleGoesHere Alternative Rock
+
+
+ 2007
+ 2007 The Me Iz Label
+
+
+
+
+
+ R0
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ AT
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ AT
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ AT
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ AU
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ AU
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ AU
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ BE
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ BE
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ BE
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ BG
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ BG
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ BG
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ CA
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ CA
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ CA
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ CH
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ CH
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ CH
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ CY
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ CY
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ CY
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ CZ
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ CZ
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ CZ
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ DE
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ DE
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ DE
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ DK
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ DK
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ DK
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ EE
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ EE
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ EE
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ ES
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ ES
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ ES
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ FI
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ FI
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ FI
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ FR
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ FR
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ FR
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ GB
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ GB
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ GB
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ GR
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ GR
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ GR
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ HU
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ HU
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ HU
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ ID
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ ID
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ ID
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ IE
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ IE
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ IE
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ IS
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ IS
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ IS
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ IT
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ IT
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ IT
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ LI
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ LI
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ LI
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ LT
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ LT
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ LT
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ LU
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ LU
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ LU
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ LV
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ LV
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ LV
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ MT
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ MT
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ MT
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ MY
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ MY
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ MY
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ NL
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ NL
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ NL
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ NO
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ NO
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ NO
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ NZ
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ NZ
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ NZ
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ PL
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ PL
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ PL
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ PT
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ PT
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ PT
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ RO
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ RO
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ RO
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ SE
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ SE
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ SE
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ SG
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ SG
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ SG
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ SI
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ SI
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ SI
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ SK
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ SK
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ SK
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ TH
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ TH
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ TH
+
+ Q5
+ A08
+
+
+ 2007-08-28
+
+ 2007-08-14
+ 2007-08-28
+
+
+
+
+
+
+ true
+ US
+
+ 2012-06-08
+
+
+
+
+
+ R1
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ AT
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ AT
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ AT
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ AU
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ AU
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ AU
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ BE
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ BE
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ BE
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ BG
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ BG
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ BG
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ CA
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ CA
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ CA
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ CH
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ CH
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ CH
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ CY
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ CY
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ CY
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ CZ
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ CZ
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ CZ
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ DE
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ DE
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ DE
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ DK
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ DK
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ DK
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ EE
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ EE
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ EE
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ ES
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ ES
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ ES
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ FI
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ FI
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ FI
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ FR
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ FR
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ FR
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ GB
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ GB
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ GB
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ GR
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ GR
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ GR
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ HU
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ HU
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ HU
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ ID
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ ID
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ ID
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ IE
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ IE
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ IE
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ IS
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ IS
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ IS
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ IT
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ IT
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ IT
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ LI
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ LI
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ LI
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ LT
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ LT
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ LT
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ LU
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ LU
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ LU
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ LV
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ LV
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ LV
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ MT
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ MT
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ MT
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ MY
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ MY
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ MY
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ NL
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ NL
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ NL
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ NO
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ NO
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ NO
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ NZ
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ NZ
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ NZ
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ PL
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ PL
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ PL
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ PT
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ PT
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ PT
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ RO
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ RO
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ RO
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ SE
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ SE
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ SE
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ SG
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ SG
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ SG
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ SI
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ SI
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ SI
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ SK
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ SK
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ SK
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ TH
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ TH
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ TH
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+ true
+ US
+
+ 2012-06-08
+
+
+
+
+
+ R2
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ AT
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ AT
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ AT
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ AU
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ AU
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ AU
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ BE
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ BE
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ BE
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ BG
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ BG
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ BG
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ CA
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ CA
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ CA
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ CH
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ CH
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ CH
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ CY
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ CY
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ CY
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ CZ
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ CZ
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ CZ
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ DE
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ DE
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ DE
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ DK
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ DK
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ DK
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ EE
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ EE
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ EE
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ ES
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ ES
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ ES
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ FI
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ FI
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ FI
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ FR
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ FR
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ FR
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ GB
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ GB
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ GB
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ GR
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ GR
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ GR
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ HU
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ HU
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ HU
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ ID
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ ID
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ ID
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ IE
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ IE
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ IE
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ IS
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ IS
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ IS
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ IT
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ IT
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ IT
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ LI
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ LI
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ LI
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ LT
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ LT
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ LT
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ LU
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ LU
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ LU
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ LV
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ LV
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ LV
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ MT
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ MT
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ MT
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ MY
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ MY
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ MY
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ NL
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ NL
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ NL
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ NO
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ NO
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ NO
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ NZ
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ NZ
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ NZ
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ PL
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ PL
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ PL
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ PT
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ PT
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ PT
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ RO
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ RO
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ RO
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ SE
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ SE
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ SE
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ SG
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ SG
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ SG
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ SI
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ SI
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ SI
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ SK
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ SK
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ SK
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+
+ AdvertisementSupportedModel
+
+ NonInteractiveStream
+ OnDemandStream
+
+ TH
+
+ 2007-08-28
+
+
+
+
+
+
+ SubscriptionModel
+
+ NonInteractiveStream
+ OnDemandStream
+ ConditionalDownload
+
+ TH
+
+ 2007-08-28
+
+
+
+
+
+
+ PayAsYouGoModel
+
+ PermanentDownload
+
+ TH
+
+ Q5
+ S02
+
+
+ 2007-08-28
+
+
+
+
+
+
+
+ true
+ US
+
+ 2012-06-08
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ddex/tests/test_batch_generator.py b/ddex/tests/test_batch_generator.py
index 67286d0..8d85be0 100644
--- a/ddex/tests/test_batch_generator.py
+++ b/ddex/tests/test_batch_generator.py
@@ -2,8 +2,8 @@
from os import path
from tempfile import gettempdir
from shutil import rmtree
-import DDEXUI.ddex.tests.data as data
-from DDEXUI.batch_generator import BatchGenerator
+import ddex.tests.data as data
+from ddexui.batch_generator import BatchGenerator
class BatchGeneratorTests(unittest.TestCase):
def test_should_generate_a_batch_containing_each_product(self):
diff --git a/ddex/tests/test_ddex.py b/ddex/tests/test_ddex.py
index 803ff06..3aa28d3 100644
--- a/ddex/tests/test_ddex.py
+++ b/ddex/tests/test_ddex.py
@@ -1,7 +1,7 @@
import unittest
-from DDEXUI.ddex.ddex_builder import DDEXBuilder
-from DDEXUI.ddex.release_builder import ReleaseBuilder
-import DDEXUI.ddex.tests.data as data
+from ddex.ddex_builder import DDEXBuilder
+from ddex.release_builder import ReleaseBuilder
+import ddex.tests.data as data
class DDEXBuilderTests(unittest.TestCase):
def test_should_get_the_release_id(self):
diff --git a/ddex/tests/test_ddex_builder.py b/ddex/tests/test_ddex_builder.py
index b67961c..d0ac013 100644
--- a/ddex/tests/test_ddex_builder.py
+++ b/ddex/tests/test_ddex_builder.py
@@ -1,6 +1,6 @@
import unittest
-from DDEXUI.ddex.ddex_builder import DDEXBuilder
-from DDEXUI.ddex.tests.data import valid_product_release, valid_track_release
+from ddex.ddex_builder import DDEXBuilder
+from ddex.tests.data import valid_product_release, valid_track_release
class DDEXBuilderTests(unittest.TestCase):
diff --git a/ddex/tests/test_deal.py b/ddex/tests/test_deal.py
index 46b9e11..5ac93d8 100644
--- a/ddex/tests/test_deal.py
+++ b/ddex/tests/test_deal.py
@@ -1,33 +1,33 @@
-import unittest
-import xml.etree.cElementTree as ET
-from DDEXUI.ddex.deal import Deal
-from datetime import date
-
-class DealTests(unittest.TestCase):
-
- def setUp(self):
- self.use_type = "PermanentDownload"
- self.territory = "BE"
- self.start_date = date(1987,2,20)
- self.preorder_date = date(1987,2,19)
- self.preorder_preview_date = date(1987,2,18)
- deal = Deal("PayAsYouGoModel", self.use_type, self.territory, self.start_date, self.preorder_date, self.preorder_preview_date)
- self.element = deal.write()
-
- def test_should_have_commercial_model_type(self):
- self.assertEqual(self.element.find("./DealTerms/CommercialModelType").text, "PayAsYouGoModel")
-
- def test_should_have_use_type(self):
- self.assertEqual(self.element.find("./DealTerms/Usage/UseType").text, self.use_type)
-
- def test_should_have_territory_code(self):
- self.assertEqual(self.element.find("./DealTerms/TerritoryCode").text, self.territory)
-
- def test_should_have_start_date(self):
- self.assertEqual(self.element.find("./DealTerms/ValidityPeriod/StartDate").text, "1987-02-20")
-
- def test_should_have_preorder_date(self):
- self.assertEqual(self.element.find("./DealTerms/PreorderReleaseDate").text, "1987-02-19")
-
- def test_should_have_preorder_preview_date(self):
- self.assertEqual(self.element.find("./DealTerms/PreorderPreviewDate").text, "1987-02-18")
+import unittest
+import xml.etree.cElementTree as ET
+from ddex.deal import Deal
+from datetime import date
+
+class DealTests(unittest.TestCase):
+
+ def setUp(self):
+ self.use_type = "PermanentDownload"
+ self.territory = "BE"
+ self.start_date = date(1987,2,20)
+ self.preorder_date = date(1987,2,19)
+ self.preorder_preview_date = date(1987,2,18)
+ deal = Deal("PayAsYouGoModel", self.use_type, self.territory, self.start_date, self.preorder_date, self.preorder_preview_date)
+ self.element = deal.write()
+
+ def test_should_have_commercial_model_type(self):
+ self.assertEqual(self.element.find("./DealTerms/CommercialModelType").text, "PayAsYouGoModel")
+
+ def test_should_have_use_type(self):
+ self.assertEqual(self.element.find("./DealTerms/Usage/UseType").text, self.use_type)
+
+ def test_should_have_territory_code(self):
+ self.assertEqual(self.element.find("./DealTerms/TerritoryCode").text, self.territory)
+
+ def test_should_have_start_date(self):
+ self.assertEqual(self.element.find("./DealTerms/ValidityPeriod/StartDate").text, "1987-02-20")
+
+ def test_should_have_preorder_date(self):
+ self.assertEqual(self.element.find("./DealTerms/PreorderReleaseDate").text, "1987-02-19")
+
+ def test_should_have_preorder_preview_date(self):
+ self.assertEqual(self.element.find("./DealTerms/PreorderPreviewDate").text, "1987-02-18")
diff --git a/ddex/tests/test_file_parser.py b/ddex/tests/test_file_parser.py
index 84d40b2..ef09ea3 100644
--- a/ddex/tests/test_file_parser.py
+++ b/ddex/tests/test_file_parser.py
@@ -1,44 +1,48 @@
-import unittest
-from nose.tools import *
-from DDEXUI.file_parser import FileParser
-
-def test_generator():
- cases = ([ ("ddex/tests/resources/test.mp3", "dff9465befeb68d97cd6fd103547c464", "test.mp3", "MP3"),
- ("ddex/tests/resources/test.jpg", "55e031153f2c0d8c63e6bf7c9baa58ba", "test.jpg", "JPG")])
- for path, hash, name, extension in cases:
- yield check_file, path, hash, name, extension
-
-def check_file(path, hash, name, extension):
- file_metadata = FileParser().parse(path)
- assert_equal(file_metadata.md5, hash)
- assert_equal(file_metadata.name, name)
- assert_equal(file_metadata.extension, extension)
-
-class FileParserTests(unittest.TestCase):
-
- def setUp(self):
- self.subject = FileParser()
- self.file_metadata = self.subject.parse("ddex/tests/resources/test.mp3")
-
- def test_should_have_duration(self):
- self.assertEqual(self.file_metadata.duration, "PT0M4.000S")
-
- def test_should_have_bitrate(self):
- self.assertEqual(self.file_metadata.bit_rate, 64)
-
- def test_should_have_codec(self):
- self.assertEqual(self.file_metadata.codec, "MP3")
-
-class ImageFileParserTests(unittest.TestCase):
- def setUp(self):
- self.subject = FileParser()
- self.file_metadata = self.subject.parse("ddex/tests/resources/test.jpg")
-
- def test_should_have_height(self):
- self.assertEqual(self.file_metadata.height, 500)
-
- def test_should_have_width(self):
- self.assertEqual(self.file_metadata.width, 463)
-
- def test_should_have_codec(self):
- self.assertEqual(self.file_metadata.codec, "JPEG")
+import os
+import unittest
+
+from nose.tools import *
+
+from ddexui.file_parser import FileParser
+
+
+def test_generator():
+ cases = ([ (os.path.join(os.path.dirname(__file__), "resources", "test.mp3"), "dff9465befeb68d97cd6fd103547c464", "test.mp3", "MP3"),
+ (os.path.join(os.path.dirname(__file__), "resources", "test.jpg"), "55e031153f2c0d8c63e6bf7c9baa58ba", "test.jpg", "JPG")])
+ for path, hash, name, extension in cases:
+ yield check_file, path, hash, name, extension
+
+def check_file(path, hash, name, extension):
+ file_metadata = FileParser().parse(path)
+ assert_equal(file_metadata.md5, hash)
+ assert_equal(file_metadata.name, name)
+ assert_equal(file_metadata.extension, extension)
+
+class FileParserTests(unittest.TestCase):
+
+ def setUp(self):
+ self.subject = FileParser()
+ self.file_metadata = self.subject.parse(os.path.join(os.path.dirname(__file__), "resources", "test.mp3"))
+
+ def test_should_have_duration(self):
+ self.assertEqual(self.file_metadata.duration, "PT0M4.000S")
+
+ def test_should_have_bitrate(self):
+ self.assertEqual(self.file_metadata.bit_rate, 64)
+
+ def test_should_have_codec(self):
+ self.assertEqual(self.file_metadata.codec, "MP3")
+
+class ImageFileParserTests(unittest.TestCase):
+ def setUp(self):
+ self.subject = FileParser()
+ self.file_metadata = self.subject.parse(os.path.join(os.path.dirname(__file__), "resources", "test.jpg"))
+
+ def test_should_have_height(self):
+ self.assertEqual(self.file_metadata.height, 500)
+
+ def test_should_have_width(self):
+ self.assertEqual(self.file_metadata.width, 463)
+
+ def test_should_have_codec(self):
+ self.assertEqual(self.file_metadata.codec, "JPEG")
diff --git a/ddex/tests/test_id_generators.py b/ddex/tests/test_id_generators.py
index 1a93bc6..3114548 100644
--- a/ddex/tests/test_id_generators.py
+++ b/ddex/tests/test_id_generators.py
@@ -1,6 +1,6 @@
import unittest
import datetime
-from DDEXUI.ddex.ddex import generate_batch_id
+from ddex import generate_batch_id
class TestIdGenerators(unittest.TestCase):
def test_batch_id_should_be_in_expected_format(self):
diff --git a/ddex/tests/test_message_header.py b/ddex/tests/test_message_header.py
index c2fccac..50ed75e 100644
--- a/ddex/tests/test_message_header.py
+++ b/ddex/tests/test_message_header.py
@@ -1,6 +1,6 @@
import unittest
-from DDEXUI.ddex.party import *
-from DDEXUI.ddex.message_header import MessageHeader
+from ddex.party import *
+from ddex.message_header import MessageHeader
class MessageHeaderTests(unittest.TestCase):
def setUp(self):
diff --git a/ddex/tests/test_party.py b/ddex/tests/test_party.py
index 2532f03..7e0c1c1 100644
--- a/ddex/tests/test_party.py
+++ b/ddex/tests/test_party.py
@@ -1,5 +1,5 @@
import unittest
-from DDEXUI.ddex.party import *
+from ddex.party import *
class PartyTests(unittest.TestCase):
def setUp(self):
@@ -10,5 +10,3 @@ def test_should_serialise_correctly(self):
party_element = self.party.write()
self.assertEqual(party_element.find('./PartyId').text, 'gdfg42jkdz')
self.assertEqual(party_element.find('./PartyName/FullName').text, 'Sony')
-
-
diff --git a/ddex/tests/test_party_repository.py b/ddex/tests/test_party_repository.py
index 1032031..3ad0a51 100644
--- a/ddex/tests/test_party_repository.py
+++ b/ddex/tests/test_party_repository.py
@@ -1,7 +1,6 @@
import unittest
-import configparser
-from DDEXUI.ddex.party import *
-from DDEXUI.party_repository import *
+from ddex.party import *
+from ddexui.party_repository import *
import sqlite3
@@ -14,7 +13,7 @@ def setUp(self):
self.party = Party('IDIDIDO', 'Some Label Name', PartyType.MessageSender)
def __get_connection(self):
- return sqlite3.connect("ddexui")
+ return sqlite3.connect("ddexui.db")
def tearDown(self):
c = self.__get_connection()
diff --git a/ddex/tests/test_release.py b/ddex/tests/test_release.py
index 6c1623a..002eff8 100644
--- a/ddex/tests/test_release.py
+++ b/ddex/tests/test_release.py
@@ -1,108 +1,108 @@
-import unittest
-#todo figure out how to mock things
-from DDEXUI.ddex.release import *
-import xml.etree.cElementTree as ET
-
-class Test(unittest.TestCase):
- def setUp(self):
- self.name = "Bob"
- self.upc = "0132384103241"
- self.cline = "Copyright brillient music"
- self.pline = "Published by brillient music"
- self.year = 2013
- self.release_reference = "R0"
- self.release_type = "Single"
- self.artist_name = "Marty McFly and the hoverboards"
- self.genres = ["Rock", "Pop"]
- self.label = "Tru Thoughts"
- self.explicit = True
- self.release = (Release(
- self.name,
- self.cline,
- self.pline,
- self.year,
- self.release_reference,
- ReleaseId(1, self.upc),
- self.release_type,
- self.artist_name,
- self.label,
- self.explicit)
- )
- self.release.genres = self.genres
-
- self.element = self.release.write()
-
- def test_all_genres_should_be_written(self):
- genre_elements = self.element.findall("./ReleaseDetailsByTerritory/Genre/GenreText")
- genres = list(map(lambda el: el.text, genre_elements))
- self.assertEqual(["Rock","Pop"], genres)
-
- def test_title_text_should_be_written(self):
- self.assertEqual(self.name, self.element.find("./ReferenceTitle/TitleText").text)
- self.assertEqual(self.name, self.element.find("./ReleaseDetailsByTerritory/Title[@TitleType='FormalTitle']/TitleText").text)
- self.assertEqual(self.name, self.element.find("./ReleaseDetailsByTerritory/Title[@TitleType='GroupingTitle']/TitleText").text)
- self.assertEqual(self.name, self.element.find("./ReleaseDetailsByTerritory/Title[@TitleType='DisplayTitle']/TitleText").text)
-
- def test_upc_should_be_written(self):
- self.assertEqual(self.upc, self.element.find("./ReleaseId/ICPN").text)
-
- def test_release_reference_should_be_set(self):
- self.assertEqual(self.release_reference, self.element.find("./ReleaseReference").text)
-
- def test_release_refernce_territory_code_should_be_worldwide(self):
- self.assertEqual("Worldwide",self.element.find("./ReleaseDetailsByTerritory/TerritoryCode").text)
-
- def test_pline_should_be_written(self):
- self.assertEqual(self.pline,self.element.find("./PLine/PLineText").text)
-
- def test_cline_should_be_written(self):
- self.assertEqual(self.cline,self.element.find("./CLine/CLineText").text)
-
- def test_year_should_be_written(self):
- self.assertEqual(str(2013), self.element.find("./CLine/Year").text)
- self.assertEqual(str(2013), self.element.find("./PLine/Year").text)
-
- def test_release_type_should_be_written(self):
- self.assertEqual(self.release_type, self.element.find("./ReleaseType").text)
-
- def test_label_should_be_written(self):
- self.assertEqual(self.label, self.element.find("./ReleaseDetailsByTerritory/LabelName").text)
-
- def test_artist_name_should_be_written(self):
- self.assertEqual(self.artist_name, self.element.find("./ReleaseDetailsByTerritory/DisplayArtistName").text)
- self.assertEqual(self.artist_name, self.element.find("./ReleaseDetailsByTerritory/DisplayArtist/PartyName/FullName").text)
-
- def test_artist_role_should_be_written(self):
- self.assertEqual("MainArtist", self.element.find("./ReleaseDetailsByTerritory/DisplayArtist/ArtistRole").text)
-
- def test_parental_warning_should_be_written_as_explicit(self):
- path = "./ReleaseDetailsByTerritory/ParentalWarningType"
- self.assertEqual("Explicit", self.element.find(path).text)
- element = polite_release = Release("","","",1,"",ReleaseId(1,"000000000000"),"","","",False).write()
- self.assertEqual("NotExplicit", element.find(path).text)
-
- def test_should_write_deals(self):
- self.release.add_deal(MockDeal())
- self.release.add_deal(MockDeal())
- release_deal = self.release.write_deals()
- self.assertEqual(release_deal.find("./DealReleaseReference").text, self.release_reference)
- self.assertEqual(len(release_deal.findall("./Deal")), 2)
-
- def test_should_write_resource_references(self):
- ref = "A0"
- self.release.add_resource_reference(ref)
- element = self.release.write()
- resource_refs = element.findall("./ReleaseResourceReferenceList/ReleaseResourceReference")
-
- self.assertEqual(len(resource_refs), 1)
- self.assertEqual(resource_refs[0].text, ref)
- resource_group_content_items = element.findall("./ReleaseDetailsByTerritory/ResourceGroup/ResourceGroupContentItem")
- self.assertEqual(len(resource_group_content_items), 1)
- content_item = resource_group_content_items[0]
- self.assertEqual(content_item.find("./SequenceNumber").text, "1")
- self.assertEqual(content_item.find("./ResourceType").text, "SoundRecording")
- self.assertEqual(content_item.find("./ReleaseResourceReference").text, ref)
-
-class MockDeal:
- def write(self):
- return ET.Element("Deal")
+import unittest
+#todo figure out how to mock things
+from ddex.release import *
+import xml.etree.cElementTree as ET
+
+class Test(unittest.TestCase):
+ def setUp(self):
+ self.name = "Bob"
+ self.upc = "0132384103241"
+ self.cline = "Copyright brillient music"
+ self.pline = "Published by brillient music"
+ self.year = 2013
+ self.release_reference = "R0"
+ self.release_type = "Single"
+ self.artist_name = "Marty McFly and the hoverboards"
+ self.genres = ["Rock", "Pop"]
+ self.label = "Tru Thoughts"
+ self.explicit = True
+ self.release = (Release(
+ self.name,
+ self.cline,
+ self.pline,
+ self.year,
+ self.release_reference,
+ ReleaseId(1, self.upc),
+ self.release_type,
+ self.artist_name,
+ self.label,
+ self.explicit)
+ )
+ self.release.genres = self.genres
+
+ self.element = self.release.write()
+
+ def test_all_genres_should_be_written(self):
+ genre_elements = self.element.findall("./ReleaseDetailsByTerritory/Genre/GenreText")
+ genres = list(map(lambda el: el.text, genre_elements))
+ self.assertEqual(["Rock","Pop"], genres)
+
+ def test_title_text_should_be_written(self):
+ self.assertEqual(self.name, self.element.find("./ReferenceTitle/TitleText").text)
+ self.assertEqual(self.name, self.element.find("./ReleaseDetailsByTerritory/Title[@TitleType='FormalTitle']/TitleText").text)
+ self.assertEqual(self.name, self.element.find("./ReleaseDetailsByTerritory/Title[@TitleType='GroupingTitle']/TitleText").text)
+ self.assertEqual(self.name, self.element.find("./ReleaseDetailsByTerritory/Title[@TitleType='DisplayTitle']/TitleText").text)
+
+ def test_upc_should_be_written(self):
+ self.assertEqual(self.upc, self.element.find("./ReleaseId/ICPN").text)
+
+ def test_release_reference_should_be_set(self):
+ self.assertEqual(self.release_reference, self.element.find("./ReleaseReference").text)
+
+ def test_release_refernce_territory_code_should_be_worldwide(self):
+ self.assertEqual("Worldwide",self.element.find("./ReleaseDetailsByTerritory/TerritoryCode").text)
+
+ def test_pline_should_be_written(self):
+ self.assertEqual(self.pline,self.element.find("./PLine/PLineText").text)
+
+ def test_cline_should_be_written(self):
+ self.assertEqual(self.cline,self.element.find("./CLine/CLineText").text)
+
+ def test_year_should_be_written(self):
+ self.assertEqual(str(2013), self.element.find("./CLine/Year").text)
+ self.assertEqual(str(2013), self.element.find("./PLine/Year").text)
+
+ def test_release_type_should_be_written(self):
+ self.assertEqual(self.release_type, self.element.find("./ReleaseType").text)
+
+ def test_label_should_be_written(self):
+ self.assertEqual(self.label, self.element.find("./ReleaseDetailsByTerritory/LabelName").text)
+
+ def test_artist_name_should_be_written(self):
+ self.assertEqual(self.artist_name, self.element.find("./ReleaseDetailsByTerritory/DisplayArtistName").text)
+ self.assertEqual(self.artist_name, self.element.find("./ReleaseDetailsByTerritory/DisplayArtist/PartyName/FullName").text)
+
+ def test_artist_role_should_be_written(self):
+ self.assertEqual("MainArtist", self.element.find("./ReleaseDetailsByTerritory/DisplayArtist/ArtistRole").text)
+
+ def test_parental_warning_should_be_written_as_explicit(self):
+ path = "./ReleaseDetailsByTerritory/ParentalWarningType"
+ self.assertEqual("Explicit", self.element.find(path).text)
+ element = polite_release = Release("","","",1,"",ReleaseId(1,"000000000000"),"","","",False).write()
+ self.assertEqual("NotExplicit", element.find(path).text)
+
+ def test_should_write_deals(self):
+ self.release.add_deal(MockDeal())
+ self.release.add_deal(MockDeal())
+ release_deal = self.release.write_deals()
+ self.assertEqual(release_deal.find("./DealReleaseReference").text, self.release_reference)
+ self.assertEqual(len(release_deal.findall("./Deal")), 2)
+
+ def test_should_write_resource_references(self):
+ ref = "A0"
+ self.release.add_resource_reference(ref)
+ element = self.release.write()
+ resource_refs = element.findall("./ReleaseResourceReferenceList/ReleaseResourceReference")
+
+ self.assertEqual(len(resource_refs), 1)
+ self.assertEqual(resource_refs[0].text, ref)
+ resource_group_content_items = element.findall("./ReleaseDetailsByTerritory/ResourceGroup/ResourceGroupContentItem")
+ self.assertEqual(len(resource_group_content_items), 1)
+ content_item = resource_group_content_items[0]
+ self.assertEqual(content_item.find("./SequenceNumber").text, "1")
+ self.assertEqual(content_item.find("./ResourceType").text, "SoundRecording")
+ self.assertEqual(content_item.find("./ReleaseResourceReference").text, ref)
+
+class MockDeal:
+ def write(self):
+ return ET.Element("Deal")
diff --git a/ddex/tests/test_release_builder.py b/ddex/tests/test_release_builder.py
index 1c8d8e6..8786122 100644
--- a/ddex/tests/test_release_builder.py
+++ b/ddex/tests/test_release_builder.py
@@ -1,7 +1,7 @@
import unittest
-from DDEXUI.ddex.release import ReleaseIdType, Release
-from DDEXUI.ddex.release_builder import ReleaseBuilder
-from DDEXUI.ddex.tests.data_helper import TestData
+from ddex.release import ReleaseIdType, Release
+from ddex.release_builder import ReleaseBuilder
+from ddex.tests.data_helper import TestData
class ReleaseBuilderTests(unittest.TestCase):
def test_can_build_valid_release(self):
diff --git a/ddex/tests/test_release_id.py b/ddex/tests/test_release_id.py
index 0f8007d..c1404fc 100644
--- a/ddex/tests/test_release_id.py
+++ b/ddex/tests/test_release_id.py
@@ -1,4 +1,4 @@
-from DDEXUI.ddex.release import ReleaseId
+from ddex.release import ReleaseId
import unittest
class ReleaseIdTests(unittest.TestCase):
diff --git a/ddex/tests/test_resource.py b/ddex/tests/test_resource.py
index 1adee67..65a070e 100644
--- a/ddex/tests/test_resource.py
+++ b/ddex/tests/test_resource.py
@@ -1,108 +1,108 @@
-import unittest
-import functools
-import xml.etree.cElementTree as ET
-from DDEXUI.ddex.file_metadata import AudioFileMetadata, ImageFileMetadata
-from DDEXUI.ddex.resource import SoundRecording, Image
-import os
-
-class SoundRecordingTests(unittest.TestCase):
-
- def setUp(self):
- self.resource_reference = "A1"
- self.title = "Some Title"
- self.file_metadata = AudioFileMetadata("PT0H2M28.000S", 320,"dff9465befeb68d97cd6fd103547c464","test.mp3", "MP3")
- self.technical_resource_details_reference = "T1"
- self.res = SoundRecording(self.resource_reference, "abc", self.title, self.file_metadata, self.technical_resource_details_reference)
- self.element = self.res.write()
-
- def test_resource_should_display_type(self):
- self.assertEqual(self.element.tag, "SoundRecording")
-
- def test_resource_should_display_sound_recording_type(self):
- self.assertEqual(self.element.find("./SoundRecordingType").text, "MusicalWorkSoundRecording")
-
- def test_resource_should_contain_isrc(self):
- self.assertEqual(self.element.find("./SoundRecordingId/ISRC").text, "abc")
-
- def test_resource_should_contain_resource_reference(self):
- self.assertEqual(self.element.find("./ResourceReference").text, self.resource_reference)
-
- def test_resource_should_contain_reference_title(self):
- self.assertEqual(self.element.find("./ReferenceTitle/TitleText").text, self.title)
-
- def test_should_have_a_worldwide_territory(self):
- self.assertEqual(self.element.find("./SoundRecordingDetailsByTerritory/TerritoryCode").text, "Worldwide")
-
- def test_should_have_audio_codec(self):
- self.assertEqual(self.world_wide_territory().find("./TechnicalSoundRecordingDetails/AudioCodecType").text, "MP3")
-
- def test_should_have_file_name_and_path(self):
- file_element = self.world_wide_territory().find("./TechnicalSoundRecordingDetails/File")
- self.assertEqual(file_element.find("./FileName").text, "test.mp3")
- hash_sum = file_element.find("./HashSum")
- self.assertEqual(hash_sum.find("./HashSum").text, "dff9465befeb68d97cd6fd103547c464")
- self.assertEqual(hash_sum.find("./HashSumAlgorithmType").text, "MD5")
-
- def test_should_have_duration(self):
- self.assertEqual(self.element.find("./Duration").text, "PT0H2M28.000S")
-
- def test_should_have_technical_resource_details_reference(self):
- self.assertEqual(self.world_wide_territory().find("./TechnicalSoundRecordingDetails/TechnicalResourceDetailsReference").text, self.technical_resource_details_reference)
-
- def test_should_store_technical_resource_details_reference(self):
- self.assertEqual(self.res.technical_resource_details_reference, self.technical_resource_details_reference)
-
- def world_wide_territory(self):
- return (list(filter(lambda x: x.find("./TerritoryCode").text == "Worldwide", self.element
- .findall("./SoundRecordingDetailsByTerritory")))[0])
-
-class ImageTests(unittest.TestCase):
-
- def setUp(self):
- self.resource_reference = "A1"
- self.title = "Some Title"
- self.file_metadata = ImageFileMetadata("dff9465befeb68d97cd6fd103547c464","test.jpg", "JPG", 300, 400)
- self.technical_resource_details_reference = "T1"
- self.res = Image(self.resource_reference, "abc", self.file_metadata, self.technical_resource_details_reference)
- self.element = self.res.write()
-
- def test_resource_should_display_type(self):
- self.assertEqual(self.element.tag, "Image")
-
- def test_resource_should_display_image_type(self):
- self.assertEqual(self.element.find("./ImageType").text, "FrontCoverImage")
-
- def test_resource_should_contain_id(self):
- el = self.element.find("./ImageId/ProprietaryId")
- self.assertEqual(el.text, "abc")
- self.assertEqual(el.attrib["Namespace"], "DDEXUI")
-
- def test_resource_should_contain_resource_reference(self):
- self.assertEqual(self.element.find("./ResourceReference").text, self.resource_reference)
-
- def test_should_have_a_worldwide_territory(self):
- self.assertEqual(self.element.find("./ImageDetailsByTerritory/TerritoryCode").text, "Worldwide")
-
- def test_should_have_image_codec(self):
- self.assertEqual(self.world_wide_territory().find("./TechnicalImageDetails/ImageCodecType").text, "JPEG")
-
- def test_should_have_image_height_and_width(self):
- self.assertEqual(self.world_wide_territory().find("./TechnicalImageDetails/ImageWidth").text, str(self.file_metadata.width))
- self.assertEqual(self.world_wide_territory().find("./TechnicalImageDetails/ImageHeight").text, str(self.file_metadata.height))
-
- def test_should_have_file_name_and_path(self):
- file_element = self.world_wide_territory().find("./TechnicalImageDetails/File")
- self.assertEqual(file_element.find("./FileName").text, "test.jpg")
- hash_sum = file_element.find("./HashSum")
- self.assertEqual(hash_sum.find("./HashSum").text, "dff9465befeb68d97cd6fd103547c464")
- self.assertEqual(hash_sum.find("./HashSumAlgorithmType").text, "MD5")
-
- def test_should_have_technical_resource_details_reference(self):
- self.assertEqual(self.world_wide_territory().find("./TechnicalImageDetails/TechnicalResourceDetailsReference").text, self.technical_resource_details_reference)
-
- def test_should_store_technical_resource_details_reference(self):
- self.assertEqual(self.res.technical_resource_details_reference, self.technical_resource_details_reference)
-
- def world_wide_territory(self):
- return (list(filter(lambda x: x.find("./TerritoryCode").text == "Worldwide", self.element
- .findall("./ImageDetailsByTerritory")))[0])
+import unittest
+import functools
+import xml.etree.cElementTree as ET
+from ddex.file_metadata import AudioFileMetadata, ImageFileMetadata
+from ddex.resource import SoundRecording, Image
+import os
+
+class SoundRecordingTests(unittest.TestCase):
+
+ def setUp(self):
+ self.resource_reference = "A1"
+ self.title = "Some Title"
+ self.file_metadata = AudioFileMetadata("PT0H2M28.000S", 320,"dff9465befeb68d97cd6fd103547c464","test.mp3", "MP3")
+ self.technical_resource_details_reference = "T1"
+ self.res = SoundRecording(self.resource_reference, "abc", self.title, self.file_metadata, self.technical_resource_details_reference)
+ self.element = self.res.write()
+
+ def test_resource_should_display_type(self):
+ self.assertEqual(self.element.tag, "SoundRecording")
+
+ def test_resource_should_display_sound_recording_type(self):
+ self.assertEqual(self.element.find("./SoundRecordingType").text, "MusicalWorkSoundRecording")
+
+ def test_resource_should_contain_isrc(self):
+ self.assertEqual(self.element.find("./SoundRecordingId/ISRC").text, "abc")
+
+ def test_resource_should_contain_resource_reference(self):
+ self.assertEqual(self.element.find("./ResourceReference").text, self.resource_reference)
+
+ def test_resource_should_contain_reference_title(self):
+ self.assertEqual(self.element.find("./ReferenceTitle/TitleText").text, self.title)
+
+ def test_should_have_a_worldwide_territory(self):
+ self.assertEqual(self.element.find("./SoundRecordingDetailsByTerritory/TerritoryCode").text, "Worldwide")
+
+ def test_should_have_audio_codec(self):
+ self.assertEqual(self.world_wide_territory().find("./TechnicalSoundRecordingDetails/AudioCodecType").text, "MP3")
+
+ def test_should_have_file_name_and_path(self):
+ file_element = self.world_wide_territory().find("./TechnicalSoundRecordingDetails/File")
+ self.assertEqual(file_element.find("./FileName").text, "test.mp3")
+ hash_sum = file_element.find("./HashSum")
+ self.assertEqual(hash_sum.find("./HashSum").text, "dff9465befeb68d97cd6fd103547c464")
+ self.assertEqual(hash_sum.find("./HashSumAlgorithmType").text, "MD5")
+
+ def test_should_have_duration(self):
+ self.assertEqual(self.element.find("./Duration").text, "PT0H2M28.000S")
+
+ def test_should_have_technical_resource_details_reference(self):
+ self.assertEqual(self.world_wide_territory().find("./TechnicalSoundRecordingDetails/TechnicalResourceDetailsReference").text, self.technical_resource_details_reference)
+
+ def test_should_store_technical_resource_details_reference(self):
+ self.assertEqual(self.res.technical_resource_details_reference, self.technical_resource_details_reference)
+
+ def world_wide_territory(self):
+ return (list(filter(lambda x: x.find("./TerritoryCode").text == "Worldwide", self.element
+ .findall("./SoundRecordingDetailsByTerritory")))[0])
+
+class ImageTests(unittest.TestCase):
+
+ def setUp(self):
+ self.resource_reference = "A1"
+ self.title = "Some Title"
+ self.file_metadata = ImageFileMetadata("dff9465befeb68d97cd6fd103547c464","test.jpg", "JPG", 300, 400)
+ self.technical_resource_details_reference = "T1"
+ self.res = Image(self.resource_reference, "abc", self.file_metadata, self.technical_resource_details_reference)
+ self.element = self.res.write()
+
+ def test_resource_should_display_type(self):
+ self.assertEqual(self.element.tag, "Image")
+
+ def test_resource_should_display_image_type(self):
+ self.assertEqual(self.element.find("./ImageType").text, "FrontCoverImage")
+
+ def test_resource_should_contain_id(self):
+ el = self.element.find("./ImageId/ProprietaryId")
+ self.assertEqual(el.text, "abc")
+ self.assertEqual(el.attrib["Namespace"], "DDEXUI")
+
+ def test_resource_should_contain_resource_reference(self):
+ self.assertEqual(self.element.find("./ResourceReference").text, self.resource_reference)
+
+ def test_should_have_a_worldwide_territory(self):
+ self.assertEqual(self.element.find("./ImageDetailsByTerritory/TerritoryCode").text, "Worldwide")
+
+ def test_should_have_image_codec(self):
+ self.assertEqual(self.world_wide_territory().find("./TechnicalImageDetails/ImageCodecType").text, "JPEG")
+
+ def test_should_have_image_height_and_width(self):
+ self.assertEqual(self.world_wide_territory().find("./TechnicalImageDetails/ImageWidth").text, str(self.file_metadata.width))
+ self.assertEqual(self.world_wide_territory().find("./TechnicalImageDetails/ImageHeight").text, str(self.file_metadata.height))
+
+ def test_should_have_file_name_and_path(self):
+ file_element = self.world_wide_territory().find("./TechnicalImageDetails/File")
+ self.assertEqual(file_element.find("./FileName").text, "test.jpg")
+ hash_sum = file_element.find("./HashSum")
+ self.assertEqual(hash_sum.find("./HashSum").text, "dff9465befeb68d97cd6fd103547c464")
+ self.assertEqual(hash_sum.find("./HashSumAlgorithmType").text, "MD5")
+
+ def test_should_have_technical_resource_details_reference(self):
+ self.assertEqual(self.world_wide_territory().find("./TechnicalImageDetails/TechnicalResourceDetailsReference").text, self.technical_resource_details_reference)
+
+ def test_should_store_technical_resource_details_reference(self):
+ self.assertEqual(self.res.technical_resource_details_reference, self.technical_resource_details_reference)
+
+ def world_wide_territory(self):
+ return (list(filter(lambda x: x.find("./TerritoryCode").text == "Worldwide", self.element
+ .findall("./ImageDetailsByTerritory")))[0])
diff --git a/ddex/tests/test_resource_manager.py b/ddex/tests/test_resource_manager.py
index d09be09..f6ac969 100644
--- a/ddex/tests/test_resource_manager.py
+++ b/ddex/tests/test_resource_manager.py
@@ -1,11 +1,14 @@
-import unittest
-from shutil import rmtree
from os import path
+import os
+from shutil import rmtree
from tempfile import gettempdir
+import unittest
import uuid
-from DDEXUI.file_parser import FileParser
-from DDEXUI.ddex.resource import SoundRecording, Image
-from DDEXUI.resource_manager import ResourceManager
+
+from ddex.resource import SoundRecording, Image
+from ddexui.file_parser import FileParser
+from ddexui.resource_manager import ResourceManager
+
class ResourceManagerSoundRecordingTests(unittest.TestCase):
@classmethod
@@ -16,7 +19,8 @@ def setUpClass(self):
self.root_folder = gettempdir()
self.batch_id = str(uuid.uuid4())
self.title = "the title"
- file_path = path.join('ddex', 'tests', 'resources', 'test.mp3')
+
+ file_path = path.join(os.path.dirname(__file__), 'resources', 'test.mp3')
self.resource_reference = "A1"
self.technical_resource_details_reference = "T1"
@@ -55,7 +59,7 @@ def setUpClass(self):
self.root_folder = gettempdir()
self.batch_id = str(uuid.uuid4())
self.title = "the title"
- file_path = path.join('ddex', 'tests', 'resources', 'test.jpg')
+ file_path = os.path.join(os.path.dirname(__file__), "resources", "test.jpg")
self.resource_reference = "A2"
self.technical_resource_details_reference = "T4"
diff --git a/ddex/tests/test_validate.py b/ddex/tests/test_validate.py
index afb60c5..900ebfe 100644
--- a/ddex/tests/test_validate.py
+++ b/ddex/tests/test_validate.py
@@ -1,4 +1,4 @@
-from DDEXUI.ddex.validate import Validate
+from ddex.validate import Validate
from datetime import datetime
import unittest
diff --git a/ddex/tests/test_validates_against_ddex_schema.py b/ddex/tests/test_validates_against_ddex_schema.py
index 2d8cc64..523b6d9 100644
--- a/ddex/tests/test_validates_against_ddex_schema.py
+++ b/ddex/tests/test_validates_against_ddex_schema.py
@@ -1,18 +1,28 @@
-import lxml.etree as ET
-from DDEXUI.ddex.ddex import DDEX
-from DDEXUI.ddex.release import Release, ReleaseId
-from DDEXUI.ddex.party import Party, PartyType
-from DDEXUI.ddex.deal import Deal
-from DDEXUI.ddex.resource import SoundRecording, Image
-from DDEXUI.ddex.message_header import MessageHeader
-from DDEXUI.file_parser import FileParser
from datetime import date
+import os
+import errno
import unittest
+from ddex import DDEX
+from ddex.deal import Deal
+from ddex.party import Party, PartyType
+from ddex.release import Release, ReleaseId
+from ddex.resource import SoundRecording, Image
+from ddexui.file_parser import FileParser
+import lxml.etree as ET
+
+
class DDEXSchemaValidation(unittest.TestCase):
def test_created_ddex_files_validate_against_ddex_xsd(self):
#helped by http://alex-sansom.info/content/validating-xml-against-xml-schema-python
- output_file = "/tmp/file.xml"
+ output_file = os.path.join(os.path.dirname(__file__), "tmp", "file.xml")
+ try:
+ os.makedirs(os.path.dirname(output_file))
+ except OSError as exc: # Python >2.5
+ if exc.errno == errno.EEXIST and os.path.isdir(os.path.dirname(output_file)):
+ pass
+ else:
+ raise
release = self.create_product_release()
@@ -28,7 +38,7 @@ def test_created_ddex_files_validate_against_ddex_xsd(self):
tree = ET.parse(output_file)
#original schema at http://ddex.net/xml/ern/341/release-notification.xsd
- schema = ET.XMLSchema(file="ddex/tests/resources/xsds/release-notification.xsd")
+ schema = ET.XMLSchema(file=os.path.join(os.path.dirname(__file__), "resources", "xsds", "release-notification.xsd"))
schema.assertValid(tree)
def create_product_release(self):
@@ -51,10 +61,10 @@ def create_product_release(self):
def create_sound_recording(self):
resource_reference = "A1"
- resource = SoundRecording(resource_reference, "abc", "Bad", FileParser().parse("ddex/tests/resources/test.mp3"),"T1")
+ resource = SoundRecording(resource_reference, "abc", "Bad", FileParser().parse(os.path.join(os.path.dirname(__file__), "resources", "test.mp3")),"T1")
return resource
def create_image(self):
image_resource_reference = "A2"
- image_resource = Image(image_resource_reference, "abc", FileParser().parse("ddex/tests/resources/test.jpg"),"T2")
+ image_resource = Image(image_resource_reference, "abc", FileParser().parse(os.path.join(os.path.dirname(__file__), "resources", "test.jpg")),"T2")
return image_resource
diff --git a/__init__.py b/ddexui/__init__.py
similarity index 100%
rename from __init__.py
rename to ddexui/__init__.py
diff --git a/batch_generator.py b/ddexui/batch_generator.py
similarity index 66%
rename from batch_generator.py
rename to ddexui/batch_generator.py
index 1298f63..a583c09 100644
--- a/batch_generator.py
+++ b/ddexui/batch_generator.py
@@ -1,6 +1,6 @@
-from os import makedirs
+import os
from os import path
-from DDEXUI.ddex.ddex import generate_batch_id
+
class BatchGenerator:
def __init__(self, root_folder, batch_id):
@@ -12,5 +12,10 @@ def generate(self, builders):
for builder in builders:
ddex = builder.build()
product_path = path.join(batch_path, builder.get_upc())
- makedirs(product_path, exist_ok=True)
+ # Could use exist_ok in python 3+ but not available in 27
+ try:
+ os.makedirs(product_path)
+ except OSError:
+ if not os.path.isdir(path):
+ raise
ddex.write(path.join(product_path, builder.get_upc() + ".xml"))
diff --git a/deal_window.py b/ddexui/deal_window.py
similarity index 77%
rename from deal_window.py
rename to ddexui/deal_window.py
index 483ad97..d4aec9b 100644
--- a/deal_window.py
+++ b/ddexui/deal_window.py
@@ -1,11 +1,17 @@
-import DDEXUI.ddex.deal as deal
-from DDEXUI.inputs import *
-from DDEXUI.ddex.validate import Validate
-from DDEXUI.tkinterutil import showerrorbox
+import ddex.deal as deal
+from ddexui.inputs import OptionInput, EntryInput
+from ddex.validate import Validate
+from ddexui.tkinterutil import showerrorbox
-class DealWindow(tk.tkinter.Toplevel):
+try:
+ import ttk as tk
+ from Tkinter import Toplevel
+except ImportError:
+ import tkinter.ttk as tk
+
+class DealWindow(Toplevel):
def __init__(self, frame):
- tk.tkinter.Toplevel.__init__(self, frame)
+ Toplevel.__init__(self, frame)
self.title("Deal Editor")
self.focus_set()
self.fields = ([OptionInput(self, "Commercial Model", *deal.CommercialModals),
@@ -33,7 +39,7 @@ def create_deal(self):
#todo: remove duplication of these 2 methods
def value_of(self, title):
- row = next(filter(lambda x: x.title == title,self.fields))
+ row = next(iter(filter(lambda x: x.title == title,self.fields)))
return row.value()
def all_release_fields_valid(self):
diff --git a/file_parser.py b/ddexui/file_parser.py
similarity index 92%
rename from file_parser.py
rename to ddexui/file_parser.py
index f585d15..6f2878f 100644
--- a/file_parser.py
+++ b/ddexui/file_parser.py
@@ -1,5 +1,5 @@
-from DDEXUI.ddex.file_metadata import *
-from mutagenx.mp3 import MP3
+from ddex.file_metadata import AudioFileMetadata, ImageFileMetadata
+from mutagen.mp3 import MP3
from PIL import Image
import hashlib
import os
diff --git a/inputs.py b/ddexui/inputs.py
similarity index 84%
rename from inputs.py
rename to ddexui/inputs.py
index b9cdda4..bf1814c 100644
--- a/inputs.py
+++ b/ddexui/inputs.py
@@ -1,10 +1,15 @@
-import tkinter.ttk as tk
+try:
+ import ttk as tk
+ from Tkinter import Label, StringVar, BooleanVar, W
+except ImportError:
+ import tkinter.ttk as tk
+ from tkinter import Label, StringVar, BooleanVar, W
class InputRow:
def __init__(self, frame, title):
self.frame = frame
- self.error_label = tk.tkinter.Label(self.frame, fg="red", width=50)
- self.v = tk.tkinter.StringVar()
+ self.error_label = Label(self.frame, fg="red", width=50)
+ self.v = StringVar()
self.title = title
self.input = None
@@ -32,7 +37,7 @@ def draw(self,row):
class CheckboxInput(InputRow):
def __init__(self, frame, title):
InputRow.__init__(self, frame, title)
- self.v = tk.tkinter.BooleanVar()
+ self.v = BooleanVar()
self.v.set(False)
self.input = tk.Checkbutton(self.frame, variable=self.v, text=title)
@@ -59,7 +64,7 @@ def value(self):
def draw(self,row):
InputRow.draw(self, row)
- self.label.grid(row=row, column=0,sticky=tk.tkinter.W)
+ self.label.grid(row=row, column=0,sticky=W)
def on_invalidate(self, message):
self.error_label["text"] = message
diff --git a/party_repository.py b/ddexui/party_repository.py
similarity index 91%
rename from party_repository.py
rename to ddexui/party_repository.py
index 72abcef..c6001ea 100644
--- a/party_repository.py
+++ b/ddexui/party_repository.py
@@ -1,33 +1,35 @@
-from DDEXUI.ddex.party import Party
-import sqlite3
-
-class PartyRepository:
- def __init__(self):
- self.__with_cursor(lambda cursor, connection: cursor.execute("CREATE TABLE IF NOT EXISTS party(name text, partyId text, partyType integer)"))
-
- def __get_connection(self):
- return sqlite3.connect("ddexui")
-
- def get_party(self, party_type):
- connection = self.__get_connection()
- cursor = connection.cursor()
- cursor.execute("SELECT partyId, name, partyType FROM party WHERE partyType=?", (party_type,))
- party = cursor.fetchone()
- connection.close()
- if(party == None):
- return None
- return Party(party[0], party[1], party[2])
-
- def write_party(self, party):
- self.__with_cursor(lambda cursor, connection: self.__write_party(cursor, connection, party))
-
- def __write_party(self, cursor, connection, party):
- cursor.execute("INSERT INTO party(name, partyId, partyType) VALUES(?,?,?)", (party.name, party.party_id, party.party_type,))
- connection.commit()
- connection.close()
-
- def __with_cursor(self, action):
- connection = self.__get_connection()
- cur = connection.cursor()
- action(cur, connection)
- connection.close()
+import sqlite3
+
+from ddex.party import Party
+
+
+class PartyRepository:
+ def __init__(self):
+ self.__with_cursor(lambda cursor, connection: cursor.execute("CREATE TABLE IF NOT EXISTS party(name text, partyId text, partyType integer)"))
+
+ def __get_connection(self):
+ return sqlite3.connect("ddexui.db")
+
+ def get_party(self, party_type):
+ connection = self.__get_connection()
+ cursor = connection.cursor()
+ cursor.execute("SELECT partyId, name, partyType FROM party WHERE partyType=?", (party_type,))
+ party = cursor.fetchone()
+ connection.close()
+ if(party == None):
+ return None
+ return Party(party[0], party[1], party[2])
+
+ def write_party(self, party):
+ self.__with_cursor(lambda cursor, connection: self.__write_party(cursor, connection, party))
+
+ def __write_party(self, cursor, connection, party):
+ cursor.execute("INSERT INTO party(name, partyId, partyType) VALUES(?,?,?)", (party.name, party.party_id, party.party_type,))
+ connection.commit()
+ connection.close()
+
+ def __with_cursor(self, action):
+ connection = self.__get_connection()
+ cur = connection.cursor()
+ action(cur, connection)
+ connection.close()
diff --git a/product_service.py b/ddexui/product_service.py
similarity index 97%
rename from product_service.py
rename to ddexui/product_service.py
index b544f69..f1f12c0 100644
--- a/product_service.py
+++ b/ddexui/product_service.py
@@ -1,4 +1,4 @@
-from DDEXUI.ddex.ddex_builder import DDEXBuilder
+from ddex.ddex_builder import DDEXBuilder
class ProductService:
def __init__(self, product_release_builder, upc, coverart_path, track_builder_file_paths, is_update, resource_manager):
diff --git a/release_window.py b/ddexui/release_window.py
similarity index 90%
rename from release_window.py
rename to ddexui/release_window.py
index fe9c1e2..f3fe851 100644
--- a/release_window.py
+++ b/ddexui/release_window.py
@@ -1,19 +1,26 @@
-import tkinter.ttk as tk
+try:
+ import ttk as tk
+ from Tkinter import Toplevel, Listbox, Label
+ from tkFileDialog import askopenfilename
+except ImportError:
+ import tkinter.ttk as tk
+ from tk.tkinter import Toplevel, Listbox, Label
+ from tkinter.filedialog import askopenfilename
from PIL import Image, ImageTk
-from tkinter.filedialog import askopenfilename
-from DDEXUI.ddex.release_builder import ReleaseBuilder
-from DDEXUI.ddex.validate import Validate
-from DDEXUI.inputs import *
-from DDEXUI.ddex.release import *
-from DDEXUI.deal_window import DealWindow
-from DDEXUI.file_parser import FileParser
-from DDEXUI.tkinterutil import showerrorbox
-from DDEXUI.resource_manager import ResourceManager
-from DDEXUI.product_service import ProductService
-
-class ReleaseWindow(tk.tkinter.Toplevel):
+from ddex.release_builder import ReleaseBuilder
+from ddex.validate import Validate
+from ddexui.inputs import *
+from ddex.release import *
+from ddexui.deal_window import DealWindow
+from ddexui.file_parser import FileParser
+from ddexui.tkinterutil import showerrorbox
+from ddexui.resource_manager import ResourceManager
+from ddexui.product_service import ProductService
+
+
+class ReleaseWindow(Toplevel):
def __init__(self, frame):
- tk.tkinter.Toplevel.__init__(self, frame)
+ Toplevel.__init__(self, frame)
self._release_builder = ReleaseBuilder()
self.fields = ([
EntryInput(self, "Title", Validate().not_empty),
@@ -55,12 +62,12 @@ def __init__(self, frame, root_folder, batch_id):
self.delete_track_button.grid(row=self.new_row(), column=0)
self.add_img_button = tk.Button(self, text="Album Artwork", command=self.add_image).grid(row=self.new_row(), column=0)
self.button = tk.Button(self, text="OK", command=self.__destroy_if_valid).grid(row=self.new_row(), column=0)
- self.track_list = tk.tkinter.Listbox(self)
+ self.track_list = Listbox(self)
self.track_list.bind('', lambda x: self.remove_track())
track_list_row = self.new_row()
self.track_list.grid(row=track_list_row, column=0)
- self.artwork = tk.tkinter.Label(self)
+ self.artwork = Label(self)
self.artwork.grid(row=track_list_row, column=1)
self.draw_tracks()
diff --git a/resource_manager.py b/ddexui/resource_manager.py
similarity index 94%
rename from resource_manager.py
rename to ddexui/resource_manager.py
index 8ebcaf7..92f816b 100644
--- a/resource_manager.py
+++ b/ddexui/resource_manager.py
@@ -1,7 +1,7 @@
from shutil import copyfile
-from DDEXUI.file_parser import FileParser
+from ddexui.file_parser import FileParser
from os import path, makedirs
-from DDEXUI.ddex.resource import SoundRecording, Image
+from ddex.resource import SoundRecording, Image
class ResourceManager:
def __init__(self, file_parser, batch_id, root_folder='.'):
diff --git a/tkinterutil.py b/ddexui/tkinterutil.py
similarity index 66%
rename from tkinterutil.py
rename to ddexui/tkinterutil.py
index 9fe46d1..8d22fd9 100644
--- a/tkinterutil.py
+++ b/ddexui/tkinterutil.py
@@ -1,5 +1,12 @@
-import tkinter.ttk as tk
-import tkinter.messagebox as mb
+import traceback
+
+
+try:
+ import ttk as tk
+ import tkMessageBox as mb
+except ImportError:
+ import tkinter.ttk as tk
+ import tkinter.messagebox as mb
#thanks to http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/
#and http://stackoverflow.com/questions/6666882/tkinter-python-catching-exceptions
@@ -9,6 +16,7 @@ def run(*args, **kwargs):
func(*args, **kwargs)
except Exception as e:
print(e)
+ traceback.print_exc()
mb.showerror("Error", e)
raise e
return run
diff --git a/metadata_form.py b/metadata_form.py
index 0e5c7dd..6a04cc5 100755
--- a/metadata_form.py
+++ b/metadata_form.py
@@ -1,30 +1,41 @@
#!/usr/bin/python3.3
-import tkinter.ttk as tk
-import tkinter.messagebox as mb
-from DDEXUI.ddex.ddex_builder import DDEXBuilder
-from DDEXUI.ddex.party import *
-from DDEXUI.ddex.validate import Validate
-from DDEXUI.party_repository import PartyRepository
-from DDEXUI.inputs import *
-from DDEXUI.release_window import ProductReleaseWindow
-from DDEXUI.batch_generator import BatchGenerator
-from DDEXUI.ddex.ddex import generate_batch_id
-from DDEXUI.tkinterutil import showerrorbox
-import sys
import os
+import sys
+
+from ddex import generate_batch_id
+from ddex.party import PartyType, Party
+from ddex.validate import Validate
+from ddexui.batch_generator import BatchGenerator
+from ddexui.inputs import EntryInput
+from ddexui.party_repository import PartyRepository
+from ddexui.release_window import ProductReleaseWindow
+from ddexui.tkinterutil import showerrorbox
+
+
+try:
+ import Tkinter as tkinter
+ from Tkinter import Toplevel, Label
+ import ttk as tk
+ import tkMessageBox as mb
+except ImportError as e:
+ print "IMPORT ERROR" + str(e)
+ import tkinter
+ from tkinter import Toplevel, Label
+ import tkinter.ttk as tk
+ import tkinter.messagebox as mb
-class PartyWindow(tk.tkinter.Toplevel):
+class PartyWindow(Toplevel):
def __init__(self, frame, party_type):
#http://tkinter.unpythonic.net/wiki/ModalWindow
self.party_repository = PartyRepository()
self.party_type = party_type
- tk.tkinter.Toplevel.__init__(self, frame)
+ Toplevel.__init__(self, frame)
# self.geometry("400x300")
self.transient(frame)
self.focus_set()
#self.grab_set()
message = "Please enter your " + PartyType.reverse_mapping[self.party_type] + " ddex party details. You can apply for a ddex Party id for free at: http://ddex.net/content/implementation-licence-application-form"
- text = tk.tkinter.Label(self, height=5, text=message, wraplength=400)
+ text = Label(self, height=5, text=message, wraplength=400)
text.grid(row=0, column=0,columnspan=3)
self.party_id = EntryInput(self, "Party Id", Validate().not_empty)
self.party_name = EntryInput(self, "Party Name", Validate().not_empty)
@@ -44,12 +55,12 @@ class Program:
def __init__(self):
self.party_repository = PartyRepository()
self._ddex_builders = []
- self.frame = tk.tkinter.Tk()
+ self.frame = tkinter.Tk()
self.frame.geometry("600x300")
- icon = tk.tkinter.PhotoImage(file=self.get_icon())
+ icon = tkinter.PhotoImage(file=self.get_icon())
self.frame.tk.call("wm", "iconphoto", self.frame._w, icon)
self.frame.title("Metadata Editor")
- self.product_list = tk.tkinter.Listbox(self.frame)
+ self.product_list = tkinter.Listbox(self.frame)
self.product_list.bind('', lambda x: self.remove_product())
self._root_folder = "out"
self.add_release_button = tk.Button(self.frame, text="Add Product", command=self.create_ddex)
@@ -82,7 +93,7 @@ def create_ddex(self):
release_window.wait_window()
ddex_builder = release_window.create_ddex()
self._ddex_builders.append(ddex_builder)
- self.product_list.insert(tk.tkinter.END, ddex_builder.get_upc())
+ self.product_list.insert(tkinter.END, ddex_builder.get_upc())
self.remove_button['state'] = 'enabled'
@showerrorbox
diff --git a/requirements.txt b/requirements.txt
index 2735c4c..7973cdd 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,6 @@
-mutagenx>=1.21
+mutagen>=1.21
nose==1.3.0
pillow==2.2.1
-lxml==3.2.0
+lxml==3.4.1
+enum34==1.0.4
+cx_Freeze==4.3.4
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 0178108..eb8c607 100644
--- a/setup.py
+++ b/setup.py
@@ -1,16 +1,15 @@
-from cx_Freeze import setup, Executable
-from os import path
-
-executables = [
- Executable('metadata_form.py')
-]
-
-includes = [path.join('res', 'favicon.gif')]
-print(includes)
-
-setup(name='DDEXUI',
- version='0.1',
- description='A user interface for distributing ddex deliveries',
- executables=executables,
- options = {'build_exe': {'include_files': includes}}
- )
+from cx_Freeze import setup, Executable
+from os import path
+
+executables = [
+ Executable('metadata_form.py')
+]
+
+includes = [path.join('res', 'favicon.gif')]
+
+setup(name='DDEXUI',
+ version='0.1',
+ description='A user interface for distributing ddex deliveries',
+ executables=executables,
+ options = {'build_exe': {'include_files': includes}}
+ )
diff --git a/unpackEgg.py b/unpackEgg.py
index cec5e58..21612ba 100644
--- a/unpackEgg.py
+++ b/unpackEgg.py
@@ -1,25 +1,25 @@
-import os
-import pkg_resources
-import sys
-from setuptools.archive_util import unpack_archive
-
-def unpackEgg(modulo):
- eggs = pkg_resources.require(modulo)
- for egg in eggs:
- if os.path.isdir(egg.location):
- sys.path.insert(0, egg.location)
- continue
- unpack_archive(egg.location, ".")
- eggpacks = set()
- eggspth = open("./eggs.pth", "w")
- for egg in eggs:
- eggspth.write(os.path.basename(egg.location))
- eggspth.write("\n")
- eggpacks.update(egg.get_metadata_lines("top_level.txt"))
- eggspth.close()
-
- eggpacks.clear()
-
-if __name__ == '__main__':
- unpackEgg(sys.argv[1])
-
+import os
+import pkg_resources
+import sys
+from setuptools.archive_util import unpack_archive
+
+def unpackEgg(modulo):
+ eggs = pkg_resources.require(modulo)
+ for egg in eggs:
+ if os.path.isdir(egg.location):
+ sys.path.insert(0, egg.location)
+ continue
+ unpack_archive(egg.location, ".")
+ eggpacks = set()
+ eggspth = open("./eggs.pth", "w")
+ for egg in eggs:
+ eggspth.write(os.path.basename(egg.location))
+ eggspth.write("\n")
+ eggpacks.update(egg.get_metadata_lines("top_level.txt"))
+ eggspth.close()
+
+ eggpacks.clear()
+
+if __name__ == '__main__':
+ unpackEgg(sys.argv[1])
+