
یک کاربر پس از یک سال استفاده از سرور رسانه خودمیزبان (self-hosted media server) و آزمودن Plex، Jellyfin و Emby، در نهایت Jellyfin را انتخاب کرده است. با این حال، مشکل همیشگی او جستوجوی دستی زیرنویس (subtitle) بوده؛ فرایندی که به گفته او بارها تجربه تماشا را نیمهکاره کرده است. او در نهایت با خودکارسازی این بخش، ماهها است که برای زیرنویس کتابخانهاش کاری انجام نداده است.
چرا جستوجوی دستی زیرنویس آزاردهنده بود؟
به نوشته XDA Developers، Jellyfin امکان دریافت دستی زیرنویس را فراهم میکند، اما این کار پخش را متوقف میکند و کاربر را در میان منوهای متعدد گرفتار میکند. حتی پس از دانلود نیز باید امیدوار بود فایل زیرنویس با نسخه ویدئو همخوانی داشته باشد. افزونه رسمی OpenSubtitles برای دریافت گاهبهگاه زیرنویس کارآمد است، اما به گفته نویسنده برای نگهداری زیرنویس یک کتابخانه کامل بدون دخالت کاربر کافی نیست.
دانلودهای زمانبندیشده زیرنویس در Jellyfin نیز به گفته او شفافیت کمی دارند؛ مشخص نیست چه چیزی دانلود میشود، از کدام ارائهدهندهها پرسوجو میشود یا چرا برخی قسمتها بدون زیرنویس میمانند. به بیان او، دانلود یک زیرنویس با نگهداری زیرنویس در کل کتابخانه دو مسئله متفاوت است.
Bazarr چگونه بدون اتصال مستقیم به Jellyfin کار میکند؟
راهحل نهایی Bazarr است؛ برنامهای که برخلاف انتظار مستقیماً با Jellyfin یکپارچه نمیشود و حتی پوشههای رسانه را خودش اسکن نمیکند. Bazarr برای پیگیری سریالها و فیلمها به Sonarr و Radarr تکیه میکند و از اطلاعات آنها برای یافتن زیرنویس مناسب استفاده میکند. پس از پیدا شدن تطابق، فایل زیرنویس را معمولاً بهصورت فایل SRT جانبی (SRT sidecar) در کنار ویدئو ذخیره میکند. Jellyfin هم در اسکنهای دورهای کتابخانه (library scans) آن را شناسایی و برای پخش در دسترس قرار میدهد.
این روش به افزونه (plugin)، یکپارچهسازی API یا پیکربندی ویژه Jellyfin نیاز ندارد. به گفته نویسنده، مزیت طراحی آن این است که Bazarr در سطح فایلسیستم (filesystem) عمل میکند و بنابراین به نوع سرور رسانه وابسته نیست؛ Jellyfin، Plex و Emby میتوانند از همین خودکارسازی زیرنویس بهره ببرند. البته یک شرط وجود دارد: برای اجرای Bazarr باید Sonarr و Radarr نیز در حال اجرا باشند.
پیکربندی با Docker و نقش Sonarr و Radarr
نویسنده هر سه برنامه Sonarr، Radarr و Bazarr را در یک فایل Docker Compose قرار داده است. هر سه از والیومهای نامدار (named volumes) برای پیکربندی و مسیرهای رسانهای یکسانِ بایند-مانتشده (bind-mounted) استفاده میکنند. نصب Jellyfin او بهصورت بومی (native) روی ویندوز اجرا میشود، در حالی که برنامههای خانواده *arr در Docker قرار دارند و به همان پوشههای رسانه دسترسی دارند.
پس از وارد کردن کتابخانههای موجود، Sonarr و Radarr فهرست سریالها و فیلمها را بهروز نگه میدارند و Bazarr تصویری پیوسته از محتوای سرور رسانه به دست میآورد. Bazarr بهطور دورهای زیرنویسهای گمشده را با ارائهدهندههای تنظیمشده بررسی میکند و در صورت یافتن تطابق مناسب، فایل را کنار ویدئو دانلود میکند. اگر در جستوجوی اولیه موفق نشود، جستوجوهای بیشتری را زمانبندی میکند و بهطور منظم به دنبال گزینههای بهتر برای جایگزینی زیرنویسهای فعلی نیز میگردد.
اکنون هر قسمت جدیدی که به کتابخانه اضافه میشود، بدون باز کردن مرورگر، مقایسه نام نسخهها یا توقف پخش برای یافتن فایل SRT، زیرنویس خودکار دریافت میکند. به گفته نویسنده، پس از ماهها هنوز لازم نبوده برای زیرنویس کاری انجام دهد.
محدودیتها و نتیجه تجربه
نویسنده Bazarr را به OpenSubtitles.com متصل کرده است و سطح رایگان آن محدودیت دانلود روزانه دارد؛ به همین دلیل پرکردن اولیه کتابخانه چند روز طول کشیده است. او میتوانست برای سرویس ضدکپچا (anti-captcha service) هزینه کند و از ارائهدهنده دیگری استفاده کند، اما گزینه رایگان را ترجیح داده است. به گفته او، خودمیزبانی قابلاعتماد به معنی نصب هر یکپارچهسازی ممکن نیست؛ بلکه بهرهگیری درست از سرویسهای پایدار برای انجام کارهای تکراری اهمیت دارد. با این حال، نگهداری گاهبهگاه بخشی از تجربه خودمیزبانی باقی میماند.