I waited to share my workflow for automated screenshot cleaning/generation because I wanted to see where Dr. Drang would end up with his script, Cleanbar. Now that he appears to have settled on a solution that requires standalone image files to act as partial status bar replacements, I think it’s the right time for me to share how I produce iPhone and iPad screenshots for MacStories.
The first step is to set up Cleanbar. I don’t need to repeat what Dr. Drang already explained, but to sum up: grab a black status bar, crop it to get two files similar to Drang’s, then run a script to pack those images as strings. Once set up, you’ll be able to a) use Cleanbar to clean single images picked from the Camera Roll with Pythonista and b) integrate it as cleanbar in other scripts to clean status bars programmatically.
As for my needs:
I usually need to combine two iPhone screenshots side-by-side in a single image as you can see in most reviews on this site;
I may or may not need to clean their status bars;
I don’t have to combine iPad screenshots. I only need to resize them and I may or may not have to clean their status bars;
Occasionally, I want to produce a banner with three screenshots (like this one), which can have original or cleaned status bars;
Sometimes, I only need to clean one screenshot out of two;
I always need to upload the final image to a Dropbox folder, which is monitored by Hazel.
And, because I’m not an animal, I wanted to automate all of this. The scripts that you’ll find below are the result of late night tweaking and lots of tests; they probably aren’t the most elegant or “Pythonic” way to handle this kind of image generation, but they work for me and they make me save several minutes every day. I haven’t been generating review screenshots manually in months, and they’re more flexible than my old workflow based on Keyboard Maestro.
Pythonista 1.4, available today on the App Store, is the biggest update to Zorn’s app to date. It includes a new UI for iOS 7 (the app is also iOS 7-only starting today), new modules and enhancements to existing ones, and, more importantly, it doubles down on iOS integration by bringing native support for contacts, location, and Open In. (more…)
When I write on my iPad mini, I often need to look up and reference price of apps that I already own. That's a surprisingly hard thing to do on an iOS device, so I decided to remove the annoyance caused by this problem with an Editorial workflow. I call it “Get App Price”.
If you own an app, searching for it in the iOS 7 App Store won't show you the price information alongside the app's icon and description – you'll only get an Open or Install button. Unlike the Mac App Store, there is no separate pricing field in the app information at the bottom of the screen, which usually forces me to go to a developer's website to find out what the price of an app is.1 There wouldn't be any problem if Apple allowed Safari to open iTunes web previews without redirecting them straight to the App Store, which is what they do on OS X. I have tried to force Safari to open web previews, and I even downloaded browsers that can set a modified user agent string to trick iOS into thinking they're desktop web browsers worthy of a web preview – eventually, the App Store app always opened, displaying no price.
I set out to create a simple workflow to fetch an app's title and price directly from iTunes with no clipboard import or other middleman. I later found out that you can tap on the “Related” tab in the App Store or gift an app to view its price, but I had already created a workflow that's faster than opening the App Store and tapping a bunch of buttons just to get a price. I'm a free man, and I deserve my own App Store lookup solution.2
On last week’s episode of The Prompt, Federico went off on a rant about ugly iOS screenshots. He wasn’t complaining about the apps themselves being ugly, he was chastising those of us who post screenshots with status bars showing inconsistent times, signal strengths, and battery levels. And Lord help you if your battery icon is in the red.
His recommendation was Status Magic, a Mac app that cleans up the status bars in your iOS screenshots and makes them uniform. It looks like a nice app, but my thoughts gravitated toward a script using the Python Imaging Library. Why would I write a script when an inexpensive app is available?
Fixing iOS status bars is one of the reasons I need to use my Mac with Status Magic because there is no similar app on iOS. I am playing around with Dr. Drang’s script, which can be easily adapted to Pythonista and integrated with the app’s photos module for Camera Roll integration. Putting together status bar replacement images that match Apple’s ones is a bit of work (it’s tricky to get the fonts right, but now I’m trying this) and they won’t produce good results with blurred status bars, but those are the same inconveniences that iOS 7 brought to Status Magic anyway.
I’m looking forward to seeing what tweaks and improvements the Doctor will make to his script. Once I have a good solution for Pythonista (which I already use to combine screenshots on iOS), my iOS writing and editing workflow for text and screenshots will be largely similar to the OS X one (I still need a good uploader for Cloud Files and an iOS version of this).
I’ve made 3 workflows; two for the authentication (Pocket Auth 1 & 2), and one that fetches a random article from the user’s unread queue and opens it in the Editorial browser. The Pocket authentication only needs to run once.
If you’re an App.net Developer, you can post to App.net directly from Editorial. I integrated this workflow into Federico Viticci’s Post to WordPress workflow, to post new articles to App.net in addition to Twitter.
Side note: I’m keeping track of Editorial workflows I find over at this Pinboard tag.
Ole Zorn knows how to push the boundaries of iOS. His latest app, Editorial for iPad, redefines the market of text editors for iOS, and, in many ways, sets a new standard for iOS automation and desktop-class apps. Editorial makes me want to work from my iPad.
Before I get to the details, allow me to offer some backstory to properly contextualize Editorial and the process that led me to its launch today. I have been testing Editorial for the past eight months (since late November 2012, when I received the first beta build), and I’ve seen the app go through numerous iterations and changes. At one point I wasn’t even sure Editorial would come out anymore. Editorial has become the essential part of my iOS workflow, and it only seems fair to have a proper introduction.
Here’s my modified version that uses Pythonista’s notification module to re-run the script every 6 hours by firing a local iOS notification on your iPhone or iPad (it assumes the script is named “DevCenter” in Pythonista).
I don’t like it when third-party apps or services force me to share links to articles or webpages using their own custom shortened links. I understand the appeal of personalized short domains – after all, we tweet mcstr.net links with the @macstoriesnet account – as they can provide analytics to track clicks, can save characters, and, at least in theory, they “look cool”. However, I’ve been long considering the idea of dropping our mcstr.net links, but I think the issue is worse (and more annoying) for apps and services that don’t tweet links to their own content (like we do) but that override others’ links with different domains. An example is Pocket, which gives you the clean, original URL when you choose the “Copy Link” action from the sharing menu, but that instead returns pocket.co links when sending text to Drafts (which I do often). I’ve grown tired of this practice (in Pocket and other services), and I’ve put together a workflow based on a Python script that allows me to easily resolve short links without having to open the browser and tap on multiple menus. (more…)
ofexport is a command line utility that reads and exports the task database from the OmniFocus application.
While similar to Robin Trew’s export utility, ofexport has a series of extra options worth trying out. I’m particularly intrigued by the control you can have on date and calendar filters, as well as regular expressions. I constantly check on my OmniFocus todos through the calendar, so I’ll make sure to test ofexport. [via Sven Fechner]