追記(2025.02.16):OpenCVベースでSegfaultが出まくるため、後日書き直します。
PySimpleGUIのライセンスが厳しくなったけど、tcl/tk 9.xへの対応が遅れていて旧・Tapo-Streamerが動かなくなったり、そもそもPySimpleGUIほどの機能は要らんなということもあって、PySimpleGUIを使わずに完全に作り直してbrewパッケージにした。
GitHubに放流したので、macOSを使っていてTP-Linkのカメラが自宅に何台もある人は、試してみてください。PyPIにも放流してある。
brewでインストールして、
brew tap rioriost/tapostreamer
brew install tapostreamer
ターミナルからコマンド実行するだけです。
tapostreamer
opencv-pythonに苦しんだ
brewのFormulaでnumpyとopencv-pythonに苦しめられた。いや、分かってしまえば難しい話ではなく、numpyはdepends_onで指定すれば良いだけなんだが、opencv-pythonはvirtualenv_install_with_resources()や、venv.pip_install()ではソースからビルドしようとしてコケる。結局、pipでwhlをインストールすることに。
class Tapostreamer < Formula
include Language::Python::Virtualenv
desc "TapoStreamer is an Python application that shows the video streaming from the cameras made by TP-Link."
homepage "https://github.com/rioriost/tapostreamer/"
url "https://files.pythonhosted.org/packages/f5/aa/6a774a1633efa0f1a842ec2fda641b1a572b37934f9a792d741cc95e944c/tapostreamer-0.1.1.tar.gz"
sha256 "15620e39029d685a6b088b18af30bc3a4b6a63bd52cc04082323dc16cf759e67"
license "MIT"
depends_on "python@3.11"
depends_on "numpy"
resource "backports-tarfile" do
url "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz"
sha256 "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991"
end
resource "importlib-metadata" do
url "https://files.pythonhosted.org/packages/33/08/c1395a292bb23fd03bdf572a1357c5a733d3eecbab877641ceacab23db6e/importlib_metadata-8.6.1.tar.gz"
sha256 "310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580"
end
resource "jaraco-classes" do
url "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz"
sha256 "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd"
end
resource "jaraco-context" do
url "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz"
sha256 "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3"
end
resource "jaraco-functools" do
url "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz"
sha256 "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d"
end
resource "keyring" do
url "https://files.pythonhosted.org/packages/70/09/d904a6e96f76ff214be59e7aa6ef7190008f52a0ab6689760a98de0bf37d/keyring-25.6.0.tar.gz"
sha256 "0b39998aa941431eb3d9b0d4b2460bc773b9df6fed7621c2dfb291a7e0187a66"
end
resource "more-itertools" do
url "https://files.pythonhosted.org/packages/88/3b/7fa1fe835e2e93fd6d7b52b2f95ae810cf5ba133e1845f726f5a992d62c2/more-itertools-10.6.0.tar.gz"
sha256 "2cd7fad1009c31cc9fb6a035108509e6547547a7a738374f10bd49a09eb3ee3b"
end
resource "zipp" do
url "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz"
sha256 "2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"
end
def install
virtualenv_install_with_resources
system libexec/"bin/python", "-m", "pip", "install", "opencv-python"
end
test do
system "#{bin}/tapostreamer", "--help"
end
end
uvでvenvを作ってテストしている時は下記になるけれど、そもそもnumpyはbrewでもインストールできて、venvからも利用できる。
uv add keyring opencv-python numpy
で、brewのFormulaは以下のコマンドで更新すれば良い。
brew update-python-resources tapostreamer.rb