2021年12月3日 星期五

[Ubuntu] 使用 yt-dlp 取代 youtube-dl 下載 youtube 上的音樂/影片

瀏覽數
系統: Ubuntu 20.04.x64 or Android手機上的Termux

最近使用 youtube-dl 指令下載 youtube 的影音,下載速度真的可以用「龜速」來形容。上網爬文了一下,有一個 youtube-dl 分支程式 yt-dlp,指令使用的方式幾乎一樣,但是下載速度超快的,所以改用 yt-dlp 來 [下載 | 搭配 mpv 即時觀看] youtube上的影音。

安裝方式如下:

1. 安裝

由於使用 python 的 pip 的方式安裝,可以先參考這篇 https://tinyurl.com/2s427cnk 如何安裝 youtube-dl。

升級 python3.8 +pip3:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.8
sudo update-alternatives --config python
替代項目 python(提供 /usr/bin/python)有 3 個選擇。
  選項       路徑              優先權  狀態
------------------------------------------------------------
  0            /usr/bin/python3.8   3         自動模式
  1            /usr/bin/python2.7   1         手動模式
  2            /usr/bin/python3.7   2         手動模式
* 3            /usr/bin/python3.8   3         手動模式
按下 <enter> 鍵以保留目前選項[*],或是輸入選擇編號:
輸入想要的python版本選項編號: 3


檢查python版本:
python -V
安裝pip3:
sudo apt install python3-pip
檢查pip3版本:
pip3 -V

使用 pip3 安裝更新 pip 及 yt-dlp:
sudo -H pip3 install -U pip yt-dlp

安裝 mp3gain (可以將音量標準化的一個軟體):
sudo apt update && sudo apt install snapd && sudo snap install mp3gain

安裝 mpv 影音播放軟體:
sudo apt install mpv


2. 自訂函數

you2mp3()  #下載 youtube 轉成 mp3
you2mp4()  #下載 youtube 轉成 mp4
youtv()  #直接使用 yt-dlp + mpv 線上聽音樂或觀看影片

編輯 .bashrc 將you2mp3() you2mp4() youtv() 3個自訂函數貼到 .bashrc 檔案的最下方並存檔
vi ~/.bashrc

you2mp3() {
  #如果是下載整個播放清單,網址須符合右方的格式 => https://www.youtube.com/playlist?list=PLf4gvJzKEA1IB_qHaFz4uaIy2Yq6jqFKy
  #youtube-dl -cit --extract-audio --audio-format mp3 $1
  yt-dlp -ci --extract-audio --audio-format mp3 $1
  if [ $2 ] ; then
      find $(pwd) -type f -iname \*.mp3 |
      while read f ;do echo '處理中………"$f"'
        mp3gain -p -a -r -k -d 6 "$f"
        #mid3iconv -e gbk --remove-v1 "$f" &>/dev/null
      done
  fi
  echo "$1" | grep -i "?v=" > /dev/null && f=$(echo "$1" | sed -e "s/^.*\?v=\(.*$\)/\1/") || f=$(echo "$1" | sed -e "s/^.*[a-z]\/\(.*$\)/\1/")
  if [ "$f" != "" ] ; then
    f1=$(find ./ -name "*$f*.mp3")
    echo "mp3gain音量處理 $f1"
    mp3gain -p -a -r -k -d 6 "$f1"
  fi
}
you2mp4() {
  如果是下載整個播放清單,網址須符合右方的格式 => https://www.youtube.com/playlist?list=PLo4HKDlY6L_nWnTF8EYBC0EeykU0LNYis
  #youtube-dl "$1" -ci -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4
  yt-dlp "$1" -ci -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4
}
youtv() {
  [ $# == 0 ] && echo "請輸入Youtube影片網址URL" && return
  mxy="--autofit=350 --ontop --geometry=100%:97%"
  msync="--autosync=1 --mc=1"
  mm="mpv $mxy $msync --cache=yes --loop=0"
  tv="$mm --no-border"
  #mp3="$mm --no-video --shuffle"
  mp3="mpv --cache=yes --no-video --shuffle"

  url=$1
  border=$2
  if [ "$border" == "" ] ; then
    read -p "只播放音樂(請輸入mp3):" border
  fi
  case $border in
    "mp3") $mp3 $url ;;
    *) yt-dlp -q --no-check-certificate --prefer-ffmpeg -o- $url | $tv - ;;
  esac
}


重新載入 ~/.bashrc
source ~/.bashrc


3. 使用

下載youtube影音儲存為mp3音樂檔(並標準化音量95db)
you2mp3 https://www.youtube.com/watch?v=xxxxx

下載youtube影音儲存為mp4影音檔
you2mp4 https://www.youtube.com/watch?v=xxxxx

觀看公視直播
youtv https://www.youtube.com/watch?v=JAzRXylm3M0

2021年11月4日 星期四

[Cafe+Iot] 家庭烘豆之烘焙日誌

瀏覽數

喜愛喝咖啡的我,2011年三月下旬開始自己嘗試在家自己手烘咖啡,選擇了【手網手搖】的方式在家烘豆。慢慢的喜愛上「烘豆」,然後嘗試紀錄烘焙過程,要詳實紀錄烘豆,就是【烘焙曲線圖】。

 

於是使用 IOT設備 【NodeMcu v2 ESP8266 CP2102 開發板】+【DHT11 溫濕度感應模組】+【MAX6675 K型熱電偶溫度模組】+【K型熱電偶接點式測溫線】+【Blynk APP】,即時紀錄烘焙的溫度與時間,將數據即時傳送到雲端資料庫中,並撰寫網頁顯示【烘焙曲線圖】。


設備材料購買參考(電源供應可使用,舊的手機充電頭+MicroUSB充電線):

01.【不鏽鋼手網 $150】: https://tinyurl.com/2bc89ev2

02 .【麵包板 $30】: https://tinyurl.com/c43r3ebs

03 .【單芯線0.6mm $35】: https://tinyurl.com/4hjj4zdp

04.【NodeMcu v2 ESP8266 CP2102 開發板 $120】: https://tinyurl.com/37xv35n8

05.【DHT11 溫濕度感應模組 $35】: https://tinyurl.com/2pp2bawv

06.【MAX6675 K型熱電偶溫度模組 $110】: https://tinyurl.com/3wbvwh87

07.【K型熱電偶接點式測溫線 $15】: https://tinyurl.com/4kecp7zx

08.【Blynk APP $0】: https://tinyurl.com/ws6r5nzh

09.【自行架設 Blynk Local Server $0】: https://tinyurl.com/kbw9k632

10.【Arduino 開發軟體 free】: https://www.arduino.cc/en/software

11.【MySQL資料庫+網頁】: 自行將讀取到的資料即時寫入資料庫中,並自行撰寫網頁程式顯示「烘焙曲線圖」



 

個人的烘焙日誌(第43烘)網址如下:

 http://220.133.52.37:81/coffee/?devid=43

 

操作方式如下圖:


 

2021年5月21日 星期五

[Ubuntu] 使用 DroidCam 將【Android手機】模擬為電腦的【攝像機】和【麥克風】

瀏覽數

環境: Ubuntu 20.04-x64 + Android 6.0
參考: https://www.dev47apps.com/

1.Android手機先安裝 DroidCam App,下載點如下:
https://play.google.com/store/apps/details?id=com.dev47apps.droidcam

2.Ubuntu 安裝 DroidCam:
cd /tmp/
wget -O droidcam_latest.zip https://files.dev47apps.net/linux/droidcam_1.7.3.zip
unzip droidcam_latest.zip -d droidcam
cd droidcam
sudo ./install-client
sudo ./install-video
sudo ./install-sound
#查看模組是否安裝
sudo lsmod | grep -i v4l2loopback_dc
#查看模擬設備
ll /dev/video*

