tlapse 0.2.1 → 0.3.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: 939a7540b5657bfd54ef7b114791b0565621fe49
4
- data.tar.gz: b15cef8e776be3792d14bbff5bf3711b60d50e22
3
+ metadata.gz: 3169c4dc184abd9d4dfd5d492478b634460f51ca
4
+ data.tar.gz: 8ff06741df599640188d5f8af41162f807ef3732
5
5
  SHA512:
6
- metadata.gz: 9d2f7264d7fb1437b4b6afcb739a1088c84cd4497477f3d371a2975b4a847b4eb8a41b9791edbb9dafa3d2f327f9d7737144a51399b591f677929b55c7d051c5
7
- data.tar.gz: 9f491fa7c62c2959fd0b57778e36cd350348b559401d874f276760bded4f4729c53b86bc8acdeb661944ee5d7dec72b093bad35a108785088f774c31fda9022b
6
+ metadata.gz: fd493e8a61767f1469b5c7f1616000e7168dc31d79c5d3dc4825aadf33ea14f66a6dc20ca00648ffe8028534497773faf20f220562fec723650f6a988520250b
7
+ data.tar.gz: b050698bcb9652b2eb529e59a916e16da929a7772a93ed5ca99185244912c646b115f7a55575b00f5f1c49e6c59284efd131fec63bf62eba344c6a680400ec34
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
- --format documentation
1
+ --format progress
2
2
  --color
data/bin/tlapse CHANGED
@@ -19,7 +19,7 @@ command :doctor do |c|
19
19
  end
20
20
 
21
21
  desc "Capture a single photo, saving it to the current directory"
22
- command :single do |c|
22
+ command :capture do |c|
23
23
  c.action do |global_options, options, args|
24
24
  capture_single
25
25
  end
@@ -27,7 +27,6 @@ end
27
27
 
28
28
  desc "Start a drb server via which photo capturing may be performed remotely"
29
29
  command :serve do |c|
30
-
31
30
  c.flag :h, :host,
32
31
  desc: "The hostname on which the server is run",
33
32
  default_value: `hostname`.strip,
@@ -1,7 +1,73 @@
1
+ require "active_support/core_ext/numeric/time.rb"
2
+
1
3
  module Tlapse
2
4
  module Capture
3
- def capture_single
5
+ def self.capture_single(format: nil)
6
+ puts "The format key is not yet supported" if format
7
+
4
8
  `gphoto2 --capture-image-and-download`
5
9
  end
10
+
11
+ ##
12
+ # Calculate how many captures are needed given a duration of capture
13
+ # time and a desired interval between captures.
14
+ #
15
+ # @example
16
+ # captures_needed duration: 5.minutes, interval: 30.seconds # => 10
17
+ #
18
+ # Specify either `start_time` and `end_time` or `duration`. If both
19
+ # are given, `duration` is preferred.
20
+ #
21
+ # @param start_time: [Time] when to start capturing
22
+ # @param end_time: [Time] when to end capturing
23
+ # @param duration: [Duration] duration over which images are captured.
24
+ # If specifying, do not also specify `end_time
25
+ # @param interval: [Duration] time between each capture
26
+ # @return how many captures will be taken over the duration and interval
27
+ def self.captures_needed(start_time: Time.now, end_time: Time.now,
28
+ duration: nil, interval:)
29
+ unless duration
30
+ start_time = start_time.to_i
31
+ end_time = end_time.to_i
32
+ duration = end_time - start_time
33
+ end
34
+
35
+ duration / interval
36
+ end
37
+
38
+ ##
39
+ # Capture a series of timelapse images over the given duration
40
+ # and at the given interval.
41
+ #
42
+ # @return [String] a gphoto2 command with the desired arguments
43
+ def self.timelapse_command(from: Time.now, to:, interval:)
44
+ captures = self.captures_needed(
45
+ start_time: from,
46
+ end_time: to,
47
+ interval: interval
48
+ )
49
+ "gphoto2 --capture-image-and-download -I #{interval} -F #{captures}"
50
+ end
51
+
52
+ ##
53
+ # Capture a timelapse image once per interval while the sun is up.
54
+ #
55
+ # @param interval [Duration] how frequently to capture images
56
+ # @return [String] a gphoto2 command with the desired arguments
57
+ def self.timelapse_command_while_sun_is_up(interval: 5.minutes)
58
+ sunrise = SolarEvent.sunrise
59
+ sunset = SolarEvent.sunset
60
+ now = Time.now
61
+
62
+ # Use now as starting time if sunrise has passed
63
+ sunrise = now > sunrise ? now : sunrise
64
+
65
+ captures = self.captures_needed(
66
+ start_time: sunrise,
67
+ end_time: sunset,
68
+ interval: interval
69
+ )
70
+ "gphoto2 --capture-image-and-download -I #{interval} -F #{captures}"
71
+ end
6
72
  end # Capture
7
73
  end # Tlapse
@@ -0,0 +1,26 @@
1
+ require "solareventcalculator"
2
+
3
+ module Tlapse
4
+ module SolarEvent
5
+ LAT = 35.779590
6
+ LON = -78.638179
7
+ TZ = "America/New_York"
8
+
9
+ def self.sunrise
10
+ s = solar_event.compute_official_sunrise(TZ)
11
+ n = Time.new
12
+ Time.new(n.year, n.month, n.day, s.hour, s.minute)
13
+ end
14
+
15
+ def self.sunset
16
+ s = solar_event.compute_official_sunset(TZ)
17
+ n = Time.new
18
+ Time.new(n.year, n.month, n.day, s.hour, s.minute)
19
+ end
20
+
21
+ def self.solar_event
22
+ date = Date.new
23
+ SolarEventCalculator.new date, LAT, LON
24
+ end
25
+ end
26
+ end
@@ -1,3 +1,3 @@
1
1
  module Tlapse
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/tlapse/video.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  module Tlapse
2
2
  class Video
3
-
4
3
  attr_accessor *%i(size framerate codec outfile)
5
4
 
6
5
  def initialize(opts)
data/lib/tlapse.rb CHANGED
@@ -3,6 +3,7 @@ require_relative "tlapse/doctor"
3
3
  require_relative "tlapse/capture"
4
4
  require_relative "tlapse/video"
5
5
  require_relative "tlapse/server"
6
+ require_relative "tlapse/solar_event"
6
7
 
7
8
  include Tlapse::Doctor
8
9
  include Tlapse::Capture
data/tlapse.gemspec CHANGED
@@ -22,6 +22,9 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency "rspec", "~> 3.0"
24
24
  spec.add_development_dependency "byebug", "~> 8.2"
25
+ spec.add_development_dependency "timecop", "~> 0.8"
25
26
 
26
27
  spec.add_dependency "gli", "~> 2.13"
28
+ spec.add_dependency "activesupport", ">= 5.0.0.beta3", "< 5.1"
29
+ spec.add_dependency "RubySunrise", "~> 0.3"
27
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tlapse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Toniazzo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-07 00:00:00.000000000 Z
11
+ date: 2016-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '8.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: timecop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.8'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.8'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: gli
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +94,40 @@ dependencies:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
96
  version: '2.13'
97
+ - !ruby/object:Gem::Dependency
98
+ name: activesupport
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 5.0.0.beta3
104
+ - - "<"
105
+ - !ruby/object:Gem::Version
106
+ version: '5.1'
107
+ type: :runtime
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: 5.0.0.beta3
114
+ - - "<"
115
+ - !ruby/object:Gem::Version
116
+ version: '5.1'
117
+ - !ruby/object:Gem::Dependency
118
+ name: RubySunrise
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.3'
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '0.3'
83
131
  description:
84
132
  email:
85
133
  - jutonz42@gmail.com
@@ -103,6 +151,7 @@ files:
103
151
  - lib/tlapse/capture.rb
104
152
  - lib/tlapse/doctor.rb
105
153
  - lib/tlapse/server.rb
154
+ - lib/tlapse/solar_event.rb
106
155
  - lib/tlapse/version.rb
107
156
  - lib/tlapse/video.rb
108
157
  - tlapse.gemspec