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 +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:
|