goprocam 1.0.0 → 1.1.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
  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: