Magic Wormhole でファイル送受信(windows)

WindowsLinuxandroid間でファイルの送受信を簡単に行うためにMagicWormholeをインストールした際のメモ。

インターネットに接続されていれば、どこからでもファイルの送受信が可能。

github.comWindowsでのインストール

powershellを管理者権限で起動

 

pythonをインストール

Microsoftストアアプリから Pythonで検索して使用したいバージョンをインストール。

とりあえず3.10をインストール済みだったのでそのまま使用する。

システムの詳細設定の環境変数pythonにpathを通しておく。

ユーザーの環境変数にのみ設定したが、システム環境変数でも良い。

ディレクトリ移動(powershellデフォルトのディレクトリにはインストールできない)

とりあえずcドライブ直下にmagicフォルダを予め作成。

cd C:\Users\xxxx\Desktop

Python Package Manager (pip)のアップグレード

pip install --upgrade pip

*エラーした

 [notice] A new release of pip is available: 23.1.2 -> 23.2.1
 [notice] To update, run: python.exe -m pip install --upgrade pip

と出力されたので、

python.exe -m pip install --upgrade pip

Successfully installed pip-23.2.1 出力されてインストール成功。

 

Magic Wormhole インストール

pip install magic-wormhole

*以前インストールでエラー発生時のメモ

error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
エラーメッセージからMicrosoft C++ Build Toolsが不足?と判断・インストール。
https://visualstudio.microsoft.com/ja/visual-cpp-build-tools/
c++分のみ選択してインストールした、.net等もあるが今回はとりあえず必要そうなC++のみインストールした。

 

確認コマンド

wormhole /?

インストールされたフォルダ

c:\users\ユーザー名\appdata\local\programs\python\python310\lib\site-packages\magic_wormhole-0.12.0.dist-info

 

参考削除コマンド

pip uninstall magic-wormhole

 

このままでは、コマンドラインでの使用なのでデスクトップ上にショートカットを作成し、ドラッグ&ドロップで送信とダブルクリックで受信画面表示されるようにする。

 

スクリプトファイル作成

テキストエディタにて任意のフォルダにスクリプトファイル作成

C:\Users\ユーザー名\OneDrive\script\

送信用

wormhole_send.ps1

内容 以前はこれで複数ファイル転送できた?がNG

(ヘルプ見てもコマンドラインで複数一括の処理方法は判らなかった、元々できないのかも?)

Add-Type -Assembly System.Windows.Forms
$file = ""
foreach($arg in $Args) {
if ($file -eq "") {
$file = $arg
} else {
$file = $file + "`n" + $arg
}
}
wormhole send $arg

なので、これでも良い

foreach($arg in $args) {
}

wormhole send $arg

が、最終的に下記内容にした、一括では遅れないが複数ファイルを連続で処理可能。(1つ処理後に送信コードを連続して作成する、ファイルが多い場合はフォルダにコピーかZIP等で圧縮してから処理すると良い。)

foreach($arg in $args) {
wormhole send $arg
}

 

受信用

wormhole_recive.ps1

内容

wormhole receive

連続して受け取れるようにしたい場合

for (;;) {wormhole receive}

(終了時は、CTRL+Cかpowershellのウィンドウを閉じる。)

 

デスクトップにショートカット作成

作成したスクリプトを参照し、ショートカットを作成。

送信用のプロパティ

作業用フォルダを任意のフォルダにしておく。例:C:\work\wormhole

ショートカットのリンク先の先頭に以下オプションを追加

powershell -NoProfile -ExecutionPolicy RemoteSigned -File

C:\Users\ユーザー名\Desktop\スクリプト名.ps1 だとしたら

例 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  -noexit -NoProfile -ExecutionPolicy RemoteSigned -File C:\Users\ユーザー名\Desktop\スクリプト名.ps1

    powershell
        PowerShellを起動
  -noexit
  完了後にpowershellを終了しない(送受信の結果を確認するため)
    -NoProfile
        オプションでデフォルトのプロファイルを指定
    -ExecutionPolicy RemoteSigned
        オプションで実行ポリシーを指定
    -File
        オプションで実行する.ps1ファイルを指定

受信用

作業用フォルダを任意のフォルダにしておく。例:C:\work\wormhole

 

