twitterpunch 0.0.7 → 0.0.8

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: 389d8553b798ec507b247c3d177531c901d001ce
4
- data.tar.gz: d387564f4bc18b59b340051e9fe8aa7ef5da441f
3
+ metadata.gz: dc3d6039a991bb31c105ce40daaea5ec49002ffc
4
+ data.tar.gz: 3df413902f881befba963640647f8df4ada50bc3
5
5
  SHA512:
6
- metadata.gz: 75b805d4d94c23e3f380c723f6f2a3b0c88b2cca1867a993af89363871442e37e4c7c5c25dfcbf31009810222cc2c9ebe4996547e0a70541ae2f26ab851a4115
7
- data.tar.gz: 5b05a187c7524c52b524cb8235517a6d33378cf6c94d7c13dafa62ab0b00872dbea1c22c81ba8c6e29ed9b3070ff656cfaf9e221d589c5a79916507a9be08eeb
6
+ metadata.gz: 8303873cd744d2acfd901862fe306c1858bbc9df2a2c600377331ea8e56b78ad49ad5091c5bbb83383f4d68bc713cc3348289b25e126abae2c0d9467260fa7de
7
+ data.tar.gz: 53a0bf07a69ec8a5054b36b5b732a0c4e725a7c5c507f32bfcc6d5ebd97f7d9d85cac85f095b6ee45c0e31f6f20187a657c5ec1d698e284e1a73671ec82b9f2d
data/LICENSE CHANGED
@@ -1,3 +1,5 @@
1
+ MIT License (MIT)
2
+
1
3
  Copyright (c) 2014 Ben Ford <binford2k@gmail.com>
2
4
 
3
5
  Permission is hereby granted, free of charge, to any person obtaining
data/README.md CHANGED
@@ -6,15 +6,21 @@ When this script is called with the name of an image file, it will post the
6
6
  image to Twitter, along with a message randomly chosen from a list and a
7
7
  specified hashtag.
8
8
 
9
- If you call the script with the --stream argument instead, it will listen
9
+ If you call the script with the `--stream` argument instead, it will listen
10
10
  for tweets to that hashtag and download them to a specified directory. If
11
11
  the tweet came from another user, Twitterpunch will speak it aloud.
12
12
 
13
+ Typically, you'll run one copy on an OSX laptop with PhotoBooth, and a separate
14
+ copy on another machine (either Windows or OSX) for the viewer. You can also use
15
+ a mobile device as a remote control, if you like. This will allow the user to
16
+ enter a custom message for each photo that gets tweeted out, if they'd like.
17
+
18
+
13
19
  Configuration
14
20
  ===========
15
21
 
16
- Configure the program via the `~/.twitterpunch.yaml` YAML file. This file should
17
- look similar to the example below.
22
+ Configure the program via the `~/.twitterpunch/config.yaml` YAML file. This file
23
+ should look similar to the example below.
18
24
 
19
25
  ---
20
26
  :twitter: # twitter configuration
@@ -27,13 +33,19 @@ look similar to the example below.
27
33
  - I'm a posting fool
28
34
  - minimally viable product
29
35
  :hashtag: Twitterpunch # The hashtag to post and listen to
36
+ :handle: Twitterpunch # The twitter username to post as
30
37
  :photodir: ~/Pictures/twitterpunch/ # Where to save downloaded images
31
- :logfile: ~/.twitterpunch.log # Where to save logs
38
+ :logfile: ~/.twitterpunch/activity.log # Where to save logs
32
39
  :viewer: # Use the built-in slideshow viewer
33
40
  :count: 5 # How many images to have onscreen at once
34
41
 
35
- A skeleton configuration file, with access tokens from Twitter, can be generated
36
- by running the program with the `--genconfig` flag.
42
+ 1. Generate a skeleton configuration file
43
+ * `twitterpunch --configure`
44
+ 1. Edit the configuration file as needed. You'll be prompted with the path.
45
+ * If you have your own Twitter application credentials, you're welcome to use them.
46
+ 1. Authorize the application with the Twitter API.
47
+ * `twitterpunch --authorize`
48
+
37
49
 
38
50
  Usage
39
51
  ==========
@@ -47,6 +59,13 @@ Usage
47
59
  1. Profit!
48
60
  * _and by that, I mean take some shots with PhotoBooth!_
49
61
 
62
+ #### Using the remote web app
63
+
64
+ 1. Run the app with `twitterpunch --remote`
65
+ 1. Browse to the app with http://{address}:8080
66
+ 1. [optional] If on an iOS device, add to your homescreen
67
+ * This will give you "app behaviour", such as full screen, and a nice icon
68
+
50
69
  #### Troubleshooting.
51
70
 
52
71
  1. Make sure the folder action is installed properly
@@ -56,32 +75,42 @@ Usage
56
75
  1. Make sure that the `Twitterpunch` action is attached.
57
76
  1. Install the folder action
58
77
  1. Open the `resources` folder of this gem.
59
- * Likely to be found in `/Library/Ruby/Gems/2.0.0/gems/twitterpunch-#{version}/resources/`.
78
+ * Likely to be found in `/Library/Ruby/Gems/{version}/gems/twitterpunch-#{version}/resources/`.
60
79
  1. Double click on the `Twitterpunch` folder action and install it.
61
80
  * It may claim that it could not be attached, fear not.
62
81
 
63
- ### Using something else
82
+
83
+ ### Using something besides PhotoBooth
64
84
 
65
85
  Configure the program you are using for your photo shoot to call Twitterpunch
66
86
  each time it snaps a photo. Pass the name of the new photo as a command line
67
87
  argument. Alternatively, you could batch them, as Twitterpunch can accept
68
88
  multiple files at once.
69
89
 
70
- [ben@ganymede] ~ $ twitterpunch photo.jpg
90
+ [ben@ganymede] ~ $ twitterpunch photo.jpg [photo2.jpg photo3.jpg photo4.jpg]
91
+
71
92
 
72
93
  ### Viewing the Twitter stream
73
94
 
74
95
  Twitterpunch will run on OS X or Windows equally well. Simply configure it on the
75
96
  computer that will act as the Twitter display and then run in streaming mode.
76
- All images tweeted to the configured hashtag will be displayed in the slideshow
77
- and tweets that come from any other user will also be spoken aloud.
78
97
 
79
98
  [ben@ganymede] ~ $ twitterpunch --stream
80
99
 
100
+ There are two modes that Twitterpunch can operate in.
101
+
102
+ 1. If a `:hashtag` is defined then all images tweeted to the configured hashtag
103
+ will be displayed in the slideshow.
104
+ 1. Otherwise, Twitterpunch will stream the `:handle` Twitter user's stream and
105
+ display all images either posted by that user or addressed to that user. With
106
+ protected tweets, you can have rudimentary access control.
107
+
108
+ In either mode, tweets that come from any other user will also be spoken aloud.
109
+
81
110
  If you don't want to use the built-in slideshow viewer, you can disable it by
82
- removing the `:viewer` key from your `~/.twitterpunch.yaml` config file. Twitterpunch
83
- will then simply download the tweeted images and save them into the `:photodir`
84
- directory. You can then use anything you like to view them.
111
+ removing the `:viewer` key from your `~/.twitterpunch/config.yaml` config file.
112
+ Twitterpunch will then simply download the tweeted images and save them into the
113
+ `:photodir` directory. You can then use anything you like to view them.
85
114
 
86
115
  There are currently two decent viewing options I am aware of.
87
116
 
@@ -98,12 +127,6 @@ There are currently two decent viewing options I am aware of.
98
127
  * Drawbacks: The screensaver doesn't reload dynamically, so I have to kick it
99
128
  and you'll see it reloading each time a new tweet comes in.
100
129
 
101
- ### Running the remote web app
102
-
103
- 1. Run the app with `twitterpunch --remote`
104
- 1. Browse to the app with http://<address>:8080
105
- 1. [optional] If on an iOS device, add to your homescreen
106
- * This will give you "app behaviour", such as full screen, and a nice icon
107
130
 