3.Ubuntu 安裝 Android adb tools:
sudo apt-get install adb

4.手機打開 DroidCam App,如圖:



5.手機與電腦連線:
5-1:使用USB連線
將手機用USB傳輸線接電腦,手機必須開啟usb debug模式
Ubuntu 執行:
env ANDROID_SERIAL=`adb devices | grep -v 'List' | awk '{print $(N+1)}'` droidcam-cli adb 4747

5-2.使用WIFI連線
Ubuntu 執行:
droidcam

然後按下【Connect】。
 

6.電腦上顯示鏡頭畫面:
6-1:使用 cheese 觀看
Ubuntu 執行:
sudo apt install cheese
cheese


6-2:使用 mpv 觀看
Ubuntu 執行:
sudo apt install mpv
mpv av://v4l2:/dev/video0 --profile=low-latency --untimed

 

完工!

2020年9月20日 星期日

[Android] 蝦蝦果園-自動澆水shell script 執行檔 (須root)

瀏覽數

手機環境: 

Zenfone 3 (ze520kl) + 版本WW_13.20.10.137_20161108 + 鎖定螢幕:關閉 + 休眠模式:關閉 + 已root +【tasker】。


 Android 的蝦皮購物APP內有一個蝦蝦果園的小遊戲,可以選擇種子種植,然後你必須記得要去澆水,種子長大,最後收成。

思考了一下有沒有辦法讓手機時間到時自動澆水。上網 Google 了一下,Android adb 有指令可以模擬手指操控手機的動作。於是寫了一個 shell script ,還真的可以用。

搭配 【tasker】 or 【AutomateIt Pro】+【AutomateIt Shell Plugin】,設定時間排程讓它執行,即可達到自動澆水的目的。

底下的程式對應的螢幕解析度為 1920 x 1080,如果你的螢幕解析度不同的話,就必須改程式裡面的數值,例如:input tap 935 385(點擊螢幕上的位置 x:935 Y:385),你可以開啟 [開發人員選項]-[指標位置] 來顯示座標,再修改點擊的位置。(理論上用解析度的比例去轉換,應該也可以。)

複製底下的程式碼,儲存成一個檔案,檔名可以自訂(例如 shopee-orchard.sh)

--------------------------------------

#!/system/bin/sh

# 20210223 #

#開啟螢幕

#input keyevent KEYCODE_MENU;input keyevent KEYCODE_HOME;

#or

#input keyevent KEYCODE_POWER

input keyevent KEYCODE_HOME;


#開啟蝦皮

am start -n com.shopee.tw/com.shopee.app.ui.home.HomeActivity_;

sleep 6;

input tap 935 385;

input keyevent 4;input keyevent 4;input keyevent 4;


am start -n com.shopee.tw/com.shopee.app.ui.home.HomeActivity_;

sleep 2;


#每日簽到

input tap 970 1840;

sleep 2;


input tap 900 1405;

sleep 1;

input tap 540 490;

sleep 1;

input tap 540 490;


#蝦蝦果園

#input swipe 900 1450 700 1450;

input tap 600 1405;

sleep 5;

#input swipe 540 900 540 540;

#sleep 1;

#input swipe 540 1250 540 540;

input tap 540 1720;

sleep 7;


input tap 540 1420;sleep 1;

input tap 540 1420;sleep 1;


input tap 935 1735;

sleep 1;


input keyevent 4;input keyevent 4;input keyevent 4;input keyevent 4;input keyevent 4;

exit;

--------------------------------------

然後在配合 【tasker】設定每天早上7:58點~晚上11點每3個小時執行一次,蝦蝦果園水滴從0累積到50滴水約3個小時,超過3個小時最多也是50滴水,所以每3個小時澆水就可以了。


 

