GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

deanishe

alfred-workflow – Alfredのワークフローを書くためのフル機能のライブラリ

投稿日:

Alfredのワークフローを書くためのフル機能のライブラリ http://www.deanishe.net/alfred-workflow/

アルフレッド – ワークフロー

Alfred 2と3のワークフローの作成者のためのPythonのヘルパーライブラリ。

OS X 10.6以降とPython 2.6と2.7(Alfred 3は10.9 + / 2.7のみ)をサポートしています。

Alfred-Workflowは、数分でAPI、アプリケーション、ライブラリからAlfredの高速ワークフローを作成するためのツールを提供することで、ワークフローを作成する際の煩わしさを解消します。

どの言語でも、現在のAlfredのすべての機能を常にサポートする唯一のライブラリです。

特徴

  • ワークフローの自動保存設定API
  • 超シンプルなデータキャッシング
  • ファジィフィルタリング(スマートダイアクリティカルフォールディング)
  • パスワード、APIキーなどの安全な保管のためのキーチェーンのサポート
  • 単純なAlfredフィードバックの生成(JSON / XML出力)
  • 非ASCIIテキストを扱うための入出力デコード
  • Requestsのようなインターフェースを備えた軽量Web API
  • 容易な開発とサポートのためにワークフローのエラーをキャッチして記録する
  • 開発/デバッグを支援する “Magic”引数
  • 事前設定されたログ
  • バックグラウンドタスク(デーモン)を簡単に起動して、ワークフローの応答性を維持する
  • GitHubリリースによるワークフローの更新を自動的にチェック
  • 通知センター経由で通知を送信する
  • ディレクトリをsys.path追加する

アルフレッド3専用機能

  • コードからワークフロー変数を設定する
  • 高度な修飾子
  • Alfred 3のみのアップデート(Alfred 2のインストールを中断しません)
  • スクリプトフィルタの再実行

内容

インストール

:Alfredワークフローを初めてお使いの方は、ドキュメントのチュートリアルをご覧ください。

ピップで

Alfred-Workflowは、次の方法でワークフローに直接インストールできます。

# from your workflow directory
pip install --target=. Alfred-Workflow

同じ方法でチーズショップで利用できる他のライブラリをインストールすることができます。 詳細はpipドキュメントを参照してください。

このようにして、すべてのワークフローの依存関係をワークフローにバンドルすることを強くお勧めします。 そうすれば、それは「うまくいく」でしょう。

ソースから

  1. GitHubのリリースページからalfred-workflow-XXXzipダウンロードしてください
  2. ZIPアーカイブを展開し、 workflowディレクトリをworkflowのルートフォルダ( info.plist場所)に配置します。

ワークフローは次のようになります。

Your Workflow/
    info.plist
    icon.png
    workflow/
        __init__.py
        background.py
        notify.py
        Notify.tgz
        update.py
        version
        web.py
        workflow.py
    yourscript.py
    etc.

あるいは、Alfred-Workflow リポジトリをクローン/ダウンロードし、 workflowサブディレクトリをワークフローのルートディレクトリにコピーすることもできます。

使用法

Alfred-Workflowの使い方の例をいくつか紹介します。

ワークフロースクリプトのスケルトン

ワークフロースクリプトを次のように設定します(組み込みエラー処理またはsys.path変更を使用する場合)。

#!/usr/bin/python
# encoding: utf-8

import sys

# Workflow3 supports Alfred 3's new features. The `Workflow` class
# is also compatible with Alfred 2.
from workflow import Workflow3


def main(wf):
    # The Workflow3 instance will be passed to the function
    # you call from `Workflow3.run`.
    # Not super useful, as the `wf` object created in
    # the `if __name__ ...` clause below is global...
    #
    # Your imports go here if you want to catch import errors, which
    # is not a bad idea, or if the modules/packages are in a directory
    # added via `Workflow3(libraries=...)`
    import somemodule
    import anothermodule

    # Get args from Workflow3, already in normalized Unicode.
    # This is also necessary for "magic" arguments to work.
    args = wf.args

    # Do stuff here ...

    # Add an item to Alfred feedback
    wf.add_item(u'Item title', u'Item subtitle')

    # Send output to Alfred. You can only call this once.
    # Well, you *can* call it multiple times, but subsequent calls
    # are ignored (otherwise the JSON sent to Alfred would be invalid).
    wf.send_feedback()


if __name__ == '__main__':
    # Create a global `Workflow3` object
    wf = Workflow3()
    # Call your entry function via `Workflow3.run()` to enable its
    # helper functions, like exception catching, ARGV normalization,
    # magic arguments etc.
    sys.exit(wf.run(main))

データを30秒間キャッシュする:

def get_web_data():
    return web.get('http://www.example.com').json()

def main(wf):
    # Save data from `get_web_data` for 30 seconds under
    # the key ``example``
    data = wf.cached_data('example', get_web_data, max_age=30)
    for datum in data:
        wf.add_item(datum['title'], datum['author'])

    wf.send_feedback()

ウェブ

JSON Web APIからデータを取得する:

data = web.get('http://www.example.com/api/1/stuff').json()

フォームを投稿する:

r = web.post('http://www.example.com/',
             data={'artist': 'Tom Jones', 'song': "It's not unusual"})

ファイルをアップロードする:

files = {'fieldname' : {'filename': "It's not unusual.mp3",
                        'content': open("It's not unusual.mp3", 'rb').read()}
}
r = web.post('http://www.example.com/upload/', files=files)

警告 :このモジュールはPython 2の標準HTTPライブラリに基づいているため、古いバージョンのOS X / PythonではHTTPS接続を行う際にSSL証明書を検証しません ワークフローで機密性の高いパスワード/ APIキーを使用する場合は、 web.py APIの基になっているリクエストライブラリの使用を強く検討する必要があります

キーチェーンへのアクセス

パスワードを保存する:

wf = Workflow()
wf.save_password('name of account', 'password1lolz')

パスワードを取得する:

wf = Workflow()
wf.get_password('name of account')

ドキュメンテーション

APIドキュメントとチュートリアルを含む完全なドキュメントは、 deanishe.netにあります。

ダッシュdocset

ドキュメンテーションはDash docsetとしても入手できます。

ライセンス、ありがとう

コードとドキュメンテーションは、それぞれMITとCreative Commons Attribution-NonCommercialのライセンスで公開されています。 詳細については、 LICENCE.txtを参照してください。

ドキュメンテーションは、 Sphinxと改変版のAlabasterテーマをbitprophetで使用して生成されました

Alfred-Workflowのよりクーラーなアイデアの多くは、 ZhaocaiのAlfred2-Ruby-Templateに触発されました。

Keychainパーサーは、Jason R. CoombsのPython-Keyringに基づいていました。

貢献する

リストにワークフローを追加する

Alfred-Workflowを使用してワークフローリストにワークフローを 追加する場合は、ドキュメントに追加しないください! このリストは、 Packal.orglibrary_workflows.tsvファイルから機械で生成されます。 あなたのワークフローがPackalで利用可能な場合、次の更新時に追加されます。 そうでない場合は、 library_workflows.tsvに追加し、対応するプルリクエストを送信してlibrary_workflows.tsv

リストは自動更新されていないので、ワークフローをリリースしてこのリストに表示したい場合は、リストの更新を求めるメッセージを開きます。

バグ報告、リクエストを引き出す

ドキュメントを参照しください。

貢献者

Alfred-Workflowを使用したワークフロー

Alfred-Workflowに基づいた多くのワークフローのリスト以下に示します。







-deanishe
-, , , , , , , , , , ,

執筆者: