Twitterpunch is designed to work with PhotoBooth and OS X Folder Actions.
When this script is called with the name of an image file, it will post the
image to Twitter, along with a message randomly chosen from a list and a
specified hashtag.
If you call the script with the --stream
argument instead, it will listen
for tweets to that hashtag and download them to a specified directory. If
the tweet came from another user, Twitterpunch will speak it aloud.
Typically, you'll run one copy on an OSX laptop with PhotoBooth, and a separate
copy on another machine (either Windows or OSX) for the viewer. You can also use
a mobile device as a remote control, if you like. This will allow the user to
enter a custom message for each photo that gets tweeted out, if they'd like.
Configuration
Configure the program via the ~/.twitterpunch/config.yaml
YAML file. This file
should look similar to the example below.
---
:twitter: # twitter configuration
:consumer_key: <consumer key>
:consumer_secret: <consumer secret>
:access_token: <access token>
:access_token_secret: <access secret>
:messages: # list of messages to attach
- Hello there # to outgoing tweets
- I'm a posting fool
- minimally viable product
:hashtag: Twitterpunch # The hashtag to post and listen to
:handle: Twitterpunch # The twitter username to post as
:photodir: ~/Pictures/twitterpunch/ # Where to save downloaded images
:logfile: ~/.twitterpunch/activity.log # Where to save logs
:viewer: # Use the built-in slideshow viewer
:count: 5 # How many images to have onscreen at once
:remote:
:timeout: 45 # How long the button should remain disabled for
:apptitle: dslrBooth # The photo booth application title
:hotkey: space # Which hotkey to send to trigger a photo
- Generate a skeleton configuration file
- Edit the configuration file as needed. You'll be prompted with the path.
- If you have your own Twitter application credentials, you're welcome to use them.
- Authorize the application with the Twitter API.
Usage
Using OS X PhotoBooth
- Start PhotoBooth at least once to generate its library.
- Install the Twitterpunch Folder Action
twitterpunch --install
- It may claim that it could not be attached, fear not.
- Profit!
- and by that, I mean take some shots with PhotoBooth!
Note: if the folder action doesn't seem to work and photos aren't posted to
Twitter, here are some troubleshooting steps to take:
- Run Twitterpunch by hand with photos as arguments. This may help you isolate
configuration or authorization issues.
- Correct the path in the workflow.
which twitterpunch
- Edit the Twitterpunch folder action to include that path.
Using the remote web app
Configure the remote web app using the :remote
hash in config.yaml
. You can
usually find the title of the app using system_profiler -detailLevel full SPApplicationsDataType
and grepping for the name or path to the .app
.
In this example, the title is dslrBooth.
[ben@ganymede] ~ $ system_profiler -detailLevel full SPApplicationsDataType | grep -B8 dslrBooth.app
dslrBooth:
Version: 2.9
Obtained from: Identified Developer
Last Modified: 10/14/17, 9:50 PM
Kind: Intel
64-Bit (Intel): Yes
Signed by: Developer ID Application: Hope Pictures LLC (MZR5GHAQX4), Developer ID Certification Authority, Apple Root CA
Location: /Applications/dslrBooth.app
- Run the app with
twitterpunch --remote
- Browse to the app with http://{address}:8080
- [optional] If on an iOS device, add to your homescreen
- This will give you "app behaviour", such as full screen, and a nice icon
Troubleshooting.
- Make sure the folder action is installed properly
- Use the Finder to navigate to
~/Pictures/
- Right click on the
Photo Booth Library
icon and choose Show Package Contents. - Right click on the
Pictures
folder and choose Services > Folder Actions Setup
- Make sure that the
Twitterpunch
action is attached.
- Install the folder action
- Open the
resources
folder of this gem.
- Likely to be found in
/Library/Ruby/Gems/{version}/gems/twitterpunch-#{version}/resources/
.
- Double click on the
Twitterpunch
folder action and install it.
- It may claim that it could not be attached, fear not.
Using something besides PhotoBooth
Configure the program you are using for your photo shoot to call Twitterpunch
each time it snaps a photo. Pass the name of the new photo as a command line
argument. Alternatively, you could batch them, as Twitterpunch can accept
multiple files at once.
[ben@ganymede] ~ $ twitterpunch photo.jpg [photo2.jpg photo3.jpg photo4.jpg]
You can manually install the Folder Action, or you can follow the automated
install process after tweaking the workflow slightly.
- Identify where the app stores the resulting image files.
- Edit the Twitterpunch folder action to include that path.
- Follow the steps above to install the Folder Action.
Twitterpunch will run on OS X or Windows equally well. Simply configure it on the
computer that will act as the Twitter display and then run in streaming mode.
[ben@ganymede] ~ $ twitterpunch --stream
There are two modes that Twitterpunch can operate in.
- If a
:hashtag
is defined then all images tweeted to the configured hashtag
will be displayed in the slideshow. - Otherwise, Twitterpunch will stream the
:handle
Twitter user's stream and
display all images either posted by that user or addressed to that user. With
protected tweets, you can have rudimentary access control.
In either mode, tweets that come from any other user will also be spoken aloud.
If you don't want to use the built-in slideshow viewer, you can disable it by
removing the :viewer
key from your ~/.twitterpunch/config.yaml
config file.
Twitterpunch will then simply download the tweeted images and save them into the
:photodir
directory. You can then use anything you like to view them.
There are currently two decent viewing options I am aware of.
- Windows background image:
- Configure the Windows background to randomly cycle through photos in a directory.
- Hide desktop icons.
- Hide the taskbar.
- Disable screensaver and power savings.
- Drawbacks: You're using Windows and you have to install Ruby & RubyGems manually.
- OS X screensaver:
- Choose one of the sexy screensavers and configure it to show photos from the
:photodir
- Set screensaver to a super short timeout.
- Disable power savings.
- Drawbacks: The screensaver doesn't reload dynamically, so I have to kick it
and you'll see it reloading each time a new tweet comes in.
Limitations
- It currently requires manual setup for Folder Actions.
- Rubygame is kind of a pain to set up.
Contact