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 +4 -4
- data/lib/camerarules.rb +6 -0
- data/lib/{GoPro.rb → goprocam.rb} +164 -11
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55034adeac02033761d75bbd98606c553d57c3ac
|
4
|
+
data.tar.gz: b7a3aac10ee19c906a9f4335a6cd73a5b2fc0fcd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 074a226569a2c26c22f294a27ca9d076454719c303805dd89087eb5d7ccbce9b763b3b9ab983a223c497a77a8a40a085a64c78643a2abd066c2e04c425eea2fd
|
7
|
+
data.tar.gz: d74c571f337833169107765ad8e7fcb7b7d62a2640a2c3a10d05cd7cade36914c3c54e3dd289a6e32400269c6b4f5413db0ac995d7f2487edefe3b06a694784b
|
data/lib/camerarules.rb
ADDED
@@ -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 "
|
35
|
-
puts "
|
36
|
-
puts "
|
37
|
-
puts "
|
38
|
-
puts "
|
39
|
-
puts "
|
40
|
-
puts "
|
41
|
-
puts "
|
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.
|
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-
|
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/
|
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:
|