Mar
13
2013

pythonista

In January, I tried to put together a bookmarklet to send the webpage currently open in Google Chrome for iOS to Apple's Safari. That turned out to be a surprisingly complex effort as Google didn't think offering an “Open In Safari” option would be a good idea, and the app's URL scheme produced some interesting results when opening and closing Chrome.

I was reminded of the bookmarklet this morning by reader @CNWLshadow, and I realized that I never posted the solution I settled with. It consists of a browser bookmarklet and a Pythonista script, and it works with just one tap.

(more…)

Mar
8
2013

Launch Center Pro 1.1

Posted by at

LCP

Released in December 2011, App Cubby’s Launch Center re-ignited interest in iOS URL schemes – shortcuts to automate communication between apps and get specific things done faster with less manual tapping and interactions. Its direct sequel, Launch Center Pro, was released in the summer of 2012 and doubled down on the entire idea of automating iOS tasks by providing a “Home screen for your actions” to allow users to better and more visually organize their shortcuts.

Launch Center Pro 1.1, released today, focuses on improving three key aspects of Launch Center Pro: native in-app actions, the Action Composer, and TextExpander support in URLs. (more…)

I don’t normally cover jailbreak tweaks here at MacStories, but I’m intrigued by ActivityAction after reading Jeff Benjamin’s preview over at iDownloadBlog.

ActivityAction is a an extension of Ryan Petrich’s Action Menu – one of my favorite tweaks when I had a jailbroken device. ActionMenu extends Apple’s Copy & Paste popup menu with additional actions and services to deal with selected text or an app’s content area. ActivityAction adds a button that lets you set up UIActivity-like actions based on app’s bundle identifier and its URL scheme. (more…)

I use Evernote on a daily basis, but there’s no easy and quick way to create new notes and receive their shared URLs on iOS. While I tend to prefer plain text files, Evernote notes are quite useful when I need to share rich text (containing formatting and inline images) with someone else. Sharing via the official Evernote app takes too long[1], and I don’t like the UI of other Evernote clients.

Yesterday, Pythonista developer Ole Zorn posted an installer script for the Python Evernote SDK. By putting together all the necessary dependencies, he created an installer script that will create an “evernote-sdk” sub-folder in Pythonista 1.3; with that, you’ll be able to access the entire Evernote API to create and manage notes – all while taking advantage of the uniqe iOS-related features of Pythonista.

Inspired by Ole’s demoes and the snippets posted by Brett Kelly in the past weeks, I created a script that does exactly what I need: it lets me enter text to save it in an Evernote note that will be shared publicly. If triggered by an app like Drafts or Launch Center Pro, the script will take the text sent by those apps. If formatted in Markdown, the text will be converted to HTML before saving it to Evernote. (more…)

Feb
26
2013

Notesy 2.3

Posted by at

Notesy23

I've always liked Notesy. When I compared my favorite text editors for iOS last year, I called it the app “for everyone” that was able to meet all the common requirements of a Dropbox-enabled, Markdown-ready text editor for the iPhone and iPad.

Giant Yak Software took over Notesy's development a few months ago, and today they released version 2.3 of the app.

(more…)

DraftsMessages

Last night, Tweetbot for iOS was updated with support for the Twitter 1.1 API, which, among various requirements, includes the need of linking a tweet’s timestamp – the date and time when it was sent – to its unique URL on twitter.com. In Tweetbot, you can now open the tweet detail view and tap on the timestamp to automatically open the Twitter website in your default browser; in terms of interaction, I like this change because it lets me open tweets in Google Chrome with just one tap.

In thinking about the update last night, I realized that:

  • My team and I use iMessage for daily communication;
  • The majority of URLs we share are Twitter URLs;
  • We all use Tweetbot on iOS and OS X;
  • Easier browser access means easier bookmarklet triggering;
  • Drafts can access iMessage.

And I concluded that:

  • I could chain every piece of the puzzle together;
  • Hopefully somebody else will find it useful and adapt the workflow to other similar scenarios.

Therefore, I created a browser bookmarklet, a Python script, and a Drafts action to automate the entire process and demonstrate how you can convert Twitter URLs to tweetbot:// URLs and send text from Pythonista to Drafts.

As usual, I am posting the following workflow as a proof of concept that you can modify and adapt to your needs. For instance, you can change the action that is triggered in Drafts, the x-success parameter that will be triggered, or the way Twitter links are converted to Tweetbot-specific URLs.

(more…)

iOS YouTube Downloader with Pythonista

Useful script created by “pudquick” on the Pythonista forums:

Browse to http://m.youtube.com in Mobile Safari, view a video that you like (press Stop if it starts playing, you need to be looking at the page – not the video actually playing), then click on “Bookmarks” and select the bookmarklet that you created.

This will launch my script, which will pull the URL of the page you were looking at as an argument, parse it, figure out the direct download URL for the .mp4 video file, then open iDownloads directly to that URL to start downloading it.

As pudquick says, third-party YouTube clients with a “download” functionality are usually removed from the App Store as Google doesn't allow downloading video files from the service. However, by using Pythonista to crawl the webpage and find the direct .mp4 link of a video, pudquick managed to put together a handy solution to go from your web browser to Pythonista and then directly to iDownloads to start downloading the .mp4 file.

However, I don't use iDownloads – I prefer Readdle's Documents and good.iWare's GoodReader. Replacing iDownloads with your favorite file manager is very easy: in the penultimate line of the script, replace the iDownloads://URL with the one of the app you want to use (the URL of the .mp4 will be appended to it). Unfortunately, Documents doesn't seem to be able to download .mp4 files in this way, but I had no problems with GoodReader. Simply use ghttp://to forward the .mp4 file to GoodReader and start downloading it automatically.

Make sure to check out pudquick's explanation of the script and bookmarklet here. For our previous coverage of Pythonista, check out our tag page and my original review.

Alex Guyot Chains 5 Apps with Drafts

As I expected, people have started experimenting with chaining apps and services using Drafts, and Alex Guyot quickly beat me in chaining 5 apps. From his explanation of the workflow:

Follow the bookmark in Chrome and it will take the URL of the webpage you are on, send it to Drafts as a draft, upload it to Dropbox, send it to Due (where you choose a reminder time for it to remind you), take you back to Drafts, send you to Instapaper (Where you choose to save the link to Instapaper), then send you back to Chrome.

He also posted a quick video showing the workflow in action on his iPad. I like how, unlike me, he chained each action as an x-success parameter of the previous one.

As I've argued on multiple occasions here on the site, URL schemes are certainly a stopgap solution to a problem – better inter-app communication on iOS – that I wish Apple will tackle in the near future. However, that doesn't mean people can't get real work done with URL schemes and apps today. Looking ahead, I can only imagine new possibilities of iOS automation based on URL schemes that, however, abstract the need of manually building URLs from the end user's workflow – using a more Automator-like interface to visually represent actions. And, who knows, perhaps in a future version of iOS “switching” between apps won't even be required anymore, as “parts” of other apps will be linked to each other using something like XPC.

Feb
10
2013

A few weeks ago, I took a look at the automation possibilities opened by Drafts, Agile Tortoise’s multi-purpose text app. In the article, I mentioned how a bug prevented Drafts from “linking to itself” more than once:

Therefore, my idea for cross-posting was: I can link to Drafts itself, and if the first action is successful, I can link to Drafts itself again. Essentially, I wanted to leverage the built-in App.net and Twitter actions to avoid the use of any third-party app. Unfortunately, there’s a bug in the current version of Drafts that doesn’t make that kind of action work.

With an update to Drafts released yesterday, Greg Pierce has brought various improvements to the app, including support for more customizable timestamps and dates using strftime, date and time tags for file names and URL actions, and a new way to encode strings with curly brackets.

Seemingly minor, the option to more easily URL encode strings is actually a very welcome addition: like in the latest Mr. Reader, instead of forcing the user to encode a URL into a longer string, you can simply put a URL inside {{ }} and let Drafts take care of encoding it. It means I can now experiment with building more complex workflows that contain actions for more external apps and, more importantly, for “sequential” tasks in Drafts itself. Easier encoding means we construct URLs that will tell Drafts “do this, and then do that” in a single workflow.

Those who follow me on Twitter know that I’ve been trying since yesterday to see how many apps I could chain together in a workflow, mainly out of curiosity and as a “proof” of concept. First, I tweeted about a Mr. Reader -> Drafts -> Poster workflow that would take selected text from an article, convert its Markdown to HTML, and then send it to Poster; the workflow consisted of three apps chained together, but I knew I could try to accomplish something a bit more ambitious. I kept on experimenting with Drafts URLs, and eventually I managed to build a single workflow with 3 apps and 4 different tasks involved. I’m posting it here for two reasons: a) I believe it’s a quite useful workflow; and b) it can serve as an example of what Drafts can do when you understand how to properly link multiple apps together. (more…)