poms 1.2.2 → 2.0.0.a
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +17 -0
- data/.rubocop.yml +24 -0
- data/.ruby-version +1 -0
- data/.todo.reek +50 -0
- data/CHANGELOG.md +1 -0
- data/Gemfile +4 -0
- data/README.md +54 -6
- data/bin/ci-run +57 -0
- data/bin/ci-setup +46 -0
- data/bin/reek +16 -0
- data/bin/rspec +16 -0
- data/bin/rubocop +16 -0
- data/examples/fetch.rb +16 -0
- data/examples/search.rb +17 -0
- data/lib/poms.rb +84 -156
- data/lib/poms/api/auth.rb +42 -22
- data/lib/poms/api/client.rb +58 -0
- data/lib/poms/api/drivers/net_http.rb +69 -0
- data/lib/poms/api/json_client.rb +35 -0
- data/lib/poms/api/pagination_client.rb +67 -0
- data/lib/poms/api/request.rb +29 -31
- data/lib/poms/api/response.rb +31 -0
- data/lib/poms/api/search.rb +38 -0
- data/lib/poms/api/uris.rb +10 -0
- data/lib/poms/api/uris/media.rb +41 -0
- data/lib/poms/api/uris/schedule.rb +28 -0
- data/lib/poms/configuration.rb +59 -0
- data/lib/poms/errors.rb +26 -0
- data/lib/poms/fields.rb +26 -3
- data/lib/poms/timestamp.rb +10 -3
- data/lib/poms/version.rb +1 -1
- data/poms.gemspec +10 -11
- metadata +59 -128
- data/Gemfile.lock +0 -120
- data/lib/poms/base.rb +0 -8
- data/lib/poms/broadcast.rb +0 -55
- data/lib/poms/builder.rb +0 -92
- data/lib/poms/builderless/broadcast.rb +0 -37
- data/lib/poms/builderless/clip.rb +0 -36
- data/lib/poms/connect.rb +0 -11
- data/lib/poms/has_ancestors.rb +0 -54
- data/lib/poms/has_base_attributes.rb +0 -29
- data/lib/poms/merged_series.rb +0 -28
- data/lib/poms/poms_error.rb +0 -5
- data/lib/poms/schedule_event.rb +0 -34
- data/lib/poms/season.rb +0 -13
- data/lib/poms/series.rb +0 -12
- data/lib/poms/views.rb +0 -52
- data/spec/fabricators/poms_fabricator.rb +0 -44
- data/spec/fixtures/poms_broadcast.json +0 -318
- data/spec/fixtures/poms_broadcast_multiple_schedule_events.json +0 -354
- data/spec/fixtures/poms_broadcast_pippi.json +0 -180
- data/spec/fixtures/poms_group.json +0 -1087
- data/spec/fixtures/poms_series.json +0 -49
- data/spec/fixtures/poms_single_broadcast_by_channel.json +0 -136
- data/spec/fixtures/poms_zapp.json +0 -47363
- data/spec/fixtures/vcr_cassettes/poms/builderless/broadcast_starts_at/returns_a_datetime.yml +0 -53
- data/spec/fixtures/vcr_cassettes/poms/builderless/clip/has_a_position.yml +0 -43
- data/spec/fixtures/vcr_cassettes/poms/builderless/clip/has_a_title.yml +0 -43
- data/spec/fixtures/vcr_cassettes/poms/builderless/clip/has_a_video_url.yml +0 -43
- data/spec/fixtures/vcr_cassettes/poms/builderless/clip/has_an_image_id.yml +0 -43
- data/spec/fixtures/vcr_cassettes/poms/fetch_broadcasts_fetch_current_broadcast_fetches_the_current_broadcast.yml +0 -60
- data/spec/fixtures/vcr_cassettes/poms/fetch_broadcasts_fetch_next_broadcast_and_key_fetches_the_current_broadcast.yml +0 -68
- data/spec/fixtures/vcr_cassettes/poms/fetch_broadcasts_fetch_next_broadcast_and_key_returns_the_key.yml +0 -68
- data/spec/fixtures/vcr_cassettes/poms/merged_series/turns_the_json_into_a_hash.yml +0 -46
- data/spec/fixtures/vcr_cassettes/poms_fetch/a_broadcast_has_scheduled_events_with_last_with_starts_at.yml +0 -43
- data/spec/fixtures/vcr_cassettes/poms_fetch/a_clip_has_a_title.yml +0 -43
- data/spec/fixtures/vcr_cassettes/poms_fetch/an_aankeiler_has_images.yml +0 -43
- data/spec/fixtures/vcr_cassettes/poms_fetch_broadcasts_for_serie/returns_nil_when_a_broadcast_does_not_exist.yml +0 -42
- data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast/has_a_mid.yml +0 -51
- data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast/has_a_title.yml +0 -51
- data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast/has_scheduled_events_with_last_with_starts_at.yml +0 -51
- data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast_and_key/has_a_broadcast_with_a_mid.yml +0 -51
- data/spec/fixtures/vcr_cassettes/poms_fetch_current_broadcast_and_key/has_a_key.yml +0 -51
- data/spec/fixtures/vcr_cassettes/poms_fetch_descendant_mids/returns_a_list_of_mids.yml +0 -42
- data/spec/fixtures/vcr_cassettes/poms_fetch_descendants_for_serie/builds_a_list_of_broadcasts.yml +0 -102755
- data/spec/fixtures/vcr_cassettes/poms_fetch_group/has_a_child_with_a_media_type.yml +0 -448
- data/spec/fixtures/vcr_cassettes/poms_fetch_group/has_a_child_with_a_title.yml +0 -448
- data/spec/fixtures/vcr_cassettes/poms_fetch_playlist_clips/creates_an_array_of_clips.yml +0 -1051
- data/spec/integration/poms_spec.rb +0 -87
- data/spec/lib/poms/api/auth_spec.rb +0 -34
- data/spec/lib/poms/api/request_spec.rb +0 -30
- data/spec/lib/poms/broadcast_spec.rb +0 -49
- data/spec/lib/poms/builder_spec.rb +0 -53
- data/spec/lib/poms/builderless/broadcast_spec.rb +0 -11
- data/spec/lib/poms/builderless/clip_spec.rb +0 -20
- data/spec/lib/poms/fields_spec.rb +0 -63
- data/spec/lib/poms/merged_series_spec.rb +0 -26
- data/spec/lib/poms/schedule_event_spec.rb +0 -15
- data/spec/lib/poms/timestamp_spec.rb +0 -13
- data/spec/lib/poms/views_spec.rb +0 -38
- data/spec/lib/poms_spec.rb +0 -137
- data/spec/spec_helper.rb +0 -32
data/lib/poms/merged_series.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'poms/api/request'
|
2
|
-
require 'timeout'
|
3
|
-
|
4
|
-
module Poms
|
5
|
-
# Methods for working with the merged series api from NPO.
|
6
|
-
module MergedSeries
|
7
|
-
extend self
|
8
|
-
|
9
|
-
TEST_URL = 'https://rs-test.poms.omroep.nl/v1/api/media/redirects/'.freeze
|
10
|
-
PRODUCTION_URL = 'https://rs.poms.omroep.nl/v1/api/media/redirects/'.freeze
|
11
|
-
|
12
|
-
# Gets the merged serie mids as a hash. Expects a JSON response from
|
13
|
-
# the server with a `map` key.
|
14
|
-
# Throws a PomsError if the call timeouts, has an HTTP error or JSON parse
|
15
|
-
# error.
|
16
|
-
#
|
17
|
-
# @param api_url the API url to query
|
18
|
-
# @return [Hash] a hash with old_mid => new_mid pairs
|
19
|
-
def serie_mids(api_url = PRODUCTION_URL, key = '', secret = '', origin = '')
|
20
|
-
Timeout.timeout(3) do
|
21
|
-
data = Poms::Api::Request.new(api_url, key, secret, origin).call.read
|
22
|
-
JSON.parse(data).fetch('map')
|
23
|
-
end
|
24
|
-
rescue OpenURI::HTTPError, JSON::ParserError, Timeout::Error => e
|
25
|
-
raise Poms::PomsError, e.message
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
data/lib/poms/poms_error.rb
DELETED
data/lib/poms/schedule_event.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
module Poms
|
2
|
-
# POMS wrapper for a single scheduled broadcast.
|
3
|
-
class ScheduleEvent < Poms::Builder::NestedOpenStruct
|
4
|
-
def initialize(hash)
|
5
|
-
@hash = hash
|
6
|
-
set_start_and_end_times
|
7
|
-
super @hash
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
def set_start_and_end_times
|
13
|
-
set_starts_at
|
14
|
-
set_ends_at
|
15
|
-
end
|
16
|
-
|
17
|
-
def set_starts_at
|
18
|
-
@hash[:starts_at] = case @hash[:start]
|
19
|
-
when String, Integer
|
20
|
-
Time.at @hash[:start] / 1000
|
21
|
-
when Time
|
22
|
-
@hash[:start]
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def set_ends_at
|
27
|
-
@hash['ends_at'] = @hash[:starts_at] + duration
|
28
|
-
end
|
29
|
-
|
30
|
-
def duration
|
31
|
-
(@hash[:duration].to_i / 1000).seconds
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
data/lib/poms/season.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'poms/has_ancestors'
|
2
|
-
|
3
|
-
module Poms
|
4
|
-
# Poms wrapper for a season of a serie.
|
5
|
-
class Season < Poms::Builder::NestedOpenStruct
|
6
|
-
include Poms::HasBaseAttributes
|
7
|
-
include Poms::HasAncestors
|
8
|
-
|
9
|
-
def related_group_mids
|
10
|
-
descendant_of.map(&:mid_ref)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
data/lib/poms/series.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'poms/has_base_attributes'
|
2
|
-
|
3
|
-
module Poms
|
4
|
-
# POMS wrapper for a TV Serie.
|
5
|
-
class Series < Poms::Builder::NestedOpenStruct
|
6
|
-
include Poms::HasBaseAttributes
|
7
|
-
|
8
|
-
def related_group_mids
|
9
|
-
Poms.fetch_descendants_for_serie(mid, 'SEASON').map(&:mid)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
data/lib/poms/views.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
require 'poms/connect'
|
2
|
-
|
3
|
-
module Poms
|
4
|
-
# Views constructs the urls that can be used to access specific views in POMS.
|
5
|
-
module Views
|
6
|
-
include Poms::Connect
|
7
|
-
extend self
|
8
|
-
|
9
|
-
BASE_URL = 'http://docs.poms.omroep.nl'.freeze
|
10
|
-
DEFAULT_OPTIONS = { reduce: false, include_docs: true }.freeze
|
11
|
-
VIEW_PATH = '/media/_design/media/_view/'.freeze
|
12
|
-
|
13
|
-
def get(mid)
|
14
|
-
uri = "#{BASE_URL}/media/#{mid}"
|
15
|
-
get_json(uri)
|
16
|
-
end
|
17
|
-
|
18
|
-
def by_group(mid)
|
19
|
-
args = DEFAULT_OPTIONS.merge(key: "\"#{mid}\"")
|
20
|
-
construct_view_url('by-group', args)
|
21
|
-
end
|
22
|
-
|
23
|
-
# Constructs a url using the by-ancestor-and-type view of Poms.
|
24
|
-
def descendants_by_type(mid, type = 'BROADCAST', options = {})
|
25
|
-
args = DEFAULT_OPTIONS.merge(key: "[\"#{mid}\", \"#{type}\"]")
|
26
|
-
.merge(options)
|
27
|
-
construct_view_url('by-ancestor-and-type', args)
|
28
|
-
end
|
29
|
-
|
30
|
-
def broadcasts_by_channel_and_start(channel, start_time = Time.now,
|
31
|
-
end_time = 1.day.ago, limit = 1,
|
32
|
-
descending = true)
|
33
|
-
args = DEFAULT_OPTIONS.merge(
|
34
|
-
startkey: "[\"#{channel}\", #{to_poms_timestamp(start_time)}]",
|
35
|
-
endkey: "[\"#{channel}\", #{to_poms_timestamp(end_time)}]",
|
36
|
-
limit: limit,
|
37
|
-
descending: descending
|
38
|
-
)
|
39
|
-
construct_view_url('broadcasts-by-channel-and-start', args)
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
def construct_view_url(view, args)
|
45
|
-
"#{BASE_URL}#{VIEW_PATH}#{view}?#{args.to_query}"
|
46
|
-
end
|
47
|
-
|
48
|
-
def to_poms_timestamp(timestamp)
|
49
|
-
timestamp.to_i * 1000
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
Fabricator(:poms_broadcast, class_name: :"Poms::Broadcast") do
|
2
|
-
initialize_with do
|
3
|
-
Poms::Builder.process_hash(
|
4
|
-
JSON.parse File.read('spec/fixtures/poms_broadcast.json')
|
5
|
-
)
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
Fabricator(:poms_broadcast_pippi_langkous, class_name: :"Poms::Broadcast") do
|
10
|
-
initialize_with do
|
11
|
-
Poms::Builder.process_hash(
|
12
|
-
JSON.parse File.read('spec/fixtures/poms_broadcast_pippi.json')
|
13
|
-
)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
Fabricator(:poms_broadcast_multiple_schedule_events,
|
18
|
-
class_name: :"Poms::Broadcast") do
|
19
|
-
initialize_with do
|
20
|
-
Poms::Builder.process_hash(
|
21
|
-
JSON.parse(
|
22
|
-
File.read('spec/fixtures/poms_broadcast_multiple_schedule_events.json')
|
23
|
-
)
|
24
|
-
)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
Fabricator(:poms_series, class_name: :"Poms::Series") do
|
29
|
-
initialize_with do
|
30
|
-
Poms::Builder.process_hash(
|
31
|
-
JSON.parse File.read('spec/fixtures/poms_series.json')
|
32
|
-
)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
Fabricator(:zapp_broadcasts, class_name: :array) do
|
37
|
-
initialize_with do
|
38
|
-
hash = JSON.parse File.read('spec/fixtures/poms_zapp.json')
|
39
|
-
array = hash['rows'].take(10).map do |item|
|
40
|
-
Poms::Builder.process_hash item['doc']
|
41
|
-
end
|
42
|
-
array
|
43
|
-
end
|
44
|
-
end
|
@@ -1,318 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"_id": "KRO_1614405",
|
3
|
-
"_rev": "60-77ca9ba680a9bf9f5215137163eb3a14",
|
4
|
-
"avAttributes": {
|
5
|
-
"audioAttributes": {
|
6
|
-
"numberOfChannels": 2
|
7
|
-
},
|
8
|
-
"videoAttributes": {
|
9
|
-
"aspectRatio": "16:9",
|
10
|
-
"color": "BLACK_AND_WHITE_AND_COLOR"
|
11
|
-
}
|
12
|
-
},
|
13
|
-
"avType": "VIDEO",
|
14
|
-
"broadcasters": [
|
15
|
-
"KRO",
|
16
|
-
"Zapp"
|
17
|
-
],
|
18
|
-
"creationDate": 1367962602891,
|
19
|
-
"credits": [],
|
20
|
-
"crids": [
|
21
|
-
"crid://tmp.program.omroep.nl/15641304"
|
22
|
-
],
|
23
|
-
"descendantOf": [
|
24
|
-
{
|
25
|
-
"midRef": "KRO_1521173",
|
26
|
-
"type": "SEASON",
|
27
|
-
"urnRef": "urn:vpro:media:group:15084154"
|
28
|
-
},
|
29
|
-
{
|
30
|
-
"midRef": "POMS_S_KRO_059857",
|
31
|
-
"type": "SERIES",
|
32
|
-
"urnRef": "urn:vpro:media:group:5346131"
|
33
|
-
}
|
34
|
-
],
|
35
|
-
"descriptions": [
|
36
|
-
{
|
37
|
-
"owner": "BROADCASTER",
|
38
|
-
"type": "MAIN",
|
39
|
-
"value": "Li biedt Barry een baantje aan bij de uitdragerij en vraagt zich meteen af of dat wel zo slim was. Timon en Joep zien de criminele organisatie de Rijland Angels. Timon wil naar hun loods, maar is dat wel een goed idee?"
|
40
|
-
},
|
41
|
-
{
|
42
|
-
"owner": "MIS",
|
43
|
-
"type": "MAIN",
|
44
|
-
"value": "Dramaserie voor de jeugd over liefde, kattenkwaad en avontuur."
|
45
|
-
},
|
46
|
-
{
|
47
|
-
"owner": "CERES",
|
48
|
-
"type": "MAIN",
|
49
|
-
"value": "Li biedt Barry een baantje aan bij de uitdragerij en vraagt zich meteen af of dat wel zo slim was. Timon en Joep zien de criminele organisatie de Rijland Angels. Timon wil naar hun loods, maar is dat wel een goed idee?\n\t "
|
50
|
-
},
|
51
|
-
{
|
52
|
-
"owner": "WHATS_ON",
|
53
|
-
"type": "MAIN",
|
54
|
-
"value": "Dramaserie voor de jeugd over liefde, kattenkwaad en avontuur."
|
55
|
-
},
|
56
|
-
{
|
57
|
-
"owner": "CERES",
|
58
|
-
"type": "SHORT",
|
59
|
-
"value": "Li biedt Barry een baantje aan bij de uitdragerij en vraagt zich meteen af of dat wel zo slim was. Timon en Joep zien de criminele organisatie de Rijland Angels. Timon wil naar hun loods, maar is dat wel een goed idee?\n\t "
|
60
|
-
}
|
61
|
-
],
|
62
|
-
"duration": 1080000,
|
63
|
-
"embeddable": true,
|
64
|
-
"episodeOf": [
|
65
|
-
{
|
66
|
-
"added": 1369773120772,
|
67
|
-
"highlighted": false,
|
68
|
-
"index": 64,
|
69
|
-
"midRef": "KRO_1521173",
|
70
|
-
"type": "SEASON",
|
71
|
-
"urnRef": "urn:vpro:media:group:15084154"
|
72
|
-
}
|
73
|
-
],
|
74
|
-
"images": [
|
75
|
-
{
|
76
|
-
"creationDate": 1368815299665,
|
77
|
-
"description": "VRijland",
|
78
|
-
"highlighted": false,
|
79
|
-
"imageUri": "urn:vpro:image:184169",
|
80
|
-
"lastModified": 1368815299705,
|
81
|
-
"owner": "BROADCASTER",
|
82
|
-
"title": "VRijland",
|
83
|
-
"type": "PICTURE",
|
84
|
-
"urn": "urn:vpro:media:image:25765753",
|
85
|
-
"workflow": "PUBLISHED"
|
86
|
-
},
|
87
|
-
{
|
88
|
-
"creationDate": 1369760424862,
|
89
|
-
"description": "Li biedt Barry een baantje aan bij de uitdragerij en vraagt zich meteen af of dat wel zo slim was. Timon en Joep zien de criminele organisatie de Rijland Angels. Timon wil naar hun loods, maar is dat wel een goed idee?\n\t ",
|
90
|
-
"highlighted": false,
|
91
|
-
"imageUri": "urn:vpro:image:187003",
|
92
|
-
"lastModified": 1369760431467,
|
93
|
-
"owner": "NEBO",
|
94
|
-
"title": "VRijland",
|
95
|
-
"type": "STILL",
|
96
|
-
"urn": "urn:vpro:media:image:26079440",
|
97
|
-
"workflow": "PUBLISHED"
|
98
|
-
},
|
99
|
-
{
|
100
|
-
"creationDate": 1369760428232,
|
101
|
-
"description": "Li biedt Barry een baantje aan bij de uitdragerij en vraagt zich meteen af of dat wel zo slim was. Timon en Joep zien de criminele organisatie de Rijland Angels. Timon wil naar hun loods, maar is dat wel een goed idee?\n\t ",
|
102
|
-
"highlighted": false,
|
103
|
-
"imageUri": "urn:vpro:image:187004",
|
104
|
-
"lastModified": 1369760431467,
|
105
|
-
"owner": "NEBO",
|
106
|
-
"title": "VRijland",
|
107
|
-
"type": "STILL",
|
108
|
-
"urn": "urn:vpro:media:image:26079441",
|
109
|
-
"workflow": "PUBLISHED"
|
110
|
-
},
|
111
|
-
{
|
112
|
-
"creationDate": 1369760431388,
|
113
|
-
"description": "Li biedt Barry een baantje aan bij de uitdragerij en vraagt zich meteen af of dat wel zo slim was. Timon en Joep zien de criminele organisatie de Rijland Angels. Timon wil naar hun loods, maar is dat wel een goed idee?\n\t ",
|
114
|
-
"highlighted": false,
|
115
|
-
"imageUri": "urn:vpro:image:187005",
|
116
|
-
"lastModified": 1369760431468,
|
117
|
-
"owner": "NEBO",
|
118
|
-
"title": "VRijland",
|
119
|
-
"type": "STILL",
|
120
|
-
"urn": "urn:vpro:media:image:26079442",
|
121
|
-
"workflow": "PUBLISHED"
|
122
|
-
}
|
123
|
-
],
|
124
|
-
"lastModified": 1369859493926,
|
125
|
-
"locations": [
|
126
|
-
{
|
127
|
-
"avAttributes": {
|
128
|
-
"avFileFormat": "HASP"
|
129
|
-
},
|
130
|
-
"creationDate": 1369760183309,
|
131
|
-
"lastModified": 1369760183436,
|
132
|
-
"owner": "CERES",
|
133
|
-
"programUrl": "odip+http://odi.omroep.nl/video/adaptive/KRO_1614405",
|
134
|
-
"type": "INTERNAL",
|
135
|
-
"publishStop": 1369758599000,
|
136
|
-
"urn": "urn:vpro:media:location:26079425",
|
137
|
-
"workflow": "PUBLISHED"
|
138
|
-
},
|
139
|
-
{
|
140
|
-
"avAttributes": {
|
141
|
-
"avFileFormat": "MP4",
|
142
|
-
"bitrate": 204800,
|
143
|
-
"videoAttributes": {
|
144
|
-
"aspectRatio": "16:9",
|
145
|
-
"videoCoding": "WM"
|
146
|
-
}
|
147
|
-
},
|
148
|
-
"creationDate": 1369765721479,
|
149
|
-
"lastModified": 1369765721611,
|
150
|
-
"owner": "NEBO",
|
151
|
-
"programUrl": "odi+http://odi.omroep.nl/video/h264_sb/KRO_1614405",
|
152
|
-
"publishStart": 1369758589000,
|
153
|
-
"type": "EXTERNAL",
|
154
|
-
"urn": "urn:vpro:media:location:26079907",
|
155
|
-
"workflow": "PUBLISHED"
|
156
|
-
},
|
157
|
-
{
|
158
|
-
"avAttributes": {
|
159
|
-
"avFileFormat": "MP4",
|
160
|
-
"bitrate": 512000,
|
161
|
-
"videoAttributes": {
|
162
|
-
"aspectRatio": "16:9",
|
163
|
-
"videoCoding": "WM"
|
164
|
-
}
|
165
|
-
},
|
166
|
-
"creationDate": 1369765721480,
|
167
|
-
"lastModified": 1369765721613,
|
168
|
-
"owner": "NEBO",
|
169
|
-
"programUrl": "odi+http://odi.omroep.nl/video/h264_bb/KRO_1614405",
|
170
|
-
"publishStart": 1369758589000,
|
171
|
-
"type": "EXTERNAL",
|
172
|
-
"urn": "urn:vpro:media:location:26079910",
|
173
|
-
"workflow": "PUBLISHED"
|
174
|
-
},
|
175
|
-
{
|
176
|
-
"avAttributes": {
|
177
|
-
"avFileFormat": "MP4",
|
178
|
-
"bitrate": 1024000,
|
179
|
-
"videoAttributes": {
|
180
|
-
"aspectRatio": "16:9",
|
181
|
-
"videoCoding": "WM"
|
182
|
-
}
|
183
|
-
},
|
184
|
-
"creationDate": 1369765721480,
|
185
|
-
"lastModified": 1369765721614,
|
186
|
-
"owner": "NEBO",
|
187
|
-
"programUrl": "odi+http://odi.omroep.nl/video/h264_std/KRO_1614405",
|
188
|
-
"publishStart": 1369758589000,
|
189
|
-
"type": "EXTERNAL",
|
190
|
-
"urn": "urn:vpro:media:location:26079913",
|
191
|
-
"workflow": "PUBLISHED"
|
192
|
-
},
|
193
|
-
{
|
194
|
-
"avAttributes": {
|
195
|
-
"avFileFormat": "WVC1",
|
196
|
-
"bitrate": 1024000,
|
197
|
-
"videoAttributes": {
|
198
|
-
"aspectRatio": "16:9",
|
199
|
-
"videoCoding": "WM"
|
200
|
-
}
|
201
|
-
},
|
202
|
-
"creationDate": 1369765721480,
|
203
|
-
"lastModified": 1369765721615,
|
204
|
-
"owner": "NEBO",
|
205
|
-
"programUrl": "odi+http://odi.omroep.nl/video/wvc1_std/KRO_1614405",
|
206
|
-
"publishStart": 1369758589000,
|
207
|
-
"type": "EXTERNAL",
|
208
|
-
"urn": "urn:vpro:media:location:26079916",
|
209
|
-
"workflow": "PUBLISHED"
|
210
|
-
},
|
211
|
-
{
|
212
|
-
"avAttributes": {
|
213
|
-
"avFileFormat": "WM",
|
214
|
-
"bitrate": 204800,
|
215
|
-
"videoAttributes": {
|
216
|
-
"aspectRatio": "16:9",
|
217
|
-
"videoCoding": "WM"
|
218
|
-
}
|
219
|
-
},
|
220
|
-
"creationDate": 1369765721479,
|
221
|
-
"lastModified": 1369765721617,
|
222
|
-
"owner": "NEBO",
|
223
|
-
"programUrl": "odi+http://odi.omroep.nl/video/wmv_sb/KRO_1614405",
|
224
|
-
"publishStart": 1369758589000,
|
225
|
-
"type": "EXTERNAL",
|
226
|
-
"urn": "urn:vpro:media:location:26079919",
|
227
|
-
"workflow": "PUBLISHED"
|
228
|
-
},
|
229
|
-
{
|
230
|
-
"avAttributes": {
|
231
|
-
"avFileFormat": "WM",
|
232
|
-
"bitrate": 512000,
|
233
|
-
"videoAttributes": {
|
234
|
-
"aspectRatio": "16:9",
|
235
|
-
"videoCoding": "WM"
|
236
|
-
}
|
237
|
-
},
|
238
|
-
"creationDate": 1369765721479,
|
239
|
-
"lastModified": 1369765721618,
|
240
|
-
"owner": "NEBO",
|
241
|
-
"programUrl": "odi+http://odi.omroep.nl/video/wmv_bb/KRO_1614405",
|
242
|
-
"publishStart": 1369758589000,
|
243
|
-
"type": "EXTERNAL",
|
244
|
-
"urn": "urn:vpro:media:location:26079922",
|
245
|
-
"workflow": "PUBLISHED"
|
246
|
-
}
|
247
|
-
],
|
248
|
-
"mid": "KRO_1614405",
|
249
|
-
"poProgID": "KRO_1614405",
|
250
|
-
"poSeriesID": "KRO_1521173",
|
251
|
-
"predictions": [
|
252
|
-
{
|
253
|
-
"state": "REALIZED",
|
254
|
-
"publishStart": 1434172368000,
|
255
|
-
"publishStop": 1435381968000,
|
256
|
-
"platform": "INTERNETVOD"
|
257
|
-
},
|
258
|
-
{
|
259
|
-
"state": "REALIZED",
|
260
|
-
"publishStart": 1434172368000,
|
261
|
-
"publishStop": 1435381968000,
|
262
|
-
"platform": "TVVOD"
|
263
|
-
}
|
264
|
-
],
|
265
|
-
"scheduleEvents": [
|
266
|
-
{
|
267
|
-
"channel": "NED3",
|
268
|
-
"duration": 1049000,
|
269
|
-
"midRef": "KRO_1614405",
|
270
|
-
"poProgID": "KRO_1614405",
|
271
|
-
"poSeriesID": "KRO_1521173",
|
272
|
-
"start": 1369757335000,
|
273
|
-
"urnRef": "urn:vpro:media:program:25215266"
|
274
|
-
}
|
275
|
-
],
|
276
|
-
"segments": [],
|
277
|
-
"sortDate": 1369757335000,
|
278
|
-
"titles": [
|
279
|
-
{
|
280
|
-
"owner": "BROADCASTER",
|
281
|
-
"type": "MAIN",
|
282
|
-
"value": "VRijland"
|
283
|
-
},
|
284
|
-
{
|
285
|
-
"owner": "NEBO",
|
286
|
-
"type": "MAIN",
|
287
|
-
"value": "VRijland"
|
288
|
-
},
|
289
|
-
{
|
290
|
-
"owner": "MIS",
|
291
|
-
"type": "MAIN",
|
292
|
-
"value": "VRijland"
|
293
|
-
},
|
294
|
-
{
|
295
|
-
"owner": "CERES",
|
296
|
-
"type": "MAIN",
|
297
|
-
"value": "VRijland"
|
298
|
-
},
|
299
|
-
{
|
300
|
-
"owner": "WHATS_ON",
|
301
|
-
"type": "MAIN",
|
302
|
-
"value": "VRijland"
|
303
|
-
},
|
304
|
-
{
|
305
|
-
"owner": "BROADCASTER",
|
306
|
-
"type": "SUB",
|
307
|
-
"value": "VRijland afl.64 & 65 (herhaling)"
|
308
|
-
},
|
309
|
-
{
|
310
|
-
"owner": "CERES",
|
311
|
-
"type": "EPISODE",
|
312
|
-
"value": "VRijland afl.64 & 65 (herhaling)"
|
313
|
-
}
|
314
|
-
],
|
315
|
-
"type": "BROADCAST",
|
316
|
-
"urn": "urn:vpro:media:program:25215266",
|
317
|
-
"workflow": "PUBLISHED"
|
318
|
-
}
|