送信用にドラッグ&ドロップすると、受信側で入力するテキストが表示される。

例: 1-commando-bison

*フォルダをドラッグ&ドロップすれば複数ファイルを送信(自動でZIPアーカイブするので容量によっては準備に時間がかかる。以前はフォルダでなくても複数選択で可能だった?暫く使っていなかったので要調査。)

 

受信用のショートカットをダブルクリックすると、コード入力画面になる。

コードを入力すると、受信用ショートカットで指定したフォルダにダウンロードされる。

送信側の画面、送信速度などが表示される100%になっていれば正常終了なので”EXIT”を入力して終了する。

受信側の画面、受信速度などが表示される100%になっていれば正常終了なので”EXIT”を入力して終了する。

 

2024/02/18 追記

QRコードも作成するようにしたい。

windows コマンドライン qrコード
で検索

qrcode が使えそう。

pythonなので、OS問わず使えるはず。

インストール
powershellにて
pip install qrcode[pil]

確認
qr "test"
█████████████████████████████
█████████████████████████████
████ ▄▄▄▄▄ █▀█ █▀█ ▄▄▄▄▄ ████
████ █   █ ██▀▀▄██ █   █ ████
████ █▄▄▄█ █▄ █ ▄█ █▄▄▄█ ████
████▄▄▄▄▄▄▄█▄▀ █▄█▄▄▄▄▄▄▄████
████▄█ ▀ ▀▄▀██ ▀▄▀█▀▄██ ▀████
████▄█▄▀▀▀▄▄    ▀ ▄ ▀▄▄ ▄████
████▄█▄█▄█▄█▀▄▄▄█▄ ▄█ █▄ ████
████ ▄▄▄▄▄ ██▄▀█▄█▀█▄▄█ ▄████
████ █   █ █▄▄ ▀▄▀▄▀▄▄█ ▄████
████ █▄▄▄█ █▄▄  ▀ ▄ ▀▀▄▀▄████
████▄▄▄▄▄▄▄█▄▄▄▄█▄▄▄██▄▄▄████
█████████████████████████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
画面上では正常なQRコードで表示される。

sendコードと同時にQRコードも表示させたいが、

wormhole send $arg | qr 

wormhole の標準出力が qr の標準入力にできない。

wormholeコマンドの出力が”wormhole receive ”コード” ”なので、qrコマンドに渡されてもNGかもしれないが、そもそもQRコードが表示されない。

現状では、コードが表示されたらコピーして別のpowershell画面でQRコード作成。

 

以前作成したショートカットでの送信を使用した例

Sending 76 Bytes file named 'wormhole_send.ps1'
Wormhole code is: 7-combustion-glitter
On the other computer, please run:

wormhole receive 7-combustion-glitter

 

7-combustion-glitter をコピー

 

別のpowershellを開いて

qr 7-combustion-glitter
█████████████████████████████████
█████████████████████████████████
████ ▄▄▄▄▄ █▄  █▄▄▀███ ▄▄▄▄▄ ████
████ █   █ █▄  █▀  ▄▀█ █   █ ████
████ █▄▄▄█ █▀▄█ ▀▄ █▀█ █▄▄▄█ ████
████▄▄▄▄▄▄▄█▄█▄█ █ █▄█▄▄▄▄▄▄▄████
████▄▀ █▀█▄ ██▀▄██▀▀ █▀ ██▄█ ████
████▀▀▄█ █▄▀ █▀█ █▄▄  █ ▄▀█▀▄████
█████▀ ▀▄▀▄██▀▀▄█ ▄▀ █ ▀█ ▀█▀████
████▄▄  ▀█▄ ███▄█▀█ ▀▀▀██▀█  ████
████▄▄█▄██▄█▀▄▄▄ ▄█▄ ▄▄▄  ▀▀ ████
████ ▄▄▄▄▄ █▄ ▄▀ ▄ ▀ █▄█ ▀▄▄▄████
████ █   █ ██ ▄██   ▄ ▄  ▄█▀▄████
████ █▄▄▄█ █▄█ ▄█▀██▀ ▀▀▄ █▄▄████
████▄▄▄▄▄▄▄█▄█▄▄▄▄█▄▄▄██▄███▄████
█████████████████████████████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