adbコマンドを用いて、MacからAndroidに音楽ファイルを転送するシェルスクリプト
[主題]
adbコマンドを用いて、MacからAndroidに音楽ファイルを転送するシェルスクリプトを作成したので、紹介したい。
[背景]
筆者はこの記事で、adbコマンドを用いて、MacからAndroidに音楽ファイルを転送する方法を説明した。記事は、ややマニアックな内容だった。
そこで、筆者自身、もっと手軽に使える方法はないかと考え、adbコマンド実行の前提となる、MacとAndroid端末の接続操作さえ済んでいれば使えるシェルスクリプトを作成した。
[環境]
参考までに、筆者の環境を記載しておく
MacBook Air 2023 15.3inch(Apple Silicon Mac, M2)
macOS Sonoma 14.7.1
Xcode 16.1
CommandLine Tools for Xcode 16.1.0.0.1
Android Debug Bridge version 1.0.41
Version 35.0.2-12147458
[前提条件]
このスクリプトは、Android端末の外部SDカードに、音楽ファイルを転送する。SDカード以外の場所に音楽ファイルを置きたい場合には、利用できない。
[スクリプト]
以下が、adbコマンドを用いて、MacからAndroidに音楽ファイルを転送するシェルスクリプトである。
-
スクリプトの準備
以下の内容をコピーし、send_music_to_android.bash
というファイル名でデスクトップに保存する。スクリプトはこちらからダウンロードすることもできる。ダウンロードした場合、ファイル名拡張子が「txt」になっているので、これを除去する。なお、両者とも、スクリプトには実行権を付与すること。#!/bin/bash # # MacからAndroidスマフォに音楽ファイルを転送するシェルスクリプト # 要 Perl(Macデフォルト), adb, USB/ワイヤレスデバッグ設定 # # © 2024.10.13 桃源老師 # Modified 2024.10.19 桃源老師 # 1.adbコマンド存在チェックの追加 # 2.adbコマンド実行準備チェックの追加 # 3.スクリプト実行キャンセルをできるようにした # 必要なコマンド(adb)の存在チェック # https://qiita.com/8ayac/items/b6b6f0a385d08659316b if !(type "adb" > /dev/null 2>&1); then echo "adbが見つかりません" echo "" exit 1 fi # ADBコマンド実行準備の確認 ADBDEVICES=`adb devices | grep -v daemon | grep -v List` if [ "$ADBDEVICES" == "" ]; then echo "ADBコマンド実行準備ができていません。正しく設定してください。" echo "" exit 1 fi # readコマンドを無限ループさせて、y/n/cの入力待ちにする # 新規アーティストの場合は、アーティストフォルダを転送する準備をする # 既存アーティストの場合は、アルバムフォルダを転送する準備をする # cの場合はキャンセル while : do read -p "新規アーティストですか?(y/n/c):" YNC if [ "$YNC" = "y" ]; then read -p "アーティスト名を入力してください:" ARTIST MACPATH="$HOME/Music/ミュージック/Media.localized/Music/" break elif [ "$YNC" = "n" ]; then read -p "アーティスト名を入力してください:" ARTIST read -p "アルバム名を入力してください:" ALBUM MACPATH="$HOME/Music/ミュージック/Media.localized/Music/$ARTIST" break elif [ "$YNC" = "c" ]; then exit 0 else echo "入力が不正です。キーボードでy, n, cを入力してください。" echo "" fi done # Mac側音楽ファイルパス設定(ダブルクオートでエスケープ) # https://zenn.dev/bryutus/articles/bash-quotation-marks cd "$MACPATH" # Android側SDカード名を取得(ここでPerlが使われる) # https://android.stackexchange.com/questions/215796/cd-into-the-external-sd-card-directory-using-adb-shell SDCARD_NAME=`adb shell sm list-volumes public | perl -lane 'print $F[-1]'` # echo $SDCARD_NAME # Android側への音楽ファイルの転送 # adb shell mkdirは不可能。 # トリックとして、(中身のある)フォルダ毎ならば転送できる # https://stackoverflow.com/questions/13373489/adb-shell-command-mkdir-for-creating-a-directory # $YNが「y」の時は、新規アーティストなので、アーティストフォルダを転送 if [ "$YNC" = "y" ]; then adb push "$ARTIST" /storage/$SDCARD_NAME/Music # $YNが「n」の時は、既存アーティストなので、アルバムフォルダを転送 else adb push "$ALBUM" /storage/$SDCARD_NAME/Music/"$ARTIST" fi exit 0
-
ファイル名拡張子の除去
スクリプトをダウンロードした場合、ファイル名拡張子の除去が必要である。ターミナル.appを用いるならば、以下の操作を行う。もちろん、Finderを用いても構わない。cd ${HOME}/Desktop mv send_music_to_android.bash.txt send_music_to_android.bash
-
スクリプト実行権の付与
ターミナル.appを用いて、以下の操作を行う。cd ${HOME}/Desktop chmod +x send_music_to_android.bash
-
スクリプトの説明
コードそのものより多いコメントを参照されたい。さらなる質問等は記事のコメントにて受け付ける。
使い方
-
スクリプトの起動
ここでは、スクリプトがデスクトップにあるものとして話を進める。cd ${HOME}/Desktop ./send_music_to_android.bash
-
新規アーティストの場合
新規アーティスト、すなわち、まだAndroid端末側に収録されていないアーティストの場合、次のような動作になる。roushinoMacBook-Air:Desktop roushi$ ./send_music_to_android.bash 新規アーティストですか?(y/n/c):y アーティスト名を入力してください:Ben Webster Ben Webster/: 27 files pushed, 0 skipp...16.0 MB/s (198141847 bytes in 11.798s) roushinoMacBook-Air:Desktop roushi$
-
既存アーティストの場合
既にAndroid端末側に収録されているアーティストで、アルバムを追加する場合、次のような動作となる。roushinoMacBook-Air:Desktop roushi$ ./send_music_to_android.bash 新規アーティストですか?(y/n/c):n アーティスト名を入力してください:Ben Webster アルバム名を入力してください:In Norway In Norway/: 11 files pushed, 0 skipped. 18.1 MB/s (106542145 bytes in 5.609s) roushinoMacBook-Air:Desktop roushi$
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント