NabiKAZ / filimo-downloader

Download movies from filimo.com | لینک جایگزین جهت احتیاط: https://gitlab.com/NabiKAZ/filimo-downloader
GNU General Public License v3.0
143 stars 17 forks source link

عدم از سر گیری دانلود #14

Closed shahsavarzade closed 6 years ago

shahsavarzade commented 6 years ago
سلام تشکر میکنم از نرم افزار خوبتون یک عیب بزرگ که این روش داره و توی اپ شما هم صادقه اینه که ffmpeg وقتی از فایل m3u8 میخواد دانلود کنه فایلو کلی در نظر میگیره در نتیجه وقتی اواسط دانلود اینترنت یه قطعی چند ثانیه ای بخوره دانلود استوپ میشه و هیچ راهی نیست بشه از ادامه دانلود کرد من قبلا مستقیما با ترمینال و ffmpeg میگرفتم با اپ شمام همینطوره کلی از فیلمو میگیرم سرعت نتمم متوسطه بعد یهو چند ثانیه که قطعی میخوره یه گیگ فایل که دانلود کردم خراب میشه لطفا برای این مشکل راه حلی قرار بدید که اپتون بی نقص بشه دیگه فکر کنم بشه با ffmpeg از ادامه دانلود کرد و بعد قسمت های دانلود شده رو به هم چسبوند
NabiKAZ commented 6 years ago
متأسفانه فایلهای `m3u8` به دلیل استریم بودن، در زمان دانلود امکان pause/resume ندارند. (با [ترفندهایی](https://video.stackexchange.com/a/17069/14612) مثل ایجاد تأخیر در پروسه، شاید بشه این امکان رو فراهم آورد، اما در صورت قطع و از بین رفتن پروسه، که مد نظر سوأال شما بود، کارایی ندارند) البته راه حلی در اینجا مطرح شده که بد نیست: https://video.stackexchange.com/a/17062/14612 بدین صورت است که ویدیو رو پارت پارت دانلود میکنه و در نهایت اونها رو بهم میچسبونه. بنابراین اگر وسط کار قطع شد، از آخرین پارت هر دقیقه ای که هست، با اضافه کردن سوئیچ `‎-ss` میشه از ادامه دانلود رو ادامه داد. برای مثال پارتها رو 1 دقیقه ای تعریف میکنیم و بعد از مدتی عملیات متوقف میشود. حال میبینیم که 10 پارت موجود داریم پس طبیعاً تا دقیقه 10 دانلود شده و باید از دقیقه 11 ادامه بدیم، پس دفعه بعد سوئیچ `‎-ss 00:11:00` رو اضافه میکنیم. همه اینها رو هم میشه با یه bash script یکپارچه و خودکار کرد. فقط متأسفانه باید بگم که با تستسی که من کردم برای فایلهای ما که استریم هستند، وقتی از ادامه شروع به دانلود میکنه، مجدداً از ابتدا باید ویدیو رو مرور کنه تا به نقطه شروع برسه که خب اینکار باعث صرف زمان اضافه و البته خوردن ترافیک بیهوده میشه. نکته دیگه ای که شاید بشه روش کار کرد اینه که درسته که ویدیوهای ما ظاهراً استریم دریافت میشن اما عملاً در فایل `m3u8` اولیه، تمامی پارت های `ts` به شکل پارتهای 6 یا 12 ثاتیه ای موجود هستند. بنابراین اگر ملاک دانلود رو روی همین فایلها قرار بدیم و در نهایت اونها رو بهم بچسبونیم. به سادگی میشه دونست تا کدوم پارت دانلود انجام شده و بعد از ادامه دانلود بشه. که خب نیاز به یه الگو برای درآوردن همه ts فایلهاست و باقی ماجرا... اگر براتون این مشکل حاده، میتونید از پروژه فورک بگیرید و روی روشی که گفتم کار کنید.