# 2024-09-01
Table of Contents
2024-09-01
Install uv
❯ curl -LsSf https://astral.sh/uv/install.sh | shdownloading uv 0.4.1 aarch64-apple-darwininstalling to /Users/noriyo_tcp/.cargo/bin uv uvxeverything's installed!
To add $HOME/.cargo/bin to your PATH, either restart your shell or run:
source $HOME/.cargo/env (sh, bash, zsh) source $HOME/.cargo/env.fish (fish)
❯ vi ~/.bashrc
# やっぱ一旦消したrm ~/.cargo/bin/uv ~/.cargo/bin/uvx
homebrew で入れる
brew install uv
# こういうエラーが出たunknown command "attestation" for "gh"
brew updatebrew install uv
❯ uv --versionuv 0.4.1 (Homebrew 2024-08-30)
noriyo_tcp@MacBook-Air ~/MyPlayground ❯ uv init kindle_ssInitialized project `kindle-ss` at `/Users/noriyo_tcp/MyPlayground/kindle_ss`
noriyo_tcp@MacBook-Air ~/MyPlayground ❯ cd kindle_ss
noriyo_tcp@MacBook-Air ~/M/kindle_ss ❯ lsREADME.md hello.py pyproject.toml
noriyo_tcp@MacBook-Air ~/M/kindle_ss ❯ vi pyproject.toml
noriyo_tcp@MacBook-Air ~/M/kindle_ss ❯ vi hello.py
noriyo_tcp@MacBook-Air ~/M/kindle_ss ❯ uv python installSearching for Python installationsInstalled Python 3.12.5 in 3.51s + cpython-3.12.5-macos-x86_64-none ❯ uv python list --only-installedcpython-3.12.5-macos-x86_64-none /Users/noriyo_tcp/.local/share/uv/python/cpython-3.12.5-macos-x86_64-none/bin/python3 -> python3.12cpython-3.11.4-macos-x86_64-none /usr/local/opt/python@3.11/bin/python3.11 -> ../Frameworks/Python.framework/Versions/3.11/bin/python3.11cpython-3.10.12-macos-x86_64-none /usr/local/opt/python@3.10/bin/python3.10 -> ../Frameworks/Python.framework/Versions/3.10/bin/python3.10cpython-3.9.17-macos-x86_64-none /usr/local/opt/python@3.9/bin/python3.9 -> ../Frameworks/Python.framework/Versions/3.9/bin/python3.9cpython-3.9.6-macos-x86_64-none /Applications/Xcode.app/Contents/Developer/usr/bin/python3 -> ../../Library/Frameworks/Python3.framework/Versions/3.9/bin/python3cpython-3.8.17-macos-x86_64-none /usr/local/opt/python@3.8/bin/python3.8 -> ../Frameworks/Python.framework/Versions/3.8/bin/python3.8 ❯ uv python pin 3.12.5Pinned `.python-version` to `3.12.5` ❯ uv run hello.pyUsing Python 3.12.5Creating virtualenv at: .venvHello from kindle-ss! ❯ . .venv/bin/activate(.venv)# その後だとこうなる ❯ uv run hello.pyHello from kindle-ss!(.venv)
# install packages ❯ uv add pygetwindow pyautogui pillow pytesseractResolved 17 packages in 2.61s Built pygetwindow==0.0.9 Built mouseinfo==0.1.3 Built pyperclip==1.9.0 Built pyscreeze==1.0.1 Built pymsgbox==1.0.9 Built pyrect==0.2.0 Built pyautogui==0.9.54 Built pytweening==1.2.0Prepared 15 packages in 1.25sInstalled 15 packages in 7ms + mouseinfo==0.1.3 + packaging==24.1 + pillow==10.4.0 + pyautogui==0.9.54 + pygetwindow==0.0.9 + pymsgbox==1.0.9 + pyobjc-core==10.3.1 + pyobjc-framework-cocoa==10.3.1 + pyobjc-framework-quartz==10.3.1 + pyperclip==1.9.0 + pyrect==0.2.0 + pyscreeze==1.0.1 + pytesseract==0.3.13 + pytweening==1.2.0 + rubicon-objc==0.4.9(.venv)
❯ uv run kindle_ss.pyTraceback (most recent call last): File "/Users/noriyo_tcp/MyPlayground/kindle_ss/kindle_ss.py", line 51, in <module> main() File "/Users/noriyo_tcp/MyPlayground/kindle_ss/kindle_ss.py", line 32, in main kindle_window = get_first_kindle_window() ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/noriyo_tcp/MyPlayground/kindle_ss/kindle_ss.py", line 9, in get_first_kindle_window windows = gw.getWindowsWithTitle("Kindle") ^^^^^^^^^^^^^^^^^^^^^^AttributeError: module 'pygetwindow' has no attribute 'getWindowsWithTitle'
# これが必要らしいuv add pyobjc
❯ uv run kindle_ss.pyUnable to find application named 'Kindle'
このように書き換えた
def activate_kindle(): subprocess.run(['open', '-a', 'Amazon Kindle.app'])
❯ uv run kindle_ss.pyTraceback (most recent call last): File "/Users/noriyo_tcp/MyPlayground/kindle_ss/.venv/lib/python3.12/site-packages/pytesseract/pytesseract.py", line 275, in run_tesseract proc = subprocess.Popen(cmd_args, **subprocess_args()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/noriyo_tcp/.local/share/uv/python/cpython-3.12.5-macos-x86_64-none/lib/python3.12/subprocess.py", line 1026, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/Users/noriyo_tcp/.local/share/uv/python/cpython-3.12.5-macos-x86_64-none/lib/python3.12/subprocess.py", line 1955, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename)FileNotFoundError: [Errno 2] No such file or directory: 'tesseract'
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/Users/noriyo_tcp/MyPlayground/kindle_ss/kindle_ss.py", line 64, in <module> main() File "/Users/noriyo_tcp/MyPlayground/kindle_ss/kindle_ss.py", line 55, in main text = extract_text_from_image(screenshot) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/noriyo_tcp/MyPlayground/kindle_ss/kindle_ss.py", line 33, in extract_text_from_image return pytesseract.image_to_string(image) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/noriyo_tcp/MyPlayground/kindle_ss/.venv/lib/python3.12/site-packages/pytesseract/pytesseract.py", line 486, in image_to_string return { ^ File "/Users/noriyo_tcp/MyPlayground/kindle_ss/.venv/lib/python3.12/site-packages/pytesseract/pytesseract.py", line 489, in <lambda> Output.STRING: lambda: run_and_get_output(*args), ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/noriyo_tcp/MyPlayground/kindle_ss/.venv/lib/python3.12/site-packages/pytesseract/pytesseract.py", line 352, in run_and_get_output run_tesseract(**kwargs) File "/Users/noriyo_tcp/MyPlayground/kindle_ss/.venv/lib/python3.12/site-packages/pytesseract/pytesseract.py", line 280, in run_tesseract raise TesseractNotFoundError()pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.
tesseract をインストールしないといけないか
https://qiita.com/ryome/items/16fc42854fe93de78a23
brew install tesseract
なんか float のエラー
サブモニタで開いた状態なら問題ないが Macbook Pro の内蔵モニタで開いているとダメだ
❯ uv run kindle_ss.pyTraceback (most recent call last): File "/Users/noriyo_tcp/MyPlayground/kindle_ss/kindle_ss.py", line 64, in <module> main() File "/Users/noriyo_tcp/MyPlayground/kindle_ss/kindle_ss.py", line 54, in main screenshot = capture_kindle_screenshot(kindle_window, file_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/noriyo_tcp/MyPlayground/kindle_ss/kindle_ss.py", line 28, in capture_kindle_screenshot screenshot = pyautogui.screenshot(region=(x, y, width, height)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/noriyo_tcp/MyPlayground/kindle_ss/.venv/lib/python3.12/site-packages/pyscreeze/__init__.py", line 579, in _screenshot_osx im = ImageGrab.grab(bbox=(region[0], region[1], region[2] + region[0], region[3] + region[1])) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/noriyo_tcp/MyPlayground/kindle_ss/.venv/lib/python3.12/site-packages/PIL/ImageGrab.py", line 49, in grab im_resized = im.resize((right - left, bottom - top)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/noriyo_tcp/MyPlayground/kindle_ss/.venv/lib/python3.12/site-packages/PIL/Image.py", line 2305, in resize im = im.resize(size, resample, box) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/noriyo_tcp/MyPlayground/kindle_ss/.venv/lib/python3.12/site-packages/PIL/Image.py", line 2328, in resize return self._new(self.im.resize(size, resample, box)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^TypeError: 'float' object cannot be interpreted as an integer
float を int にキャストすると大丈夫だった。しかしフルスクリーンで表示しているとダメ。これはまあ仕方ない
抽出した文字が文字化けしている
brew install tesseract-lang