2

Gourmet Recipe Managerのデータベース(GNU / Linuxのレシピマネージャー)からレシピを検索するためのデーモンプログラムを作成しました。

私のプログラムは、sqliteデータベースからループを介して各レシピ要素に必要な情報を読み取ります。

(Ubuntu Linux用のこのようなデーモンは「スコープ」と呼ばれます。
このようなスコープは、ubuntuに検索用のより多くのソースを提供します。)

「モデル」には、DBUSを介してUbuntuUnityに配信される情報があります。

理論的には、「モデル」の画像のソースとしてURIを使用できます
が、開発者はIRCでデータURIを使用できないと言っています。

私もそれをテストしましたが、私にとってはうまくいきませんでした。

そこで、画像を/ tmpにキャッシュ(d)します。

これで、すべてのレシピを表示し、タイトルごとに特定のレシピを検索できるようになりましたが、画像の関連付けは単純に間違っています。2.thを検索すると、2.thのレシピが表示されますが、sqliteテーブルの最初のレシピの画像が表示されます。

問題を理解するために、次の2つの画像を示します
。2番目のレシピは最初のレシピの画像を取得します

私はすでにいくつかのIRCルームで助けを求めましたが、誰も私を助けることができませんでした...

どういうわけか、各画像の状態を保存する必要があると思います。

画像をキャッシュする必要のないソリューションがあれば、私は喜んでいます。

完全なソースファイルはここで表示できます:http://bazaar.launchpad.net/~gotwig/lens-cooking/lens-cooking/view/head :/ unity-scope-gourmet

だから、これが私のコードの特定の部分です:

if row[14]:
        open('/tmp/unity-scope-gourmet/icon' + str(i), 'wb').write(row[14])
        model.append(uri, '/tmp/unity-scope-gourmet/icon' + str(i), 1, "text/html", title, comment, uri)
else:
        if os.path.exists('/tmp/unity-scope-gourmet/icon' + str(i)):    os.remove('/tmp/unity-scope-gourmet/icon' + str(i))
        model.append(uri, '', 1, "text/html", title, comment, uri)
4

2 に答える 2

1

キャッシュされた画像のファイル名とレシピの各 ID を組み合わせて問題を解決しました。

コード:

i = row[0]

ここで完全なソリューションを参照してください: http://bazaar.launchpad.net/~gotwig/lens-cooking/lens-cooking/revision/32

于 2012-04-06T13:31:07.183 に答える
1

単純なカウンターエラーを説明しているようです。カウンター「i」をどのように初期化しているかはわかりませんが、カウンターが1つずれている場合、簡単な解決策は、使用する前に1つ追加することです。つまり、次のようになります。

open('/tmp/unity-scope-gourmet/icon' + str(i+1), 'wb').write(row[14])
                                           ^^^
于 2012-04-05T19:21:55.180 に答える