
کاری که امروز میخوام بکنم اینه که از طریق SSH وصل بشم به ماشین مجازیم، تمام ویدیوهای جادی توی یوتیوب رو دانلود کنم و با تلگرام تحت خط فرمان و کتابخونه پایتونی pytg ویدیوها رو ارسال کنم کانال تلگرامم.
خوب با دستور SSH وارد VPSم شدم و توی پوشه /tmp یه پوشه jadi ساختم بعد با دستور زیر همه ویدیو های کانال یوتیوب جادی رو دانلود کردم.
youtube-dl -i https://www.youtube.com/user/jadi19jadi19/videos
آرگومان -i میگه که اگه توی دانلود ویدیویی به مشکل بر خوردی برو سراغ ویدیو بعدی و کلا از برنامه خارج نشو.
اگه youtube-dl رو نصب ندارید میتونید به راحتی با دستور زیر آخرین نسخه شو نصب کنید.
python3 -m pip install --upgrade --user youtube-dl
آرگومان –user میگه که فایلها و کتابخونه های مورد نیاز رو برای همین یوزر نصب کن فقط. که نیاز به دسترسی های مدیری نداره.
برای آشنایی با سایر قابلیتهای youtube-dl میتویند گیت نرمافزار رو مطالعه کنید.
https://github.com/rg3/youtube-dl/blob/master/README.md#format-selection
خوب کل ویدیوهای جادی دانلود شدن.
حالا اگه تلگرام کلای رو نصب ندارید از آدرس زیر نصب کنید:
https://github.com/vysheng/tg
بعد از نصب با یه پورت دلخواه و به صورت خروجی جیسون اجراش میکنیم.
/tmp /home/saeb/App/tg/bin/telegram-cli --json -P 4667
برای ارسال به یک کانال تلگرام نیاز داریم که یونیک آی دی کانال رو بدونیم. توی تلگرام کلای دستور زیر رو اول مینویسیم
channel_list
بعد با دستور زیر اطلاعات کانال مورد نظرمون رو میگیریم.
channel_info اطراف_من
{"id": "$050000007d208f3f0115b300fb607ab4", "print_name": "اطراف_من", "flags": 65603, "peer_type": "channel", "title": "اطراف من", "peer_id": 1066344573, "participants_count": 8, "admins_count": 3, "kicked_count": 0}
خوب یونیک آیدی کانال ما میشه "$050000007d208f3f0115b300fb607ab4"
حالا تلگرام کلای رو باز میزاریم و میریم سراغ پایتون
اول از همه کتابخونه pytg رو نصب میکنیم.
python3 -m pip install pytg --upgrade --user
حالا پایتون رو اجرا میکنیم و کتابخونه های مورد نیازمون رو توش صدا میزنیم.
saeb@Fujitsu ~ python3
import subprocess from pytg.sender import Sender from time import sleep sender = Sender(host="localhost", port=4667)
خوب فایلهای پوشه ای که توش ویدیوها رو ریختیم که به من پوشه
/tmp/jadi
هست رو به صورت یه لیست ذخیره میکنیم.
ls=subprocess.getoutput('find /tmp/jadi -name "*.*"').splitlines()
خوب حالا فایلهامون رو میفرستیم به کانال
for i in ls: try: sent=sender.send_video("$050000007d208f3f0115b300fb607ab4",i,i.split('/')[3]) if sent: subprocess.run('mv',i,'/tmp') except: sleep(400)
توی دستور sender.send_video ورودی اول همون یونیک آیدی جایی هست که میخوایم بهش فایلها رو بفرستیم. ورودی دوم ادرس فایل هست و ورودی سوم کپشن زیر ویدیو هست.
چند تا نکته : یک دستورا رو کپی پیست نکنید تو رفتگی شون رعایت نشده پایتون دندون میگیره. دو اون اسلیپ ۴۰۰ برای اینه که پیشفرض ارسال فایل پایتیجی یک دقیقه هست و اگه بیشتر از یک دقیقه طول بکشه هشدار میده ولی ویدیو رو تلگرام کلای میفرسته . به من بر حسب تجربه هر فایلی بیشتر از چارصد ثانیه طول نمیکشه.اگه کسی بلده چطور زمان تایم اوت پایتیجی رو میشه عوض کرد بگه بزارم همیجا.

