goprocam 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 547c5d03c5c2d0e6fcdbabf4fd6a58c925fe29fd
4
- data.tar.gz: 213a1c890fcb87ed2a3048f6c6696b6e77c1344b
3
+ metadata.gz: 55034adeac02033761d75bbd98606c553d57c3ac
4
+ data.tar.gz: b7a3aac10ee19c906a9f4335a6cd73a5b2fc0fcd
5
5
  SHA512:
6
- metadata.gz: d3ca736b50f63e0c79288f0f083661041c2652892f7d6b718779d8c634d70f37460c512a7ee901c97434096d1d9ef20f57f973d07a4a08f608561c1a98662584
7
- data.tar.gz: 5cb851b3152c892502a7396fb1ecffad49d56a1a3090f4d60ec8b8a625cd4fafeddd473bc22046b11fb6deb0d02ef2e8592c8d520235e67beb204a3a678831cb
6
+ metadata.gz: 074a226569a2c26c22f294a27ca9d076454719c303805dd89087eb5d7ccbce9b763b3b9ab983a223c497a77a8a40a085a64c78643a2abd066c2e04c425eea2fd
7
+ data.tar.gz: d74c571f337833169107765ad8e7fcb7b7d62a2640a2c3a10d05cd7cade36914c3c54e3dd289a6e32400269c6b4f5413db0ac995d7f2487edefe3b06a694784b
@@ -0,0 +1,6 @@
1
+ class HX #HERO4 Session
2
+ camModes=Array[["Video", "Looping"],["Photo"],["Burst","TimeLapse"]]
3
+ camValues=Array[["0","3"],["0"],["0","1"]]
4
+ puts camModes.at(0).at(1)
5
+ puts camValues.at(0).at(1)
6
+ end
@@ -1,11 +1,18 @@
1
1
  require 'open-uri'
2
2
  require 'socket'
3
3
  require 'json'
4
+ require_relative 'constants'
4
5
  GPIP = "10.5.5.9"
5
6
  GOPROCONTROL = "http://10.5.5.9/gp/gpControl/"
6
7
  GOPROMEDIA = "http://10.5.5.9/gp/gpMediaList/"
7
8
  class Camera
8
9
  def initialize()
10
+ #check if camera is ON:
11
+ power_on()
12
+ #check if camera status is connected
13
+ while status(Status::Status, Status::STATUS::IsConnected) == 0
14
+ status(Status::Status, Status::STATUS::IsConnected)
15
+ end
9
16
  end
10
17
  def gpControlCommand(param,value)
11
18
  response = open(GOPROCONTROL + 'setting/' + param + '/' + value).read
@@ -16,7 +23,7 @@ class Camera
16
23
  response = open(GOPROCONTROL + 'status').read
17
24
  puts response
18
25
  end
19
-
26
+
20
27
  def status(value, param)
21
28
  response = open(GOPROCONTROL + 'status').read
22
29
  parsed_resp = JSON.parse(response)
@@ -27,18 +34,140 @@ class Camera
27
34
  parsed_resp = JSON.parse(response)
28
35
  return parsed_resp["info"][option]
29
36
  end
37
+ def parse_value(param,value)
38
+ puts case param
39
+ when "mode"
40
+ puts case value
41
+ when 0
42
+ return "Video"
43
+ when 1
44
+ return "Photo"
45
+ when 2
46
+ return "Multi-Shot"
47
+ end
48
+ when "sub_mode"
49
+ puts case status(Status::Status, Status::STATUS::Mode)
50
+ when 0
51
+ puts case value
52
+ when 0
53
+ return "Video"
54
+ when 1
55
+ return "TimeLapse Video"
56
+ when 2
57
+ return "Video+Photo"
58
+ when 3
59
+ return "Looping"
60
+ end
61
+ when 1
62
+ puts case value
63
+ when 0
64
+ return "Single Pic"
65
+ when 1
66
+ return "Burst"
67
+ when 2
68
+ return "NightPhoto"
69
+ end
70
+ when 2
71
+ puts case value
72
+ when 0
73
+ return "Burst"
74
+ when 1
75
+ return "TimeLapse"
76
+ when 2
77
+ return "Night lapse"
78
+ end
79
+ end
80
+ when "recording"
81
+ puts case value
82
+ when 0
83
+ return "Not recording - standby"
84
+ when 1
85
+ return "RECORDING!"
86
+ end
87
+ when "battery"
88
+ puts case value
89
+ when 0
90
+ return "Nearly Empty"
91
+ when 1
92
+ return "LOW"
93
+ when 2
94
+ return "Halfway"
95
+ when 3
96
+ return "Full"
97
+ when 4
98
+ return "Charging"
99
+ end
100
+ when "video_left"
101
+ return Time.at(value).utc.strftime("%H:%M:%S")
102
+ when "rem_space"
103
+ return (value.to_f/1000000).round(2).to_s
104
+ when "video_res"
105
+ puts case value
106
+ when 1
107
+ return "4k"
108
+ when 2
109
+ return "4kSV"
110
+ when 4
111
+ return "2k"
112
+ when 5
113
+ return "2kSV"
114
+ when 6
115
+ return "2k4by3"
116
+ when 7
117
+ return "1440p"
118
+ when 8
119
+ return "1080pSV"
120
+ when 9
121
+ return "1080p"
122
+ when 10
123
+ return "960p"
124
+ when 11
125
+ return "720pSV"
126
+ when 12
127
+ return "720p"
128
+ when 13
129
+ return "480p"
130
+ end
131
+ when "video_fr"
132
+ puts case value
133
+ when 0
134
+ return "240"
135
+ when 1
136
+ return "120"
137
+ when 2
138
+ return "100"
139
+ when 5
140
+ return "60"
141
+ when 6
142
+ return "50"
143
+ when 7
144
+ return "48"
145
+ when 8
146
+ return "30"
147
+ when 9
148
+ return "25"
149
+ when 10
150
+ return "24"
151
+ end
152
+ end
153
+ end
30
154
  def overview()