108
131
  Limitations
109
132
  ===========
@@ -10,9 +10,8 @@ require 'yaml'
10
10
  require 'twitterpunch'
11
11
 
12
12
  FileUtils.mkdir_p File.expand_path('~/.twitterpunch')
13
- FileUtils.touch(File.expand_path('~/.twitterpunch/queue.yaml'))
14
13
 
15
- configfile = File.expand_path('~/.twitterpunch.yaml')
14
+ configfile = File.expand_path('~/.twitterpunch/config.yaml')
16
15
  config = YAML.load_file(configfile) rescue {}
17
16
 
18
17
  optparse = OptionParser.new { |opts|
@@ -40,11 +39,10 @@ optparse = OptionParser.new { |opts|
40
39
  config[:action] = :view
41
40
  end
42
41
 
43
- opts.on("-a", "--authorize", "Authorize Twitterpunch with Twitter and write out a configuration file.") do
44
- config[:action] = :configure
42
+ opts.on("--authorize", "Authorize Twitterpunch with Twitter and update the configuration file.") do
43
+ config[:action] = :authorize
45
44
  end
46
- opts.on("-g", "--genconfig", "Deprecated config generation. Use --authorize instead.") do
47
- puts 'NOTICE: [-g|--genconfig\ are deprecated. Please use --authorize instead'
45
+ opts.on("--configure", "Generate default configuration (other than Twitter authorization).") do
48
46
  config[:action] = :configure
49
47
  end
50
48
 
@@ -76,19 +74,22 @@ optparse.parse!
76
74
 
77
75
  config[:action] = :post if ARGV.size > 0 and config[:action].nil?
78
76
  config[:resources] = File.expand_path("#{File.dirname(__FILE__)}/../resources")
77
+ config[:statefile] = File.expand_path('~/.twitterpunch/state.yaml')
79
78
  config[:queue] = {}
80
79
  config[:queue][:file] = File.expand_path('~/.twitterpunch/queue.yaml')
81
80
  config[:queue][:ttl] = 30
82
81
 
82
+ FileUtils.touch(config[:queue][:file])
83
+ FileUtils.touch(config[:statefile])
84
+
83
85
  case config[:action]
84
86
  when :stream
85
87
  require 'twitterpunch/streamer'
86
88
  require 'twitterpunch/viewer'
87
89
 
88
- statefile = File.expand_path('~/.twitterpunch.state')
89
- viewer = Twitterpunch::Viewer.new(config)
90
+ viewer = Twitterpunch::Viewer.new(config)
90
91
 
91
- config[:state] = YAML.load_file(statefile) rescue {}
92
+ config[:state] = YAML.load_file(config[:statefile]) rescue {}
92
93
  config[:display] = viewer
93
94
 
94
95
  Twitterpunch::Streamer.new(config).thread
@@ -104,16 +105,22 @@ when :post
104
105
  when :view
105
106
  require 'twitterpunch/viewer'
106
107
 
107
- statefile = File.expand_path('~/.twitterpunch.state')
108
- config[:state] = YAML.load_file(statefile) rescue {}
108
+ config[:state] = YAML.load_file(config[:statefile]) rescue {}
109
109
 
110
110
  viewer = Twitterpunch::Viewer.new(config)
111
111
  viewer.run
112
112
 
113
+ when :authorize
114
+ require 'twitterpunch/configuration'
115
+ cfg = Twitterpunch::Configuration.new(configfile)
116
+ cfg.authorize
117
+ cfg.save
118
+
113
119
  when :configure
114
120
  require 'twitterpunch/configuration'
115
- cfg = Twitterpunch::Configuration.new(configfile).save
116
- puts "Please edit #{configfile} to configure."
121
+ cfg = Twitterpunch::Configuration.new(configfile)
122
+ cfg.configure
123
+ cfg.save
117
124
 
118
125
  when :install
119
126
  system('open', "#{config[:resources]}/Twitterpunch.workflow")
@@ -1,5 +1,5 @@
1
1
  module Twitterpunch
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
 
4
4
  # Twitter application credentials
5
5
  API_KEY = 'STurW17Tj7HuoZ7dSzS0uSoIP'
@@ -7,10 +7,23 @@ module Twitterpunch
7
7
 
8
8
  def initialize(file)
9
9
  @configfile = file
10
+ @config = YAML.load_file(@configfile) rescue defaults
11
+ end
12
+
13
+ def authorize
14
+ if @config.include? :twitter and @config[:twitter].include? :access_token_secret
15
+ puts "You already have Twitter authorization."
16
+ print "Would you like to re-authorize [y/N]? "
17
+ return unless STDIN.gets.strip.downcase == 'y'
18
+ end
19
+
20
+ @config[:twitter] ||= {}
21
+ @config[:twitter][:consumer_key] ||= Twitterpunch::API_KEY
22
+ @config[:twitter][:consumer_secret] ||= Twitterpunch::API_SECRET
10
23
 
11
24
  consumer = OAuth::Consumer.new(
12
- Twitterpunch::API_KEY,
13
- Twitterpunch::API_SECRET,
25
+ @config[:twitter][:consumer_key],
26
+ @config[:twitter][:consumer_secret],
14
27
  {
15
28
  :site => 'https://api.twitter.com/',
16
29
  :scheme => :header,
@@ -26,23 +39,37 @@ module Twitterpunch
26
39
  print "Please enter the PIN you are given: "
27
40
  pin = STDIN.readline.chomp
28
41
 
29
- @access_token = request_token.get_access_token(:oauth_verifier => pin)
42
+ access_token = request_token.get_access_token(:oauth_verifier => pin)
43
+ @config[:twitter][:access_token] = access_token.token
44
+ @config[:twitter][:access_token_secret] = access_token.secret
30
45
  end
31
46
 
32
- def save
33
- config = YAML.load_file(@configfile) rescue defaults
47
+ def configure
48
+ puts "Existing Twitter authorization will not be altered." if @config.include? :twitter
49
+ print "Would you like to save default configuration values [y/N]? "
50
+ return unless STDIN.gets.strip.downcase == 'y'
51
+ @config.merge! defaults
34
52
 
35
- config[:twitter] = {
36
- :consumer_key => Twitterpunch::API_KEY,
37
- :consumer_secret => Twitterpunch::API_SECRET,
38
- :access_token => @access_token.token,
39
- :access_token_secret => @access_token.secret
40
- }
53
+ # This is not in defaults so it doesn't take precedence
54
+ @config[:twitter] ||= {}
55
+ @config[:twitter][:consumer_key] ||= Twitterpunch::API_KEY
56
+ @config[:twitter][:consumer_secret] ||= Twitterpunch::API_SECRET
57
+
58
+ puts "Please edit #{@configfile} to configure."
59
+ puts 'If you have your own Twitter consumer key/secret, you may replace'
60
+ puts 'the defaults before running `twitterpunch --authorize`.'
61
+ end
41
62
 
42
- File.open(@configfile, 'w') {|f| f.write(config.to_yaml) }
63
+ def save
64
+ puts @config.to_yaml
65
+ puts
66
+ print "Save configuration [y/N]? "
67
+ return unless STDIN.gets.strip.downcase == 'y'
68
+ File.open(@configfile, 'w') {|f| f.write(@config.to_yaml) }
43
69
  end
44
70
 
45
71
  def defaults
72
+ puts "Generating default configuration options..."
46
73
  {
47
74
  :messages => [
48
75
  "Hello there",
@@ -54,7 +81,7 @@ module Twitterpunch
54
81
  },
55
82
  :hashtag => "Twitterpunch",
56
83
  :photodir => "~/Pictures/twitterpunch/",
57
- :logfile => '~/.twitterpunch.log',
84
+ :logfile => '~/.twitterpunch/activity.log',
58
85
  }
59
86
  end
60
87
  end
@@ -45,7 +45,6 @@ class Twitterpunch::Queue
45
45
  end
46
46
 
47
47
  def save(file, queue)
48
- puts "Saving #{queue.inspect}"
49
48
  file.rewind
50
49
  file.truncate 0
51
50
  file.write(queue.to_yaml)
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.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Ford
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-10 00:00:00.000000000 Z
11
+ date: 2016-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: twitter
@@ -70,61 +70,73 @@ description: "Twitterpunch\n===============\n\nTwitterpunch is designed to work
70
70
  PhotoBooth and OS X Folder Actions.\nWhen this script is called with the name of
71
71
  an image file, it will post the\nimage to Twitter, along with a message randomly
72
72
  chosen from a list and a\nspecified hashtag.\n\nIf you call the script with the
73
- --stream argument instead, it will listen\nfor tweets to that hashtag and download
73
+ `--stream` argument instead, it will listen\nfor tweets to that hashtag and download
74
74
  them to a specified directory. If\nthe tweet came from another user, Twitterpunch
75
- will speak it aloud.\n\nConfiguration\n===========\n\nConfigure the program via
76
- the `~/.twitterpunch.yaml` YAML file. This file should\nlook similar to the example
77
- below.\n\n ---\n :twitter: # twitter configuration\n
78
- \ :consumer_key: <consumer key>\n :consumer_secret: <consumer secret>\n
79
- \ :access_token: <access token>\n :access_token_secret: <access secret>\n
80
- \ :messages: # list of messages to attach\n -
81
- Hello there # to outgoing tweets\n - I'm a posting
82
- fool\n - minimally viable product\n :hashtag: Twitterpunch #
83
- The hashtag to post and listen to\n :photodir: ~/Pictures/twitterpunch/ #
84
- Where to save downloaded images\n :logfile: ~/.twitterpunch.log # Where
85
- to save logs\n :viewer: # Use the built-in slideshow
86
- viewer\n :count: 5 # How many images to have onscreen
87
- at once\n\nA skeleton configuration file, with access tokens from Twitter, can be
88
- generated\nby running the program with the `--genconfig` flag.\n\nUsage \n==========\n\n###
89
- Using OS X PhotoBooth\n\n1. Start PhotoBooth at least once to generate its library.\n1.
90
- Install the Twitterpunch Folder Action\n * `twitterpunch --install`\n * It
91
- may claim that it could not be attached, fear not.\n1. Profit!\n * _and by that,
92
- I mean take some shots with PhotoBooth!_\n\n#### Troubleshooting.\n\n1. Make sure
93
- the folder action is installed properly\n 1. Use the Finder to navigate to `~/Pictures/`\n
94
- \ 1. Right click on the `Photo Booth Library` icon and choose _Show Package Contents_.\n
95
- \ 1. Right click on the `Pictures` folder and choose `Services > Folder Actions
96
- Setup`\n 1. Make sure that the `Twitterpunch` action is attached.\n1. Install
97
- the folder action\n 1. Open the `resources` folder of this gem.\n * Likely
98
- to be found in `/Library/Ruby/Gems/2.0.0/gems/twitterpunch-#{version}/resources/`.\n
99
- \ 1. Double click on the `Twitterpunch` folder action and install it.\n *
100
- It may claim that it could not be attached, fear not.\n\n### Using something else\n\nConfigure
101
- the program you are using for your photo shoot to call Twitterpunch\neach time it
102
- snaps a photo. Pass the name of the new photo as a command line\nargument. Alternatively,
103
- you could batch them, as Twitterpunch can accept\nmultiple files at once.\n\n [ben@ganymede]
104
- ~ $ twitterpunch photo.jpg\n\n### Viewing the Twitter stream\n\nTwitterpunch will
105
- run on OS X or Windows equally well. Simply configure it on the\ncomputer that will
106
- act as the Twitter display and then run in streaming mode.\nAll images tweeted to
107
- the configured hashtag will be displayed in the slideshow\nand tweets that come
108
- from any other user will also be spoken aloud.\n\n [ben@ganymede] ~ $ twitterpunch
109
- --stream\n\nIf you don't want to use the built-in slideshow viewer, you can disable
110
- it by\nremoving the `:viewer` key from your `~/.twitterpunch.yaml` config file.
111
- Twitterpunch\nwill then simply download the tweeted images and save them into the
112
- `:photodir`\ndirectory. You can then use anything you like to view them.\n\nThere
113
- are currently two decent viewing options I am aware of.\n\n* Windows background
114
- image:\n * Configure the Windows background to randomly cycle through photos
115
- in a directory.\n * Hide desktop icons.\n * Hide the taskbar.\n * Disable
116
- screensaver and power savings.\n * Drawbacks: You're using Windows and you have
117
- to install Ruby & RubyGems manually.\n* OS X screensaver:\n * Choose one of the
118
- sexy screensavers and configure it to show photos from the `:photodir`\n * Set
119
- screensaver to a super short timeout.\n * Disable power savings.\n * Drawbacks:
120
- The screensaver doesn't reload dynamically, so I have to kick it\n and you'll
121
- see it reloading each time a new tweet comes in.\n\n### Running the remote web app\n\n1.
122
- Run the app with `twitterpunch --remote`\n1. Browse to the app with http://<address>:8080\n1.
123
- [optional] If on an iOS device, add to your homescreen\n * This will give you
124
- \"app behaviour\", such as full screen, and a nice icon\n\nLimitations\n===========\n\n*
125
- It currently requires manual setup for Folder Actions.\n* Rubygame is kind of a
126
- pain to set up.\n\n\nContact\n=======\n\n* Author: Ben Ford\n* Email: binford2k@gmail.com\n*
127
- Twitter: @binford2k\n* IRC (Freenode): binford2k\n"
75
+ will speak it aloud.\n\nTypically, you'll run one copy on an OSX laptop with PhotoBooth,
76
+ and a separate\ncopy on another machine (either Windows or OSX) for the viewer.
77
+ You can also use\na mobile device as a remote control, if you like. This will allow
78
+ the user to\nenter a custom message for each photo that gets tweeted out, if they'd
79
+ like.\n\n\nConfiguration\n===========\n\nConfigure the program via the `~/.twitterpunch/config.yaml`
80
+ YAML file. This file\nshould look similar to the example below.\n\n ---\n :twitter:
81
+ \ # twitter configuration\n :consumer_key: <consumer
82
+ key>\n :consumer_secret: <consumer secret>\n :access_token: <access token>\n
83
+ \ :access_token_secret: <access secret>\n :messages: #
84
+ list of messages to attach\n - Hello there # to outgoing
85
+ tweets\n - I'm a posting fool\n - minimally viable product\n :hashtag:
86
+ Twitterpunch # The hashtag to post and listen to\n :handle:
87
+ Twitterpunch # The twitter username to post as\n :photodir:
88
+ ~/Pictures/twitterpunch/ # Where to save downloaded images\n :logfile: ~/.twitterpunch/activity.log
89
+ \ # Where to save logs\n :viewer: # Use the built-in
90
+ slideshow viewer\n :count: 5 # How many images
91
+ to have onscreen at once\n\n1. Generate a skeleton configuration file\n * `twitterpunch
92
+ --configure`\n1. Edit the configuration file as needed. You'll be prompted with
93
+ the path.\n * If you have your own Twitter application credentials, you're welcome
94
+ to use them.\n1. Authorize the application with the Twitter API.\n * `twitterpunch
95
+ --authorize`\n\n\nUsage \n==========\n\n### Using OS X PhotoBooth\n\n1. Start PhotoBooth
96
+ at least once to generate its library.\n1. Install the Twitterpunch Folder Action\n
97
+ \ * `twitterpunch --install`\n * It may claim that it could not be attached,
98
+ fear not.\n1. Profit!\n * _and by that, I mean take some shots with PhotoBooth!_\n\n####
99
+ Using the remote web app\n\n1. Run the app with `twitterpunch --remote`\n1. Browse
100
+ to the app with http://{address}:8080\n1. [optional] If on an iOS device, add to
101
+ your homescreen\n * This will give you \"app behaviour\", such as full screen,
102
+ and a nice icon\n\n#### Troubleshooting.\n\n1. Make sure the folder action is installed
103
+ properly\n 1. Use the Finder to navigate to `~/Pictures/`\n 1. Right click
104
+ on the `Photo Booth Library` icon and choose _Show Package Contents_.\n 1. Right
105
+ click on the `Pictures` folder and choose `Services > Folder Actions Setup`\n 1.
106
+ Make sure that the `Twitterpunch` action is attached.\n1. Install the folder action\n
107
+ \ 1. Open the `resources` folder of this gem.\n * Likely to be found in
108
+ `/Library/Ruby/Gems/{version}/gems/twitterpunch-#{version}/resources/`.\n 1.
109
+ Double click on the `Twitterpunch` folder action and install it.\n * It may
110
+ claim that it could not be attached, fear not.\n\n\n### Using something besides
111
+ PhotoBooth\n\nConfigure the program you are using for your photo shoot to call Twitterpunch\neach
112
+ time it snaps a photo. Pass the name of the new photo as a command line\nargument.
113
+ \ Alternatively, you could batch them, as Twitterpunch can accept\nmultiple files
114
+ at once.\n\n [ben@ganymede] ~ $ twitterpunch photo.jpg [photo2.jpg photo3.jpg
115
+ photo4.jpg]\n\n\n### Viewing the Twitter stream\n\nTwitterpunch will run on OS X
116
+ or Windows equally well. Simply configure it on the\ncomputer that will act as the
117
+ Twitter display and then run in streaming mode.\n\n [ben@ganymede] ~ $ twitterpunch
118
+ --stream\n\nThere are two modes that Twitterpunch can operate in.\n\n1. If a `:hashtag`
119
+ is defined then all images tweeted to the configured hashtag\n will be displayed
120
+ in the slideshow.\n1. Otherwise, Twitterpunch will stream the `:handle` Twitter
121
+ user's stream and\n display all images either posted by that user or addressed
122
+ to that user. With\n protected tweets, you can have rudimentary access control.\n\nIn
123
+ either mode, tweets that come from any other user will also be spoken aloud.\n\nIf
124
+ you don't want to use the built-in slideshow viewer, you can disable it by\nremoving
125
+ the `:viewer` key from your `~/.twitterpunch/config.yaml` config file.\nTwitterpunch
126
+ will then simply download the tweeted images and save them into the\n`:photodir`
127
+ directory. You can then use anything you like to view them.\n\nThere are currently
128
+ two decent viewing options I am aware of.\n\n* Windows background image:\n *
129
+ Configure the Windows background to randomly cycle through photos in a directory.\n
130
+ \ * Hide desktop icons.\n * Hide the taskbar.\n * Disable screensaver and
131
+ power savings.\n * Drawbacks: You're using Windows and you have to install Ruby
132
+ & RubyGems manually.\n* OS X screensaver:\n * Choose one of the sexy screensavers
133
+ and configure it to show photos from the `:photodir`\n * Set screensaver to a
134
+ super short timeout.\n * Disable power savings.\n * Drawbacks: The screensaver
135
+ doesn't reload dynamically, so I have to kick it\n and you'll see it reloading
136
+ each time a new tweet comes in.\n\n\nLimitations\n===========\n\n* It currently
137
+ requires manual setup for Folder Actions.\n* Rubygame is kind of a pain to set up.\n\n\nContact\n=======\n\n*
138
+ Author: Ben Ford\n* Email: binford2k@gmail.com\n* Twitter: @binford2k\n* IRC (Freenode):
139
+ binford2k\n"
128
140
  email: binford2k@gmail.com
129
141
  executables:
130
142
  - twitterpunch
@@ -152,8 +164,9 @@ files:
152
164
  - views/index.erb
153
165
  - public/touch-icon-ipad-retina.png
154
166
  - public/touch-icon-iphone-retina.png
155
- homepage: http://binford2k.com
156
- licenses: []
167
+ homepage: https://github.com/binford2k/twitterpunch
168
+ licenses:
169
+ - MIT
157
170
  metadata: {}
158
171
  post_install_message: |2+
159
172