搭配【tasker】的(開啟螢幕 / 關閉螢幕 / 停止應用程式)的功能,便可達成蝦蝦果園自動澆水了。

 

PS: 有時蝦皮APP更新後,圖示介面的位置會不太一樣,這時候就必須再去調整程式碼了。


2020年2月7日 星期五

[Adroid] 手機root後可使用Shell指令停止充電

瀏覽數

手機型號:
Zenfone3(ze520kl)
Android 6.0.1

將充電線連接到電腦(此時手機充電指示燈是亮的),使用 adb shell 指令登入debug模式:
輸入:
adb shell

切換到root請輸入:
su

停止充電: (手機充電指示燈不會亮的)
echo 0 > /sys/class/power_supply/battery/charging_enabled

恢復充電: (手機充電指示燈是亮的)
echo 1 > /sys/class/power_supply/battery/charging_enabled

可搭配 Tasker or Automatelt,當手機充滿or充到需要的電量時,執行shell指令,讓手機停止充電來保護電池。



PS:
不同的手機,不同的Android版本,控制的檔案可能有所差異,可能需要自行測試看看是那一個檔案。

2019年11月5日 星期二

[縮時攝影] 淡水日落 20191102 163111

瀏覽數
[縮時攝影] 淡水日落 20191102 163111
時間: 2019/11/02 16:31:11~17:13:17
地點: 淡水海關碼頭
設備: Zenfone3(ze520kl)



2019年10月25日 星期五

[Android] 省電【AutomateIt Pro】自動切換定位模式(高精確度及節約耗電量)

瀏覽數
手機型號: Zenfone3(ze520kl)+Android 6.01+root

利用 【AutomateIt Pro】+【AutomateIt Shell Plugin】這個2個APP,依照需求去切換定位模式,來達到省電目的。

這是這2個APP的Google Play的連結:
【AutomateIt Pro】:
 https://play.google.com/store/apps/details?id=AutomateItPro.mainPackage
【AutomateIt Shell Plugin】:
https://play.google.com/store/apps/details?id=com.smarterapps.automateitshellplugin



【AutomateIt Pro】這個APP與知名【Task】的功能相似,但使用方式比較簡單;就是當觸發某個事件時,就去執行某個動作。使用方式這裡不多做介紹了,可自行google搜尋使用方法,或可參考此篇: https://tinyurl.com/y68g6ur8
 

首先上網Google查詢 adb shell 的定位模式操作指令,來源參考:
https://forum.xda-developers.com/android/help/activate-disable-gps-adb-shell-t3307417

[高精確定位]: settings put secure location_providers_allowed +gps
[節約耗電量]: settings put secure location_providers_allowed -gps

知道Shell的指令後,開始定義【AutomateIt Pro】的規則。

想要自動切換的需求是:
WIFI 開啟的時候(通常在室內),切換為 [節約耗電量] (不使用GPS)
WIFI 關閉的時候(通常在室外),切換為 [高精確定位] (使用GPS)

設定方法如下(前提是手機必須root):

一.當然是先安裝【AutomateIt Pro】+ 【AutomateIt Shell Plugin】

請自行Google搜尋下載安裝。




二.開啟【AutomateIt Pro】

1. 新增一個規則,當WIFI On時,切換為 [節約耗電量] (不使用GPS)




2. 再新增一個規則,當WIFI Off時,切換 [高精確定位] (使用GPS)




三. 完工。

WIFI 開啟 or 關閉時,會自動切換定位模式。像平常在辦公室裡有WIFI,自動會切換到 [節約耗電量] (不使用GPS),這樣多少可以減少一些耗


PS:
可以到 AutomateIt 的規則市集下載:
WIFI ON時,切換為 [節約耗電量] (不使用GPS)
https://automateitapp.com/rule.php?id=53941

WIFI OFF時,切換為 [高精確定位] (使用GPS)
https://automateitapp.com/rule.php?id=43410