31
155
  puts "camera overview"
32
- puts "current mode: ", status(Status::Status, Status::STATUS::Mode)
33
- puts "current submode: ", status(Status::Status, Status::STATUS::SubMode)
34
- puts "pictures taken: ", status(Status::Status, Status::STATUS::PhotosTaken)
35
- puts "videos taken: ", status(Status::Status, Status::STATUS::VideosTaken)
36
- puts "videos left: ", status(Status::Status, Status::STATUS::RemVideoTime)
37
- puts "pictures left: ", status(Status::Status, Status::STATUS::RemPhotos)
38
- puts "camera SSID: ", status(Status::Status, Status::STATUS::CamName)
39
- puts "Is Recording:", status(Status::Status, Status::STATUS::IsRecording)
40
- puts "camera model: ", info_camera(Camera::Name)
41
- puts "firmware version: ", info_camera(Camera::Firmware)
156
+ puts "current mode: ", " " + parse_value("mode",status(Status::Status, Status::STATUS::Mode))
157
+ puts "current submode: ", " " + parse_value("sub_mode",status(Status::Status, Status::STATUS::SubMode))
158
+ puts "current video resolution: ", " " + parse_value("video_res",status(Status::Settings, Video::RESOLUTION))
159
+ puts "current video framerate: ", " " + parse_value("video_fr",status(Status::Settings, Video::FRAME_RATE))
160
+ puts "pictures taken: ", " " + status(Status::Status, Status::STATUS::PhotosTaken).to_s
161
+ puts "videos taken: ", " " + status(Status::Status, Status::STATUS::VideosTaken).to_s
162
+ puts "videos left: ", " " + parse_value("video_left",status(Status::Status, Status::STATUS::RemVideoTime))
163
+ puts "pictures left: ", " " + status(Status::Status, Status::STATUS::RemPhotos).to_s
164
+ puts "battery left: ", " " + parse_value("battery",status(Status::Status, Status::STATUS::BatteryLevel))
165
+ puts "space left in sd (GBs): ", " " + parse_value("rem_space",status(Status::Status, Status::STATUS::RemainingSpace))
166
+ puts "camera SSID: ", " " + status(Status::Status, Status::STATUS::CamName).to_s
167
+ puts "Is Recording:", " " + parse_value("recording",status(Status::Status, Status::STATUS::IsRecording))
168
+ puts "Clients connected: ", " " + status(Status::Status, Status::STATUS::IsConnected).to_s
169
+ puts "camera model: ", " " + info_camera(Camera::Name)
170
+ puts "firmware version: ", " " + info_camera(Camera::Firmware)
42
171
  end
43
172
  def shutter(value)
44
173
  response = open(GOPROCONTROL + 'command/shutter?p=' + value).read
@@ -150,6 +279,30 @@ class Camera
150
279
  end
151
280
  return "http://10.5.5.9:8080/videos/DCIM/" + folder + "/" + file
152
281
  end
282
+ def get_media_info(option)
283
+ folder=""
284
+ file=""
285
+ size=""
286
+ response = open(GOPROMEDIA).read
287
+ parsed_resp = JSON.parse(response)
288
+ parsed_resp['media'].each do |child|
289
+ folder = child['d']
290
+ end
291
+ parsed_resp['media'].each do |child|
292
+ child['fs'].each do |child|
293
+ file = child['n']
294
+ size = child['s']
295
+ end
296
+ end
297
+ puts case option
298
+ when "folder"
299
+ return folder
300
+ when "file"
301
+ return file
302
+ when "size"
303
+ return size
304
+ end
305
+ end
153
306
  def dl_media()
154
307
  folder=""
155
308
  file=""
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: goprocam
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konrad Iturbe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-16 00:00:00.000000000 Z
11
+ date: 2017-02-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Control and view status from your GoPro HERO4/HERO5 camera via WiFi.
14
14
  email: mail@chernowii.com
@@ -16,8 +16,9 @@ executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
- - lib/GoPro.rb
19
+ - lib/camerarules.rb
20
20
  - lib/constants.rb
21
+ - lib/goprocam.rb
21
22
  homepage: http://rubygems.org/gems/goprocam
22
23
  licenses:
23
24
  - MIT
@@ -43,3 +44,4 @@ signing_key:
43
44
  specification_version: 4
44
45
  summary: Interface for your WiFi GoPro camera.
45
46
  test_files: []
47
+ has_rdoc: