twitterpunch 0.0.7 → 0.0.8

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