بایگانی برچسب: s

ارسال فایل‌های حجیم یک پوشه توسط SSH+telegram-cli+pytg به تلگرام

کاری که امروز میخوام بکنم اینه که از طریق  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 ورودی اول همون یونیک آی‌دی جایی هست که می‌خوایم بهش فایل‌ها رو بفرستیم. ورودی دوم ادرس فایل هست و ورودی سوم کپشن زیر ویدیو هست.

چند تا نکته : یک دستورا رو کپی پیست نکنید  تو رفتگی شون رعایت نشده پایتون دندون میگیره. دو اون اسلیپ ۴۰۰ برای اینه که پیش‌فرض ارسال فایل پای‌تی‌جی یک دقیقه هست و اگه بیشتر از یک دقیقه طول بکشه هشدار میده ولی ویدیو رو تلگرام کلای می‌فرسته . به من بر حسب تجربه هر فایلی بیشتر از چارصد ثانیه طول نمی‌کشه.اگه کسی بلده چطور زمان تایم اوت پای‌تی‌جی رو میشه عوض کرد بگه بزارم همیجا.

پسندها(1)شاکی(0)