【python】pythonでApplescript、引数(args)はどう渡すのか?
昨日、2時間悩んだのでメモっておく。
http://stackoverflow.com/questions/2940916/how-do-i-embed-an-applescript-in-in-a-python-script
のサイトの下に、
from subprocess import Popen, PIPE def run_this_scpt(scpt, args=[]): p = Popen(['osascript', '-'] + args, stdin=PIPE, stdout=PIPE, stderr=PIPE) stdout, stderr = p.communicate(scpt) return stdout #Example of how to run it. run_this_scpt("""tell application "System Events" to keystroke "m" using {command down}""") #Example of how to run with args. run_this_scpt(''' on run {x, y} return x + y end run''', ['2', '2'])
とあったので、やってみたが、エラーとなった。調査、試行錯誤すると、上記はpython2系の場合は動作する。
私の環境は3.3。どうするかというと、
stdout, stderr = p.communicate(scpt) の部分を
stdout, stderr = p.communicate(bytes(scpt, 'UTF-8')) とすると上手くいきました〜
【AppleScript】MavericksでSecurity API failed with error -60008
弊社製品、PDF検版ツールBeforeAfterは、AppleScriptで作られていて、10.5〜10.8まで、問題なく動作しています。ところが、10.9 Mavericksで動作させたところ、問題が発生しました。
4, 5ページの処理では問題ありませんが、8ページ位で処理で止まってしまいました。
調査をすると、do shell scriptの連続処理の箇所で、8ページ程度処理するとSecurity API failed with error -60008 が発生します。
この発生タイミングがよく分かりません。少し修正し、30ページの処理が上手く行き、これで大丈夫だろうと思って、160ページの処理を行うと、また発生するといった具合です。いろいろと試行錯誤を繰り返しました。
処理途中の状況を見るため、あるdo shell scriptの前に、display dialog を入れると、なぜかこのdo shell scriptのコマンドでエラーは発生しなくなりました。
いちいちダイアログを表示させるわけにもいかないので、どうしたものかと考えました。delay 1 ではだめでした。
で、シスログを書き出すよう、下記のようなコマンドを、do shell scriptの前に挿入しました。
do shell script “logger -p user.notice -t BeforeAfter @message”
これで、エラーが発生しなくなったのです。1000ページの処理を行っても問題が出なくなりました。
何故、Mavericks で Security API failed with error -60008 が発生するようになったのか? 何故 display dialog やシスログで回避できるのか? 原因は不明なのだが、とにかくこれで乗り切ったので報告しておきます(この調査〜対策まで3日もかかりました〜)。
【python】弊社ツールサイトにopenCVポータブルを登録しました
弊社のツールサイト、www.web-cte.co.jp/tools/ にLIB_openCVという名称で登録しました。
取得可能となっております。OS10.7〜10.9で動作を確認しています。
OpenCV-2.4.2.tar と 動作させるAppleScriptを同梱しています。
【EPUB】KADOKAWA-EPUB制作仕様フォーマットで1ソースマルチユースができない!
現在弊社の作成するEpubは、電書協フォーマットには準じていない。
ただし、Kindle、kobo、iBooksに対して1ソースマルチユースのepubを制作しているのだ。
電書協フォーマットが業界共通フォーマットになりつつあるので、切り替えるタイミングを常に計っているのだが、今回、KADOKAWA-EPUB制作仕様が公開されたので、これだ!と思いトライしてみた。
結果は、kobo端末で、表紙など画像が小さく表示されてしまった。
KADOKAWA-EPUB制作仕様の作成者に問い合わせてみたが、その通りのようだ。残念だ。
通常の電書協フォーマットでは、iPhone5の16:9の縦長画面だと、画像がセンタリングされないという問題がある。
MCBookではセンタリングできるような電書協フォーマットを書き出すのだが、Kindle Fireで表紙はセンタリングされるが、表紙以外の画像ページは白紙出力になる。うーん….。
現在の問題点がクリアされないと、電書協フォーマットに切り替えられないなー。
【python】openCVをportable化する
OS10.7〜10.9のpythonは2.7でnumpyもインストール済であった。
なので、openCVをportable化して、どのOSXからでもopenCVを使えるようにしたいと思った。
AppleScriptで、コーディング0行で、appを作ります。LIB_OpenCV.appとします。
アプリケーションフォルダの直下に配置します。
Contentsフォルダの下に、Libraryフォルダを作り、そこにopenCVをインストールします。
cmakeのパラメータは、こんな感じ
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/Applications/LIB_OpenCV.app/Contents/Library \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D PYTHON_LIBRARY:FILEPATH=/System/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib \.
PREFIXを/Applications/LIB_OpenCV.app/Contents/Libraryにしてるだけです。
さて、実行してみます。デスクトップにOpenCV-2.4.2を解凍したフォルダを置き、
その中のsamples > python2 > edge.pyを実行します。
AppleScriptは、こんな感じ
set cmnd1 to “export PYTHONPATH=/Applications/LIB_OpenCV.app/Contents/Library/lib/python2.7/site-packages; ”
set cmnd2 to “export PKG_CONFIG_PATH=/Applications/LIB_OpenCV.app/Contents/Library/lib/pkgconfig:$PKG_CONFIG_PATH; ”
set cmnd3 to “export DYLD_FALLBACK_LIBRARY_PATH=/Applications/LIB_OpenCV.app/Contents/Library/lib:$DYLD_FALLBACK_LIBRARY_PATH; ”
set cmndPy to “python ” & “/Users/yukio/Desktop/OpenCV-2.4.2/samples/python2/edge.py”
set theCmnd to cmnd1 & cmnd2 & cmnd3 & cmndPy
do shell script theCmnd
実行するとこんな感じ
作った、LIB_OpenCV.appは、弊社ツールサイトからダウンロードできるようにします(ちょっと待ってくださいね)
実はこうしてポータブル化したものに、ImageMagick、mecab、OpenJTalk、xpdfがあります。
これらも近々、弊社ツールサイトからダウンロードできるようにします(ちょっと待ってくださいね)
【python】openCVをOSX10.6にinstallする
openCVのインストール、いろいろと手こずりましたが、なんとかできましたのでメモッておきます。
まず、基本はこのページの通りです
http://www.guidefreitas.com/installing-opencv-2-4-2-on-mac-osx-mountain-lion-with-python-support
私の環境としは既に
Xcode、Command Line Toolsはインストール済です。
openCVは、依存するライブラリが有りますが既にほぼ揃えています。
ハマったことは、
最新のopenCV、2.4.6ではmake時にエラーが出る
CMakeのgui版だと、UIで設定したパラメータの通りに、configureのパラメータが生成されませんでした。
そこで、openCV2.4.2を取得
CMakeもgui版を止め、コマンドラインから出来るようにしました。
手順としては
Python2.7.3を設定した
numpyのモジュールをインストールした
openCV2.4.2を取得した
openCV2.4.2を下記のようにしてインストールした
cmakeのビルドパラメータは以下の様にする
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_EXAMPLES=ON \
-D PYTHON_LIBRARY:FILEPATH=/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib
cmake後に出力されるレポートで、PYTHONのライブラリが上記のようになっていることを確認する。
makeして
sudo make install
echo “export PYTHONPATH=/usr/local/lib/python2.7/site-packages/:$PYTHONPATH” >> ~/.bash_profile
と環境変数を設定して
ターミナルから、~$ python import cv2でエラーが出なければOKです。
【EPUB】固定レイアウトEpubを作ってみた―その後
書かなきゃなーと思いつつ、日にちが経ってしまいました。
以前、固定レイアウトEpubの記事で、”com.apple.ibooks.display-options.xml”ファイルを作って、iBooks用のEpubが出来た旨を書きました。(https://www.web-cte.co.jp/kozakuralab/?p=1439)
しかし、その後、Epubを作っていくうち、このファイルは不要になったということが散見されていて、気になっていました。
調べると、現在では、com.apple.ibooks.display-options.xmlファイルは不要で、代わりに、
<meta property=”ibooks:fixed-layout”>true</meta>
をメタ情報に記述すれば大丈夫になっています。
前回の説明で、
prefix=”ibooks: http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/#”
と#がありましたが、それも取ってください。
後、iBooksは画像サイズが200万ピクセルを越えてはいけなかったのですが、これもレティーナディスプレイのためか、最大値の制限が変わったようです。
現在は、320万ピクセルとなっています。
【EPUB】iBooksの固定レイアウトでportrait、landscapeの混在はできない
固定レイアウトのEpubで、グローバルの設定では、landscapeで、
一部のページをportraitにできるかという問い合わせが入った。
Epub3の仕様では、できるのは知っていたが、実際はどうなの? と
いうことで試してみた。
結果は混在はできなかった。
その後さらに調べると、海外のサイトにも、こんな情報があった。
http://apex.infogridpacific.com/df/epub3packaging-flo.html
これによると、Readiumはできるとなってますが、
properties=”page-spread-left”;
properties=”rendition:page-spread-center”;
properties=”page-spread-right”;
もiBooksでは動かないとなっている。2012/11の情報だが。
【EPUB】Javascriptを難読化する
インタラクティブな固定レイアウトEpubを試作したのだが、
お客様のiPadで見てもらうことになったとき、epubを解凍してしまえば、
Javascript、CSSが丸見えになります。
マーケットに出せば、DRMかかるのだろうけど、どうしようかと思ってました。
いろいろとググったところ、Javascriptを暗号化はできなそうでしたが、難読化はできそうでした。
試したところ、ぱっと見てソースを推測できないので、これでいこうと思っています。
下記を参考にしました。
packer
http://dean.edwards.name/packer/
YUI Compressor
http://www.refresh-sf.com/yui/#output
UglifyJS
http://marijnhaverbeke.nl/uglifyjs
(厳密に言えば、難読化したファイルも旧に戻せるそうです)
記事投稿日
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
« 9月 | ||||||
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |