twitterpunch 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +38 -0
- data/bin/twitterpunch +13 -6
- data/lib/twitterpunch.rb +1 -1
- data/lib/twitterpunch/poster.rb +30 -1
- data/lib/twitterpunch/remote.rb +16 -9
- data/lib/twitterpunch/viewer.rb +1 -1
- data/views/index.erb +1 -1
- metadata +100 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6165d7e7567e21e95a0b4c9f0263bca9baf1d2a
|
4
|
+
data.tar.gz: f737d7aae3b511e5d41f716a99f7188fa2d6eae8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0bea417908e09c9565ae39882217efbcdc04c1f67a194c2f72ef0048c913afb3c6fa49df617861e14d3f0dbf870623082349bcd59e6592def62c3d16d995dc2
|
7
|
+
data.tar.gz: 40c009c5f09acfdc47a41d7c353a56e7599d10b3d72809a755adc2c2c9dc4a619ce5bd5b8d5a69cc16ecb0703960c09300db042eb99c37957a4a95c4446d9a4d
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -38,6 +38,10 @@ should look similar to the example below.
|
|
38
38
|
:logfile: ~/.twitterpunch/activity.log # Where to save logs
|
39
39
|
:viewer: # Use the built-in slideshow viewer
|
40
40
|
:count: 5 # How many images to have onscreen at once
|
41
|
+
:remote:
|
42
|
+
:timeout: 45 # How long the button should remain disabled for
|
43
|
+
:apptitle: dslrBooth # The photo booth application title
|
44
|
+
:hotkey: space # Which hotkey to send to trigger a photo
|
41
45
|
|
42
46
|
1. Generate a skeleton configuration file
|
43
47
|
* `twitterpunch --configure`
|
@@ -59,13 +63,41 @@ Usage
|
|
59
63
|
1. Profit!
|
60
64
|
* _and by that, I mean take some shots with PhotoBooth!_
|
61
65
|
|
66
|
+
*Note*: if the folder action doesn't seem to work and photos aren't posted to
|
67
|
+
Twitter, here are some troubleshooting steps to take:
|
68
|
+
|
69
|
+
1. Run Twitterpunch by hand with photos as arguments. This may help you isolate
|
70
|
+
configuration or authorization issues.
|
71
|
+
* `twitterpunch foo.jpg`
|
72
|
+
1. Correct the path in the workflow.
|
73
|
+
* `which twitterpunch`
|
74
|
+
* Edit the Twitterpunch folder action to include that path.
|
75
|
+
|
62
76
|
#### Using the remote web app
|
63
77
|
|
78
|
+
Configure the remote web app using the `:remote` hash in `config.yaml`. You can
|
79
|
+
usually find the title of the app using `system_profiler -detailLevel full SPApplicationsDataType`
|
80
|
+
and grepping for the name or path to the `.app`.
|
81
|
+
|
82
|
+
In this example, the title is _dslrBooth_.
|
83
|
+
|
84
|
+
[ben@ganymede] ~ $ system_profiler -detailLevel full SPApplicationsDataType | grep -B8 dslrBooth.app
|
85
|
+
dslrBooth:
|
86
|
+
|
87
|
+
Version: 2.9
|
88
|
+
Obtained from: Identified Developer
|
89
|
+
Last Modified: 10/14/17, 9:50 PM
|
90
|
+
Kind: Intel
|
91
|
+
64-Bit (Intel): Yes
|
92
|
+
Signed by: Developer ID Application: Hope Pictures LLC (MZR5GHAQX4), Developer ID Certification Authority, Apple Root CA
|
93
|
+
Location: /Applications/dslrBooth.app
|
94
|
+
|
64
95
|
1. Run the app with `twitterpunch --remote`
|
65
96
|
1. Browse to the app with http://{address}:8080
|
66
97
|
1. [optional] If on an iOS device, add to your homescreen
|
67
98
|
* This will give you "app behaviour", such as full screen, and a nice icon
|
68
99
|
|
100
|
+
|
69
101
|
#### Troubleshooting.
|
70
102
|
|
71
103
|
1. Make sure the folder action is installed properly
|
@@ -89,6 +121,12 @@ multiple files at once.
|
|
89
121
|
|
90
122
|
[ben@ganymede] ~ $ twitterpunch photo.jpg [photo2.jpg photo3.jpg photo4.jpg]
|
91
123
|
|
124
|
+
You can manually install the Folder Action, or you can follow the automated
|
125
|
+
install process after tweaking the workflow slightly.
|
126
|
+
|
127
|
+
1. Identify where the app stores the resulting image files.
|
128
|
+
1. Edit the Twitterpunch folder action to include that path.
|
129
|
+
1. Follow the steps above to install the Folder Action.
|
92
130
|
|
93
131
|
### Viewing the Twitter stream
|
94
132
|
|
data/bin/twitterpunch
CHANGED
@@ -46,11 +46,11 @@ optparse = OptionParser.new { |opts|
|
|
46
46
|
config[:action] = :configure
|
47
47
|
end
|
48
48
|
|
49
|
-
opts.on("-
|
49
|
+
opts.on("-r", "--remote", "Start the Twitterpunch remote web service") do
|
50
50
|
config[:action] = :remote
|
51
51
|
end
|
52
52
|
|
53
|
-
opts.on("-
|
53
|
+
opts.on("-i", "--install", "Install the Folder Action workflow (OS X only).") do
|
54
54
|
config[:action] = :install
|
55
55
|
end
|
56
56
|
|
@@ -79,6 +79,12 @@ config[:queue] = {}
|
|
79
79
|
config[:queue][:file] = File.expand_path('~/.twitterpunch/queue.yaml')
|
80
80
|
config[:queue][:ttl] = 30
|
81
81
|
|
82
|
+
config[:remote] ||= {}
|
83
|
+
config[:remote][:port] ||= 8080
|
84
|
+
config[:remote][:timeout] ||= 3
|
85
|
+
config[:remote][:apptitle] ||= 'Photo Booth'
|
86
|
+
config[:remote][:hotkey] ||= 'return'
|
87
|
+
|
82
88
|
FileUtils.touch(config[:queue][:file])
|
83
89
|
FileUtils.touch(config[:statefile])
|
84
90
|
|
@@ -95,7 +101,7 @@ when :stream
|
|
95
101
|
Twitterpunch::Streamer.new(config).thread
|
96
102
|
viewer.run
|
97
103
|
|
98
|
-
File.open(statefile, 'w') {|f| f.write(config[:state].to_yaml) }
|
104
|
+
File.open(config[:statefile], 'w') {|f| f.write(config[:state].to_yaml) }
|
99
105
|
|
100
106
|
when :post
|
101
107
|
require 'twitterpunch/poster'
|
@@ -128,9 +134,10 @@ when :install
|
|
128
134
|
when :remote
|
129
135
|
require 'twitterpunch/remote'
|
130
136
|
options = {
|
131
|
-
:port
|
132
|
-
:bind
|
133
|
-
:queue
|
137
|
+
:port => config[:remote][:port],
|
138
|
+
:bind => '0.0.0.0',
|
139
|
+
:queue => Twitterpunch::Queue.new(config),
|
140
|
+
:remote => config[:remote],
|
134
141
|
}
|
135
142
|
|
136
143
|
Twitterpunch::Remote.run! options
|
data/lib/twitterpunch.rb
CHANGED
data/lib/twitterpunch/poster.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'twitter'
|
3
3
|
require 'twitterpunch/queue'
|
4
|
+
require 'tempfile'
|
5
|
+
require 'rmagick'
|
4
6
|
|
5
7
|
module Twitterpunch
|
6
8
|
class Poster
|
@@ -17,11 +19,38 @@ module Twitterpunch
|
|
17
19
|
message = @queue.pop || @config[:messages].sample
|
18
20
|
message = "#{message[0..@length]} ##{@config[:hashtag]}"
|
19
21
|
|
20
|
-
|
22
|
+
resample(img) do |path|
|
23
|
+
@client.update_with_media(message, File.new(path))
|
24
|
+
end
|
21
25
|
chirp()
|
22
26
|
end
|
23
27
|
end
|
24
28
|
|
29
|
+
def resample(img)
|
30
|
+
path = File.expand_path(img)
|
31
|
+
size = File.size?(path)
|
32
|
+
max = 3000000 # max size for twitter images
|
33
|
+
|
34
|
+
if size < max
|
35
|
+
yield path
|
36
|
+
else
|
37
|
+
# since filesize grows exponentially, this will be smaller than absolutely necessary.
|
38
|
+
ratio = Float(max) / Float(size)
|
39
|
+
tmpfile = Tempfile.new('twitterpunch')
|
40
|
+
|
41
|
+
image = Magick::Image.read(path).first
|
42
|
+
image.resize!(ratio)
|
43
|
+
image.write(tmpfile.path)
|
44
|
+
|
45
|
+
yield tmpfile.path
|
46
|
+
|
47
|
+
tmpfile.close
|
48
|
+
tmpfile.unlink
|
49
|
+
|
50
|
+
puts "Resized image to #{Integer(ratio * 100)}%."
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
25
54
|
def chirp
|
26
55
|
case RUBY_PLATFORM
|
27
56
|
when /mingw|cygwin/
|
data/lib/twitterpunch/remote.rb
CHANGED
@@ -9,12 +9,15 @@ class Twitterpunch::Remote < Sinatra::Base
|
|
9
9
|
set :views, File.dirname(__FILE__) + '/../../views'
|
10
10
|
set :public_folder, File.dirname(__FILE__) + '/../../public'
|
11
11
|
set :erb, :trim => '-'
|
12
|
-
set :configfile, File.expand_path('~/.twitterpunch/queue.yaml')
|
13
12
|
|
14
13
|
configure :production, :development do
|
15
14
|
enable :logging
|
16
15
|
enable :sessions
|
17
|
-
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize(app=nil)
|
19
|
+
super(app)
|
20
|
+
system('osascript', '-e' "tell application \"#{settings.remote[:apptitle]}\" to activate")
|
18
21
|
end
|
19
22
|
|
20
23
|
get '/' do
|
@@ -33,15 +36,19 @@ class Twitterpunch::Remote < Sinatra::Base
|
|
33
36
|
helpers do
|
34
37
|
def photo
|
35
38
|
begin
|
36
|
-
stdout, status = Open3.capture2e('osascript', '-e',
|
37
|
-
|
38
|
-
|
39
|
+
stdout, status = Open3.capture2e('osascript', '-e', "tell application \"#{settings.remote[:apptitle]}\" to activate")
|
40
|
+
unless status.success?
|
41
|
+
puts stdout
|
42
|
+
raise "Could not activate Photo Booth"
|
43
|
+
end
|
39
44
|
|
40
45
|
# This is kind of iffy, because it depends on having full control over the UI.
|
41
|
-
# This will only work when Photo Booth actually has the foreground.
|
42
|
-
stdout, status = Open3.capture2e('osascript', '-e',
|
43
|
-
|
44
|
-
|
46
|
+
# This will only work when the Photo Booth app actually has the foreground.
|
47
|
+
stdout, status = Open3.capture2e('osascript', '-e', "tell application \"System Events\" to keystroke #{settings.remote[:hotkey]}")
|
48
|
+
unless status.success?
|
49
|
+
puts stdout
|
50
|
+
raise "Snapshot failed"
|
51
|
+
end
|
45
52
|
|
46
53
|
'ok'
|
47
54
|
rescue => e
|
data/lib/twitterpunch/viewer.rb
CHANGED
@@ -105,7 +105,7 @@ module Twitterpunch
|
|
105
105
|
|
106
106
|
def next_image
|
107
107
|
image = Dir.glob(File.expand_path("#{@config[:photodir]}/*")).sample
|
108
|
-
text = @config[:state][File.basename(image)]
|
108
|
+
text = @config[:state][File.basename(image)] rescue nil
|
109
109
|
return image, text
|
110
110
|
end
|
111
111
|
|
data/views/index.erb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twitterpunch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Ford
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: twitter
|
@@ -66,6 +66,34 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sinatra
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rmagick
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
69
97
|
description: "Twitterpunch\n===============\n\nTwitterpunch is designed to work with
|
70
98
|
PhotoBooth and OS X Folder Actions.\nWhen this script is called with the name of
|
71
99
|
an image file, it will post the\nimage to Twitter, along with a message randomly
|
@@ -88,54 +116,75 @@ description: "Twitterpunch\n===============\n\nTwitterpunch is designed to work
|
|
88
116
|
~/Pictures/twitterpunch/ # Where to save downloaded images\n :logfile: ~/.twitterpunch/activity.log
|
89
117
|
\ # Where to save logs\n :viewer: # Use the built-in
|
90
118
|
slideshow viewer\n :count: 5 # How many images
|
91
|
-
to have onscreen at once\n
|
92
|
-
|
93
|
-
|
94
|
-
to
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
119
|
+
to have onscreen at once\n :remote:\n :timeout: 45 #
|
120
|
+
How long the button should remain disabled for\n :apptitle: dslrBooth #
|
121
|
+
The photo booth application title\n :hotkey: space #
|
122
|
+
Which hotkey to send to trigger a photo\n\n1. Generate a skeleton configuration
|
123
|
+
file\n * `twitterpunch --configure`\n1. Edit the configuration file as needed.
|
124
|
+
You'll be prompted with the path.\n * If you have your own Twitter application
|
125
|
+
credentials, you're welcome to use them.\n1. Authorize the application with the
|
126
|
+
Twitter API.\n * `twitterpunch --authorize`\n\n\nUsage \n==========\n\n### Using
|
127
|
+
OS X PhotoBooth\n\n1. Start PhotoBooth at least once to generate its library.\n1.
|
128
|
+
Install the Twitterpunch Folder Action\n * `twitterpunch --install`\n * It
|
129
|
+
may claim that it could not be attached, fear not.\n1. Profit!\n * _and by that,
|
130
|
+
I mean take some shots with PhotoBooth!_\n\n*Note*: if the folder action doesn't
|
131
|
+
seem to work and photos aren't posted to\nTwitter, here are some troubleshooting
|
132
|
+
steps to take:\n\n1. Run Twitterpunch by hand with photos as arguments. This may
|
133
|
+
help you isolate\n configuration or authorization issues.\n * `twitterpunch
|
134
|
+
foo.jpg`\n1. Correct the path in the workflow.\n * `which twitterpunch`\n *
|
135
|
+
Edit the Twitterpunch folder action to include that path.\n\n#### Using the remote
|
136
|
+
web app\n\nConfigure the remote web app using the `:remote` hash in `config.yaml`.
|
137
|
+
You can\nusually find the title of the app using `system_profiler -detailLevel full
|
138
|
+
SPApplicationsDataType`\nand grepping for the name or path to the `.app`.\n\nIn
|
139
|
+
this example, the title is _dslrBooth_.\n\n [ben@ganymede] ~ $ system_profiler
|
140
|
+
-detailLevel full SPApplicationsDataType | grep -B8 dslrBooth.app\n dslrBooth:\n\n
|
141
|
+
\ Version: 2.9\n Obtained from: Identified Developer\n Last
|
142
|
+
Modified: 10/14/17, 9:50 PM\n Kind: Intel\n 64-Bit (Intel): Yes\n
|
143
|
+
\ Signed by: Developer ID Application: Hope Pictures LLC (MZR5GHAQX4), Developer
|
144
|
+
ID Certification Authority, Apple Root CA\n Location: /Applications/dslrBooth.app\n\n1.
|
145
|
+
Run the app with `twitterpunch --remote`\n1. Browse to the app with http://{address}:8080\n1.
|
146
|
+
[optional] If on an iOS device, add to your homescreen\n * This will give you
|
147
|
+
\"app behaviour\", such as full screen, and a nice icon\n\n\n#### Troubleshooting.\n\n1.
|
148
|
+
Make sure the folder action is installed properly\n 1. Use the Finder to navigate
|
149
|
+
to `~/Pictures/`\n 1. Right click on the `Photo Booth Library` icon and choose
|
150
|
+
_Show Package Contents_.\n 1. Right click on the `Pictures` folder and choose
|
151
|
+
`Services > Folder Actions Setup`\n 1. Make sure that the `Twitterpunch` action
|
152
|
+
is attached.\n1. Install the folder action\n 1. Open the `resources` folder of
|
153
|
+
this gem.\n * Likely to be found in `/Library/Ruby/Gems/{version}/gems/twitterpunch-#{version}/resources/`.\n
|
154
|
+
\ 1. Double click on the `Twitterpunch` folder action and install it.\n *
|
155
|
+
It may claim that it could not be attached, fear not.\n\n\n### Using something besides
|
111
156
|
PhotoBooth\n\nConfigure the program you are using for your photo shoot to call Twitterpunch\neach
|
112
157
|
time it snaps a photo. Pass the name of the new photo as a command line\nargument.
|
113
158
|
\ Alternatively, you could batch them, as Twitterpunch can accept\nmultiple files
|
114
159
|
at once.\n\n [ben@ganymede] ~ $ twitterpunch photo.jpg [photo2.jpg photo3.jpg
|
115
|
-
photo4.jpg]\n\
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
160
|
+
photo4.jpg]\n\nYou can manually install the Folder Action, or you can follow the
|
161
|
+
automated\ninstall process after tweaking the workflow slightly.\n\n1. Identify
|
162
|
+
where the app stores the resulting image files.\n1. Edit the Twitterpunch folder
|
163
|
+
action to include that path.\n1. Follow the steps above to install the Folder Action.\n\n###
|
164
|
+
Viewing the Twitter stream\n\nTwitterpunch will run on OS X or Windows equally well.
|
165
|
+
Simply configure it on the\ncomputer that will act as the Twitter display and then
|
166
|
+
run in streaming mode.\n\n [ben@ganymede] ~ $ twitterpunch --stream\n\nThere
|
167
|
+
are two modes that Twitterpunch can operate in.\n\n1. If a `:hashtag` is defined
|
168
|
+
then all images tweeted to the configured hashtag\n will be displayed in the slideshow.\n1.
|
169
|
+
Otherwise, Twitterpunch will stream the `:handle` Twitter user's stream and\n display
|
170
|
+
all images either posted by that user or addressed to that user. With\n protected
|
171
|
+
tweets, you can have rudimentary access control.\n\nIn either mode, tweets that
|
172
|
+
come from any other user will also be spoken aloud.\n\nIf you don't want to use
|
173
|
+
the built-in slideshow viewer, you can disable it by\nremoving the `:viewer` key
|
174
|
+
from your `~/.twitterpunch/config.yaml` config file.\nTwitterpunch will then simply
|
175
|
+
download the tweeted images and save them into the\n`:photodir` directory. You can
|
176
|
+
then use anything you like to view them.\n\nThere are currently two decent viewing
|
177
|
+
options I am aware of.\n\n* Windows background image:\n * Configure the Windows
|
178
|
+
background to randomly cycle through photos in a directory.\n * Hide desktop
|
179
|
+
icons.\n * Hide the taskbar.\n * Disable screensaver and power savings.\n
|
180
|
+
\ * Drawbacks: You're using Windows and you have to install Ruby & RubyGems manually.\n*
|
181
|
+
OS X screensaver:\n * Choose one of the sexy screensavers and configure it to
|
182
|
+
show photos from the `:photodir`\n * Set screensaver to a super short timeout.\n
|
183
|
+
\ * Disable power savings.\n * Drawbacks: The screensaver doesn't reload dynamically,
|
184
|
+
so I have to kick it\n and you'll see it reloading each time a new tweet comes
|
185
|
+
in.\n\n\nLimitations\n===========\n\n* It currently requires manual setup for Folder
|
186
|
+
Actions.\n* Rubygame is kind of a pain to set up.\n\n\nContact\n=======\n\n* Author:
|
187
|
+
Ben Ford\n* Email: binford2k@gmail.com\n* Twitter: @binford2k\n* IRC (Freenode):
|
139
188
|
binford2k\n"
|
140
189
|
email: binford2k@gmail.com
|
141
190
|
executables:
|
@@ -143,9 +192,11 @@ executables:
|
|
143
192
|
extensions: []
|
144
193
|
extra_rdoc_files: []
|
145
194
|
files:
|
195
|
+
- CHANGELOG.md
|
146
196
|
- LICENSE
|
147
197
|
- README.md
|
148
198
|
- bin/twitterpunch
|
199
|
+
- lib/twitterpunch.rb
|
149
200
|
- lib/twitterpunch/configuration.rb
|
150
201
|
- lib/twitterpunch/logger.rb
|
151
202
|
- lib/twitterpunch/poster.rb
|
@@ -154,7 +205,8 @@ files:
|
|
154
205
|
- lib/twitterpunch/sprite.rb
|
155
206
|
- lib/twitterpunch/streamer.rb
|
156
207
|
- lib/twitterpunch/viewer.rb
|
157
|
-
-
|
208
|
+
- public/touch-icon-ipad-retina.png
|
209
|
+
- public/touch-icon-iphone-retina.png
|
158
210
|
- resources/Tahoma Bold.ttf
|
159
211
|
- resources/Twitterpunch.workflow/Contents/Info.plist
|
160
212
|
- resources/Twitterpunch.workflow/Contents/QuickLook/Thumbnail.png
|
@@ -162,8 +214,6 @@ files:
|
|
162
214
|
- resources/say.vbs
|
163
215
|
- resources/tweet_sent.wav
|
164
216
|
- views/index.erb
|
165
|
-
- public/touch-icon-ipad-retina.png
|
166
|
-
- public/touch-icon-iphone-retina.png
|
167
217
|
homepage: https://github.com/binford2k/twitterpunch
|
168
218
|
licenses:
|
169
219
|
- MIT
|
@@ -193,7 +243,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
243
|
version: '0'
|
194
244
|
requirements: []
|
195
245
|
rubyforge_project:
|
196
|
-
rubygems_version: 2.
|
246
|
+
rubygems_version: 2.5.2
|
197
247
|
signing_key:
|
198
248
|
specification_version: 4
|
199
249
|
summary: A simple tool to automate the posting and streaming of PhotoBooth shots over
|