awslive-inputlooper 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a11c3375ccc5456235263b78f407cf2d1c533775dacb8f8bb60a5cfadc2075a4
4
- data.tar.gz: e1f7cf9a62c6726352ae5900e0f1bb54176a688067855b932d9ac8d10d2d0ea7
3
+ metadata.gz: 34c42835fefb68681c4cb5c5a30bcf86b2f07a69359d17f25d7ef33f0fbb79e1
4
+ data.tar.gz: 64d6ea47aa196236dd23a0bbe6142502e78dce9c3e60289d1008cb3ed2e520c3
5
5
  SHA512:
6
- metadata.gz: ae17691c433f2e5ef37632dd0c0f4cab629b5fd2bf7574579138c6a0dd9846a9eee1012c8f9debf383b54da5ed698641b31023f94e740e27f222e0e43bb0a631
7
- data.tar.gz: a7c67fdaf217a8ba8be62c62a8b7419882ea9d53eb5c6b185bd4c4ea24a498f97c8b883412280b8ec916e710a7b23c799cfe50bce568dc753858378b6b94ef42
6
+ metadata.gz: 0a73e00dc2f4b7c8edd491e9a7206ebb2b257eea96568b67cfbb3e66964443bb7a1b9282d3946cfc3dd29735ac5256669def897ec11cc359034e28e1aece6cf1
7
+ data.tar.gz: a1faf5d6fdd71591166fbac43a7aa7114134ad07f6cc50a801d10ca0b5165e38bfc8e18774b96bb83c9307598bec3aa0267b9f8cd51ac18999a606ca4feac009
@@ -305,5 +305,8 @@ module Awslive
305
305
  @scheduler.create(@channel_id, FIXED, UNPAUSE, { :channel_class => "#{get_channel_class}" })
306
306
  end
307
307
 
308
+ def delete_all_schedules
309
+ @scheduler.delete_all(@channel_id)
310
+ end
308
311
  end
309
312
  end
@@ -0,0 +1,53 @@
1
+ module Awslive
2
+ class AdMarkerScheduledAction
3
+ FOLLOW_HASH = {
4
+ action_name: "f1",
5
+ schedule_action_start_settings: {
6
+ follow_mode_schedule_action_start_settings: {
7
+ reference_action_name: "imm",
8
+ follow_point: "END"
9
+ }
10
+ },
11
+ schedule_action_settings: {
12
+ :scte_35_splice_insert_settings => {
13
+ :duration => 1,
14
+ :splice_event_id => 1
15
+ }
16
+ }
17
+ }
18
+
19
+ IMMEDIATE_HASH = {
20
+ :action_name => "action_name",
21
+ :schedule_action_start_settings => {
22
+ :immediate_mode_schedule_action_start_settings => {}
23
+ },
24
+ :schedule_action_settings => {
25
+ :scte_35_splice_insert_settings => {
26
+ :duration => 1,
27
+ :splice_event_id => 1
28
+ }
29
+ }
30
+ }
31
+
32
+ def get_immediate_schedule_action( ad_duration )
33
+ action_hash = IMMEDIATE_HASH.clone
34
+ action_hash[:action_name] = "#{get_action_id}-ad"
35
+ action_hash[:schedule_action_settings][:scte_35_splice_insert_settings][:duration] = ad_duration * 90000
36
+ action_hash[:schedule_action_settings][:scte_35_splice_insert_settings][:splice_event_id] = get_action_id
37
+ action_hash
38
+ end
39
+
40
+ def get_follow_schedule_action(follow_input, ad_duration)
41
+ action_hash = FOLLOW_HASH.clone
42
+ action_hash[:action_name] = "#{get_action_id}-ad"
43
+ action_hash[:schedule_action_start_settings][:follow_mode_schedule_action_start_settings][:reference_action_name] = "#{follow_input}"
44
+ action_hash[:schedule_action_settings][:scte_35_splice_insert_settings][:duration] = ad_duration * 90000
45
+ action_hash[:schedule_action_settings][:scte_35_splice_insert_settings][:splice_event_id] = get_action_id
46
+ action_hash
47
+ end
48
+
49
+ def get_action_id
50
+ Time.now.to_i
51
+ end
52
+ end
53
+ end
@@ -2,6 +2,9 @@ require_relative '../awslive-common/action_type'
2
2
  require_relative '../awslive-common/start_type'
3
3
  require_relative 'input_switch_schedule_action'
4
4
  require_relative 'pause_schedule_action'
5
+ require_relative 'ad_marker_scheduled_action'
6
+ require 'uri'
7
+ require 'cgi'
5
8
 
6
9
  require 'aws-sdk-medialive'
7
10
 
@@ -19,6 +22,7 @@ module Awslive
19
22
  end
20
23
  @input_switch_schedule_action = Awslive::InputSwitchScheduleAction.new
21
24
  @pause_schedule_action = Awslive::PauseScheduleAction.new
25
+ @ad_marker_schedule_action = Awslive::AdMarkerScheduledAction.new
22
26
  end
23
27
 
24
28
  def create_schedule(channel_id, scheduled_actions )
@@ -60,13 +64,39 @@ module Awslive
60
64
  follow_schedule
61
65
  end
62
66
 
67
+ def get_type_duration(url)
68
+ type = nil
69
+ duration = nil
70
+ if !url.nil?
71
+ uri = URI.parse(url) rescue nil
72
+ params = CGI.parse(uri.query) unless uri.nil?
73
+ if !params.nil?
74
+ type = params["type"].first rescue nil
75
+ duration = params["duration"].first rescue nil
76
+ end
77
+ end
78
+ return type, duration
79
+ end
80
+
63
81
  def create(channel_id, start_type, action_type, data)
64
82
  scheduled_action = []
83
+ ad_scheduled_action = []
84
+ create_response = []
85
+
65
86
  if action_type == INPUT_SWITCH
66
87
  if start_type == IMMEDIATE
67
88
  scheduled_action << @input_switch_schedule_action.get_immediate_schedule_action(data[:input_ref_name], data[:url_path])
89
+ type, duration = get_type_duration(data[:url_path])
90
+ if !type.nil? && !duration.nil? && type == "ad_marker"
91
+ ad_scheduled_action << @ad_marker_schedule_action.get_immediate_schedule_action(duration)
92
+ end
68
93
  elsif start_type == FOLLOW
69
94
  scheduled_action << @input_switch_schedule_action.get_follow_schedule_action(data[:follow_input], data[:trigger_input], data[:url_path])
95
+ type, duration = get_type_duration(data[:url_path])
96
+ if !type.nil? && !duration.nil? && type == "ad_marker"
97
+ puts "Duration => #{duration}"
98
+ ad_scheduled_action << @ad_marker_schedule_action.get_follow_schedule_action(data[:follow_input], duration.to_i)
99
+ end
70
100
  end
71
101
  elsif action_type == PAUSE
72
102
  if start_type == FIXED
@@ -77,9 +107,16 @@ module Awslive
77
107
  scheduled_action << @pause_schedule_action.get_unpause_schedule_action
78
108
  end
79
109
  end
110
+
111
+
80
112
  unless scheduled_action.empty?
81
- create_response = create_schedule(channel_id, scheduled_action)
113
+ create_response << create_schedule(channel_id, scheduled_action)
114
+ unless ad_scheduled_action.empty?
115
+ puts "Ad Schedule Action #{ad_scheduled_action}"
116
+ create_response << create_schedule(channel_id, ad_scheduled_action) rescue nil
117
+ end
82
118
  end
119
+
83
120
  create_response
84
121
  end
85
122
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awslive-inputlooper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maheshwaran G
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-24 00:00:00.000000000 Z
11
+ date: 2020-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -83,6 +83,7 @@ files:
83
83
  - lib/awslive-common/start_type.rb
84
84
  - lib/awslive-inputlooper.rb
85
85
  - lib/awslive-inputlooper/input_looper.rb
86
+ - lib/awslive-scheduler/ad_marker_scheduled_action.rb
86
87
  - lib/awslive-scheduler/input_switch_schedule_action.rb
87
88
  - lib/awslive-scheduler/pause_schedule_action.rb
88
89
  - lib/awslive-scheduler/schedule_action.rb