لیت‌فلیکس، پروژه آخر هفته‌ای برای تماشای فیلم و سریال مثل دزدان دریایی

یک روز آخر هفته، داشتم در اپلیکشن Apple TV می‌گشتم و فیلم‌ها و سریال‌هایی که دم دست بودند رو بررسی می‌کردم. متاسفانه بنا به دلایل متعدد مثل قیمت ارز خارجی و تحریم و ...، تنها کاری که می‌تونستم بکنم این بود که صرفا عناوینی که به نظرم جذابن رو یادداشت کنم. بعد از این که عناوین مورد نظرم رو پیدا کردم، رفتم که از سایت‌های دانلود غیرقانونی فارسی دانلودشون کنم. دیدم که اکثر این‌ها، اشتراک می‌فروشن. درسته وبسایت هزینه داره اما به نظرتون اشتراک فروختن برای متریال دزدی، یکم زیادی چیز نیست؟! با اعانه و دونیشن راحت‌تر میشه کنار آمد تا خرید اشتراک. خلاصه، گفتم برم سراغ یاور همیشه مومن تورنت. اما از طرفی، دلم هم نمی‌خواست که یک سره دانلود کنم. بلکه دلم می‌خواست که استریم کنم و یه چیزی شبیه اپل‌تی‌وی داشته باشم، اما احتمالا اپل‌تی‌وی که دزدان دریایی استفاده می‌کنن. یکی از سایت‌های خوبی که برای دریافت فیلم و سریال استفاده می‌کنم 1337x نام داره. اگر کمی با فرهنگ هکری آشنا باشید، می‌دونید که 1337 به شکل Leet خونده میشه. پس اینجا ایده‌ش آمد که اسم پروژه بشه «لیت‌فلیکس» یعنی یه جور بازی با «نت‌فلیکس». بعد دست به کد شدم. در ادامه، داستان کدزنی رو هم باهاتون به اشتراک می‌ذارم. مراحل ساخت نرم‌افزارپیدا کردن API مناسب برای جستجو در تورنتاول، گفتم خب بگردم دنبال یک API مناسب که بتونه در تورنت جستجو کنه و برای ما مگنت پیدا کنه. متاسفانه، هیچ گزینه خوب و مناسبی نیافتم. یکی دو تا پیدا کردم اما هیچ کدوم کار نمی‌کردند. یکی از مشکلات تورنت، اینه که خیلی از دایرکتوری‌هاش توسط دولت‌ها به دلایل متعددی مثل نقض کپی‌رایت، بسته میشن. به همین دلیل خیلی از ابزارها بعد مدتی ممکنه از کار بیفتن. پس به سرم زد که خودم ابزاری بنویسم که کلمات کلیدی بگیره و جستجو رو در 1337x انجام بده ... ساخت API وقتی یک کراولر ساده نوشتم، به سرم زد که این کراولر رو ببرم تو فرم یک REST API و باهاش جستجو کنم. به همین خاطر یک سری بهبود جزیی در کراولر دادم، یک اپ ریز فلسکی نوشتم و بعد اون رو روی سروری دپلوی کردم :) به همین سادگی، یک API جستجوی تورنت رو ساختم. استریم کردن از تورنتخب یکی از مهم‌ترین بخشا همین بود. نمی‌خواستم از اپ‌های موجود مثل strem.io استفاده کنم. کل پوینت من این بود که یک چیزی رو از زمین صفر بسازم. فلذا دنبال این گشتم که ببینم آیا می‌تونم با یک پخش‌کننده مرسوم چنین کاری کنم؟! در جریان جستجوهام به ابزاری رسیدم به اسم webtorrent که ظاهرا مرورگر brave ازش استفاده می‌کنه و دیدم که یک نسخه خط‌فرمانی هم داره که می‌تونه مگنت مورد نظر رو بگیره و در پلیرهای معروف مثل AirPlay (برای Apple TV) و VLC پخششون کنه. پس این رو نصب کردم، VLC هم نصب کردم و با چند مگنت تستش کردم. وقتی مطمئن شدم که کار می‌کنه، نشستم پای کد زدن و اپ رو نوشتم. نوشتن اپاز اونجایی که می‌خواستم اول یک پروتوتایپ ازش بسازم، نشستم به کد زدن به شکلی که کلیدواژه رو از کاربر بگیره، در API سرچ کنه و بعدش با انتخاب کاربر شروع کنه به استریم کردن. مرحله به مرحله نوشتم. حتی در مرحله پروتوتایپ هم واقعا چیز خوبی از آب درآمده بود. فلذا، کاری که کردم چه بود؟ این که پروتوتایپم رو یکم مرتب کردم و منتشرش کردم. حقیقتا، در فضای توییتر ترکوند :) برای این که مدرکش هم موجود باشه لینک توییت رو در اینجا قرار می‌دم: https://twitter.com/muhammadrezahgh/status/1401812105855225858 و خب این داستان یک پروژه آخر هفته‌ای بود :) لینک به نرم‌افزار https://github.com/prp-e/leetflix-cli اول ممنونم از وقتی که بابت خوندن این مقاله گذاشتید، دوم هم چه پروژه آخر هفته‌ای باحالی کد زدید؟ می‌تونید در بخش نظرات با من به اشتراک بذارید :)