必要条件
したがって、レンズを作成するには、次のものが必要です。
* Ubuntu 12.04 LTS - Ubuntuを入手 ›
* すばやく - すぐに 無料でインストール ›
* クイックレンズテンプレート- クイックレンズテンプレートの設定 ›
レンズ作り
まず、ウィキペディアの記事を検索するレンズを作成しましょう。 レンズの作成は、プロジェクトの作成という簡単なステップから始まります。 これを行うには、Ctrl + Alt + Tを押し、表示されるターミナルウィンドウで次のコマンドを入力します。
quickly create unity-lens wikipedia cd wikipedia
さあ始めましょう!
quickly edit
このコマンドは、デフォルトのテキストエディターで3つのファイルを開きます。興味があるのは__init__.pyのみです
最初に必要なのは、メタクラスです。 レンズの説明が含まれています。 参照:
class Meta: name = 'Wikipedia' description = 'Wikipedia Lens' search_hint = 'Search Wikipedia' icon = 'wikipedia.svg' search_on_blank=True
まず、単純なレンズを作成するため、すべてをここで変更しないでおくことができます。
レンズには、さまざまなタイプの結果を視覚的に分離するためのカテゴリが必要です。 ウィキペディアの場合、必要なカテゴリは1つだけです。これを「記事」と呼びます
Metaクラスの後に、次のコード行があります。
example_category = ListViewCategory("Examples", 'help')
必要に応じて変更します。
*まず、カテゴリ名をarticles_categoryに変更します
*次に、カテゴリ内の結果の異なる表示のために、ListViewとIconViewの選択があります。 選択:ListView
*また、カテゴリの表示名を指定する必要があります。 シンプル:記事
*最後に、カテゴリのアイコンを選択する必要があり、システムワークスペースからそれを取得します。つまり、dialog-information-symbolic
その結果、次の行が得られます。
articles_category = ListViewCategory("Articles", "dialog-information-symbolic")
レンズの内部アーキテクチャの準備が整いました。現在、検索の設計を開始しています。
標準テンプレートコードは、結果がどのようにレンズに収まるかを示しています。
def search(self, search, results): # TODO: Add your search results results.append('https://wiki.ubuntu.com/Unity/Lenses/Singlet', 'ubuntu-logo', self.example_category, "text/html", 'Learn More', 'Find out how to write your Unity Lens', 'https://wiki.ubuntu.com/Unity/Lenses/Singlet') pass
...しかし、ウィキペディアに聞いてみたい...
ウィキペディア検索
検索用に設計された新しい関数を作成しましょう。 次のようにします。
関数wikipedia_queryを呼び出します。 ユーザーからの検索文字列を引数として受け取ります。 また、ニーズに合わせてさらに2つのPythonモジュールを使用します。HTTP要求をネットワークに送信するurllib2と、Wikipediaからのデータを処理するsimplejsonです。
ファイルの最初に、importコマンドを使用して必要なモジュールを接続します
import urllib2 import simplejson
次に、メインクラスのWikipediaLens(SingleScopeLens)クラスにwiki変数を追加します。これにより、コードが簡素化されます。
wiki = "http://en.wikipedia.org"
そして関数を作成する
def wikipedia_query(self, search):
searchは、ユーザーが検索ボックスに入力する文字列です。 ウィキペディアを送信する前に少し調整し、スペースを「|」に置き換える必要があります。そうしないと、Vikaはリクエストを理解できません。
search = search.replace(" ", "|")
Wikipedia APIを使用してリクエストを作成します。
url = ("%s/w/api.php?action=opensearch&limit=25&format=json&search=%s" % (self.wiki, search))
そして、jsonにあるresults変数に結果を出力します。これには、simplejsonモジュールを使用します
results = simplejson.loads(urllib2.urlopen(url).read())
デバッグ出力を追加して、実行内容を理解します。
print "Searching Wikipedia for %s" % (search)
そして、それに応じて結果を出力することにより、関数の作業を終了します
return results[1]
wikipedia_query関数はほぼ見た目が似ていますが、try(ネットワークエラー、結果など)を防ぐためにtryを追加する必要もあります。 これを行うために、情報メッセージと空の出力を作成します。
def wikipedia_query(self,search): try: search = search.replace(" ", "|") url = ("%s/w/api.php?action=opensearch&limit=25&format=json&search=%s" % (self.wiki, search)) results = simplejson.loads(urllib2.urlopen(url).read()) print "Searching Wikipedia" return results[1] except (IOError, KeyError, urllib2.URLError, urllib2.HTTPError, simplejson.JSONDecodeError): print "Error : Unable to search Wikipedia" return []
次に、新しく作成された関数を既存の検索に接続する必要があります
def search(self, search, results): for article in self.wikipedia_query(search): results.append("%s/wiki/%s" % (self.wiki, article), "http://upload.wikimedia.org/wikipedia/commons/6/63/Wikipedia-logo.png", self.articles_category, "text/html", article, "Wikipedia Article", "%s/wiki/%s" % (self.wiki, article)) pass
これは次のように機能します。検索クエリはwikipedia_queryに分類され、Wikipediaに送信され、JSONの応答はwikipedia_queryに返され、 検索に渡されてレンズに表示されます。 results.appendで何が起こっているかを理解するには、レンズの出力を確認することが非常に重要です。 テンプレートによってUnityに渡されます:
results.append (url, icon, category, mime-type, text, comment, drag and drop url)
これですべて完了です!
レンズ使用
今、最も待望の瞬間が来ました-私たちはレンズを使用し始めています!
ターミナルでコマンドを入力します。
sudo quickly install quickly run
レンズの取り付け
レンズのテストとデバッグが正常に完了したら、システムに永久的にインストールできます。 これを行うために、その内部構造について簡単に説明します。 レンズの操作には、少なくとも3つのファイルが必要です。レンズに関する基本情報を含む.lensファイル。 すべての作業を実行する実行可能ファイル(デーモン)と、レンズ名と実行可能ファイルへのパスを含む.serviceファイル。 それらをシステムにインストールするには、setup.pyファイルがプロジェクトフォルダーに作成されました
インストールには次のコマンドを使用しました。
chmod 777 setup.py ./setup.py build sudo ./setup.py install
参照資料
* レンズの構造とその作成に関する詳細な記事を読む (rus。)
* Unityおよび関連テクノロジーの詳細 。
* Unityレンズの詳細をご覧ください 。
* Unity API
* ウィキペディアopensearch API
* このガイド用に作られたレンズ
* ダッシュ用のレンズの選択