Podsyncとういソフトウェアがあります。
Youtube動画をPodcast形式に変更して配信可能で大変便利です。
Linuxでの運用なので敷居が高いわけですが、便利なので導入しました。
運用方法をメモしておかないと忘れるので。
また、クライアント側、スマホで使っているソフトはAndroidなので、Podcastaddictにしています。
結論1.グローバルIPがブラックリスト入り
一気にリクエストするとyoutubeにブラックリスト登録されてしまうようです。
IPアドレスをブロックされないように、12時間ごと、5つくらいまで。
節度を持って運用します。
podsync自体がもともとwebサービスだったのがyoutube側からブロックされたため、自前で運用しているわけですから。
結論2.youtube-dlのバージョンアップ
youtube-dlのバージョンが古いとファイルのダウンロードができないことがありました。
podsyncはDockerで運用するのですが、バージョンによって動作しないことがあったので、以前のバージョン(v2.0)のyoutube-dlだけをアップデートして移植する必要がありました。
最新latestのDockerイメージを使える環境にすべきかもしれません。
今までの経緯
2021-05-25 05:30:21 dockerをいじってyoutube-dlだけを更新。復活。
dockerをいじっていたのでそれなりに慣れてきました。
コンテナ内でコマンド実行する。
docker attach コンテナ名
docker exec -it コンテナ名 /bin/bash
docker image ls
テスト環境側
REPOSITORY TAG IMAGE ID CREATED SIZE
mxpv/podsync latest イメージID 7 months ago 107MB
mxpv/podsync v2.2 イメージID 13 months ago 107MB
mxpv/podsync v2.0 イメージID 16 months ago 107MB
hello-world latest イメージID 2 years ago 1.84kB
テスト環境でのlatest が起動しませんでした。
途中でpodsyncが停止してしまいます。
本番環境側
REPOSITORY TAG IMAGE ID CREATED SIZE
mxpv/podsync latest イメージID 16 months ago 107MB
hello-world latest イメージID 2 years ago 1.84kB
つまり、Createdの所で見ると、16 months ago で揃っています。
テスト環境をv2.0で起動した所、正常起動しました。ダウンロードは404で失敗しますが。
テスト環境
xpv/podsync:latest が起動しない。と言うか途中で停止する。
mxpv/podsync:v2.0
これなら起動しました。
docker stats
CONTAINER ID NAME CPU % MEM USA
GE / LIMIT MEM % NET I/O BLOCK I/O PIDS
コンテナID bold_lichterman 0.00% 4.285MiB / 1.12GiB 0.37% 15.7kB / 3.68kB 0B / 0B 10
docker exec コンテナID youtube-dl –version
2020.01.24
つまり一年前のyoutube-dl を使っていたわけです。v2.0のイメージでは。
youtube-dl –version
2021.05.16
つまり、Dockerではなく、物理マシン本体では2021年の5月バージョンなのです。
Dockerじゃなくて物理マシンからyoutube-dlをたたくとダウンロードできました。
しかし、lagtestのイメージだとだと途中しています。
現在v2.4.0が最新です。latestを起動してで確認します。(podsyncはとちゅで停止しますが。)
docker exec イメージID youtube-dl –version
2021.05.16
なるほど最新ならバージョンは問題ありません。けど起動してくれません。
よって、Docker自体のアップデートをしてみました。
docker –version
Docker version 19.03.8, build afacb8b7f0
以下、いくつか参考にしたところです。
sudo apt-get upgrade docker-engine
Ubuntu 18.04 LTS に Docker をインストールする
コマンド実行
apt-get install docker-ce docker-ce-cli containerd.io
(データベースを読み込んでいます … 現在 1630017 個のファイルとディレクトリがインストールされています。)
・・・・・・・更新完了後、
docker –version
Docker version 20.10.6, build 370c289
最新になったのは間違いないかと。
しかし、この状態でもlatestが起動しませんでした。
V2.1を試すと起動しました、v2.0と同様です。
それ以上のバージョンは起動しませんでした。
podsync binary を使って動かそうとも考えましたが環境に依存しないDockerの方がいいかなと。
結果、Dockerコンテナの中身を改造。することにしました。
v2.0を起動して。
docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
コンテナID silly_dhawan 0.00% 2.961MiB / 1.12GiB 0.26% 509kB / 36.5kB 86MB / 0B 10
docker exec コンテナID youtube-dl –version
2020.01.24
一年以上前のバージョンを使っているようです。
よって、コンテナに対してyoutube-dlのアップデートしようとしました。
docker exec コンテナID youtube-dl –update
docker exec コンテナID pip install -U youtube_dl
OCI runtime exec failed: exec failed: container_linux.go:367: starting container process caused: exec: “pip”: executable file not found in $PATH: unknown
docker exec コンテナID brew install youtube-dl
OCI runtime exec failed: exec failed: container_linux.go:367: starting container process caused: exec: “brew”: executable file not found in $PATH: unknown
まあそうだよね。brewもpipも入ってないからね。
docker exec コンテナID wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
Connecting to yt-dl.org (95.143.172.170:443)
Connecting to yt-dl.org (95.143.172.170:443)
wget: bad address ‘github.com’
wgetでもダウンロードできませんでした。
よって、
docker exec -it コンテナID sh
でコンテナの中に入れました。
ホストマシンでyoutube-dl本体をダウンロードします。
wget https://yt-dl.org/downloads/latest/youtube-dl
docker cp [オプション] ローカル・パス|- コンテナ:パス
docker cp ./youtube-dl コンテナID:/home/youtube-dl
homeに転送しました
/home # youtube-dl -U
Updating to version 2021.05.16 …
Updated youtube-dl. Restart youtube-dl to use the new version.
/home # youtube-dl –version
2021.05.16
最新バージョンに更新されたので、この状態をコミットで保存します。
docker commit コンテナID mxpv/podsync:v2.0_20210524
参考。今入っているコンテナ
docker exec -it コンテナID sh
docker imagesで確認します。
REPOSITORY TAG IMAGE ID CREATED SIZE
mxpv/podsync v2.0_20210524 コンテナID 11 seconds ago 110MB
新しく出来た mxpv/podsync:v2.0_20210524
をつかって起動。
OK。ダウンロードできたようです。
つまり本番環境に持っていきます。
docker save mxpv/podsync:v2.0_20210524 > ./tmppodsync.tar
できたtmppodsync.tarをFTPで本番環境にもっていきました。
本番環境。
docker load < tmppodsync.tar
Loaded image: mxpv/podsync:v2.0_20210524
v2.0_20210524
c# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mxpv/podsync v2.0_20210524 イメージID 2 hours ago 110MB
こちらのイメージを使って本番環境で運用すればOKです。
とはいえ、Dockeのlatest最新イメージを起動できるようにすべきかもしれないですが。
2021-05-22 06:46:03 404 Not found.原因が分からない。
/*
time="2021-05-21T20:13:20Z" level=error msg="youtube-dl error: [youtube] xxxxxxxx: Downloading webpage
\n[youtube] xxxxx: Downloading video info webpage
\nWARNING: unable to download video info webpage: HTTP Error 404: Not Found
\nWARNING: unable to download video info webpage: HTTP Error 404: Not Found
\nWARNING: unable to download video info webpage: HTTP Error 404: Not Found
\nWARNING: unable to download video info webpage: HTTP Error 404: Not Found
\nERROR: xxxxx: YouTube said: Unable to extract video data
\n" episode_id=xxxxx error="failed to execute youtube-dl: exit status 1" index=0
time="2021-05-21T20:13:20Z" level=error msg="failed to get episode file size" episode_id=xxxx error="stat /xxxxxxxx: no such file or directory" index=0
*/
グローバルIPを変更してみてもダメ。
CE
xxx.xxx.xx.164
C1
xxx.xxx.xx.126
C2
xxx.xxx.xx.55
APIキーを変更してもダメ。メッセージは同じと言う状況です。
原因は今のところ不明なので、時間がある時また考えます。
2021-05-20 19:45:55 動作状況的に制限がかかっているのは間違いない。
色々調べたけれど、 page_size = 5
これを間違えて page_size = 50 にしていた箇所がありました。
これは不味い。5に戻したのと、幾分必要ない分を減らしました。
太平洋時間(PT)の0時にリセットされるらしいです。
つまり日本時間の17時でしょうか。
今の時間はこちらかな。
調べた内容記録。
pgrep -fl podsync
1070 sh
1143 sh
1173 docker
3671 podsync
2021-02-18 21:48 もしかして更新中はサーバーにアクセスできないのかも?
いや、そうでもないな。
これはPodsync側の問題かもしれない。
アンドロイド端末再起動して検証
2021-02-18 21:44:18 グローバルIP変更でダウンロード可能に
youtube-dl https://www.youtube.com/watch?v=JHuZeAoj2LY -f “bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]”
ERROR: Unable to download webpage: HTTP Error 429: Too Many Requests
https://qiita.com/jun50/items/abf067b382ba819cbbd0
なるほどIPアドレスでブロックされたようです。
つまりルーターの再起動でipアドレスを変えてみます。
現在のグローバルIP
https://www.cman.jp/network/support/go_access.cgi
160.13.194.160
ルーター再起動
変わってないな。
https://note.com/6maru/n/ncb4cf9ad9b55
Macアドレスを変える方法があるようだ。
最後の一文字をEからFとかに変更
HUAWEI WiFi WS5200の方で設定したけど、いや、これは無線ルーターだから意味ないかも。
両方再起動して変更確認。
ERROR: JHuZeAoj2LY: YouTube said: Invalid parameters.
だけど表示されるエラー内容が変わりました。
configを節度を持った設定に。要は12時間ごと位に。
ダウンロード成功。
なるほど。無駄なことをやっていたなと。
まあ、brewは何か役に立つこともあるかもしれないけど、ディスク容量は無駄に消費した。
/dev/sda1 71G 58G 9.1G 87% /
また考えるしかないけど。
2021-05-20 18:13:36 ルーターのMacアドレス変更画面記録
何が原因か分かりませんが再びダウンロード不能になっている気がします。
もしかしてまたIP制限に引っかかったのかもしれないので一応記録しておきます。
youtubeの仕様変更でyoutube-dlが使えなくなったのかもしれないです。
バージョンアップをすればOKなのかも?
2021-02-18 18:48:42 ffmpegのインストールに入ったようだ。緑色の所の依存関係もインストールするらしい。多いって!!
2021-02-18 18:01:28 brew恐ろしくてまかかってます。
手間もかかるしディスク容量どうなんだといことで。
ディスク容量。
df -h
/dev/sdb1 71G 57G 11G 85% /
結構容量食っていますね。これ何とかしないとならないな。
しかし元が71GBしかないってのが問題なのかねと。
単にこれで足りると思って割り当ててないだけなんですが。
18:26分、既に一時間以上インストールコマンドが終わらない。
何か不安になって来るけど、放置して見守るしかありません。
トラブル対応に時間をかけるのは嫌ですし、他にしなきゃならんこともなるのにってやつです。
今日解決できなかったら一旦保留になってしまいます。
既に1GBディスク容量を消費したようです。
調べてみると数時間かかることも・・・とあるようなので。
2021-02-18 17:17:51 多分youtube-dlが動いていないと当たりを付けました。
podsyncが最近ダウンロードできないことに気が付きました。
多分youtube-dlが動いていないと当たりを付けました。
sh /opt/lampp/htdocs/personal/podsync/run.sh
みたいに実行したログを見て判断しています。
failed to execute youtube-dl: exit status 1
となっているからです。
youtube-dl –version
2016.02.22
随分と古い気がします。
しかし、コマンドでyoutube-dlでダウンロードできるか試してからでもいい気がしました。
とはいえアップデートしてみています。
https://t-pirori.blogspot.com/2019/12/youtube-dl-Update.html
It looks like you installed youtube-dl with a package manager, pip, setup.py or a tarball. Please use that to update.
パッケージマネージャーでインストールしていると。
その方法を調べていると、
http://nekomemo2.site/?eid=1655
他のところで検索してみたら、brewでインストールすると行けるとなっていたので、
brew install youtube-dl ffmpeg
brew 自体は行っていなかったので言われるままにインストール。
https://github.com/Linuxbrew/brew/blob/master/docs/Troubleshooting.md
brew update を2回やるとかあったような。
brew install youtube-dl ffmpeg
インストール中の様子。関連ソフトも含めて自動でやろうとしてくれていると思われます。
を実行中。勝手にパッケージをインストールして、管理してくれるはずと思っています。
あと、.configに自動アップデートを追加しておきました。何故かなかったので。
[downloader]
self_update = true # Optional, auto update youtube-dl every 24 hours
timeout = 15 # Timeout in minutes
あと、brewはソースからmakeしてmake installまでをコマンド一つでやってくれるという便利なやつなんだろうと思っています。