প্রকল্প সম্পর্কে

## প্রকল্প পরিচিতি etlp (embyToLocalPlayer) একটি লোকাল প্লেয়ার ব্রিজ টুল: Emby / Jellyfin ওয়েবপেজে মূল প্লে বাটনে ক্লিক করলে তা পরিবর্তে কম্পিউটারে ইনস্টল করা প্লেয়ারে চালায় এবং প্লেয়ার স্বাভাবিকভাবে বন্ধ হওয়ার পর প্লেব্যাক অগ্রগতি মিডিয়া সার্ভারে ফেরত পাঠায়। README-তে বলা হয়েছে এটি Plex-এর সাথে সামঞ্জস্যপূর্ণ। ## প্রধান সক্ষমতা - হোমপেজ থেকেই প্লে করা যায়, মূল প্লে বাটনে ক্লিক করলে ট্রিগার হয়; একাধিক সংস্করণের ভিডিওর জন্য সংস্করণ অগ্রাধিকার কনফিগার করা যায়। - প্লেলিস্ট (ধারাবাহিক প্লেব্যাক) সমর্থিত, পরের এপিসোড একই সংস্করণ বজায় রাখে। - bgm.tv / bangumi.tv, simkl.com, trakt.tv-তে একমুখীভাবে দেখা-চিহ্নিতকরণ সমর্থিত। - লোকাল মাউন্ট ব্যবহারকারীরা পাথের সংশ্লিষ্ট ফোল্ডারে যেতে পারেন (বাটন ওয়েবপেজের ফাইল পাথের উপরে দেখানো হয়)। - অসমর্থিত প্লেয়ারও সাধারণত চালানো যায়, শুধু অগ্রগতি ফেরত পাঠায় না। - qBittorrent WebUI-তে সরাসরি প্লে বা মাউন্ট করা ফোল্ডারে যাওয়া যায় (সহায়ক স্ক্রিপ্ট প্রয়োজন)। - একটি ছদ্ম-সমষ্টিগত সার্চ স্ক্রিপ্ট (embyEverywhere) সংযুক্ত। ## অগ্রগতি ফেরত পাঠাতে সক্ষম প্লেয়ার mpv (mpv.net এবং অন্যান্য mpv কোর প্লেয়ারসহ), PotPlayer, MPC-HC, MPC-BE, VLC, IINA (macOS)। README সুপারিশ করে বিশেষ প্রয়োজন না থাকলে mpv সিরিজকে অগ্রাধিকার দিতে। ## ইনস্টলেশন ও চালানোর পদ্ধতি 1. ব্রাউজারে Tampermonkey বা Violentmonkey-এর মতো ইউজারস্ক্রিপ্ট প্লাগইন ইনস্টল করে ডেভেলপার মোড চালু করুন, সংশ্লিষ্ট ইউজারস্ক্রিপ্ট ইনস্টল করার পর Emby পেজ রিফ্রেশ করুন। 2. রিলিজ পেজ থেকে zip ডাউনলোড করে ইংরেজি পাথে এক্সট্র্যাক্ট করুন, তিনটি বিকল্প: - `etlp-mpv-py-embed-win32.zip` (Windows, অন্তর্নির্মিত mpv, কনফিগারেশন পরিবর্তন লাগে না); - `etlp-python-embed-win32.zip` (Windows, ini-তে প্লেয়ার পাথ ও নির্বাচন কনফিগার করতে হবে); - `embyToLocalPlayer.zip` (Windows / Linux / macOS, নিজে Python ইনস্টল করে কনফিগারেশন পরিবর্তন করতে হবে)। 3. Windows-এ `embyToLocalPlayer_debug.bat` ডাবল ক্লিক করুন, 1 চেপে ফোরগ্রাউন্ডে চালিয়ে পরীক্ষা করুন, 2 চেপে বুটে স্বয়ংক্রিয় ব্যাকগ্রাউন্ড চালনা তৈরি করুন। 4. macOS / Linux-এ `etlp_run.command` দিয়ে চালান, এবং লগইন আইটেম, systemd সার্ভিস ইত্যাদি স্বয়ংক্রিয় চালনার উদাহরণ দেওয়া হয়েছে। Python সর্বনিম্ন 3.8, Windows সর্বনিম্ন 10 সমর্থিত। ## মোড ও কনফিগারেশনের মূল বিষয় - ইউজারস্ক্রিপ্ট প্লাগইন মেনু দিয়ে সুইচ করুন: স্ক্রিপ্ট সক্রিয়/নিষ্ক্রিয়, ডিস্ক রিড মোড সুইচ। - ডিস্ক রিড মোড সার্ভার পাথকে লোকাল ফাইল অ্যাড্রেসে রূপান্তর করে, ini-তে পাথ প্রতিস্থাপনের নিয়ম লিখতে হবে; `dev > path_check = yes` ফাইল বিদ্যমান কিনা পরীক্ষা করে এবং NFC/NFD পরিচালনা করে। - পার্সিস্টেন্ট ক্যাশ মোড শুধু কনফিগারেশন ফাইল দেখে, ইউজারস্ক্রিপ্ট সেটিংসের সাথে সংঘর্ষ হয় না। - আপডেট পদ্ধতি: Windows-এ bat-এ 6 চাপুন, Linux/macOS-এ `python3 utils/update.py` চালান, এবং `embyToLocalPlayer_diff.ini` তুলনা করুন। ## সাধারণ সমস্যা ও সীমাবদ্ধতা - প্লেয়ার বন্ধ হলেই অগ্রগতি ফেরত পাঠানো ট্রিগার হয়; লগে `serving at 127.0.0.1:58000` দেখা গেলে সার্ভিস সফলভাবে চালু হয়েছে। - Emby-র অন্তর্নির্মিত সাবটাইটেল/অডিও ট্র্যাক নির্বাচন কার্যকর নয়, বাহ্যিক সাবটাইটেল/অডিও ট্র্যাক কার্যকর, অন্তর্নির্মিত সাবটাইটেল প্লেয়ারকে নির্বাচন করতে দেওয়া হয়। - প্লেলিস্ট ডিফল্টভাবে সক্রিয়, নিষ্ক্রিয় না করার সুপারিশ; ওয়েবপেজের সব প্লে/এলোমেলো প্লে/প্লেলিস্ট শুধু মুভি ও মিউজিক ভিডিও টাইপ সমর্থন করে। - PotPlayer-এ রেন্ডারিং Pin ব্যর্থতা, `KeyError: 'stream.mkv'` ইত্যাদি সমস্যা হতে পারে, README-তে ইনিশিয়ালাইজেশন সেটিংস, সংস্করণ পরিবর্তন, ডিস্ক রিড মোডে যাওয়া ইত্যাদি সমাধানের ধাপ দেওয়া আছে। - IINA-তে প্লে শেষে বন্ধ হওয়ার সেটিং দরকার, নাহলে অগ্রগতি ফেরত পাঠানো প্রভাবিত হয়; নন-ডিস্ক রিড মোডে প্লেলিস্ট সমর্থিত নয়। - Jellyfin হোমপেজে প্লে শেষ হওয়ার 10 সেকেন্ডের মধ্যে একই ফাইল আবার প্লে করলে প্লে টাইম ভুল হতে পারে। - Plex ডোমেইনে DNS দূষণ থাকতে পারে, DNS পরিবর্তন বা প্রক্সি ব্যবহার করতে হবে। ## দেখার রেকর্ড সিঙ্ক - bangumi.tv: অ্যাক্সেস টোকেন তৈরি করে ini-তে লিখতে হবে, শুধু একমুখী সিঙ্ক, শুধু সাধারণ সিরিজ সমর্থিত, থিয়েটার সংস্করণ ইত্যাদি সমর্থিত নয়; README-তে সিক্যুয়েল শনাক্তকরণ ও মুক্তির তারিখ মেলানোর কৌশল বিস্তারিত আছে। - simkl: dev পেজে app তৈরি করতে হবে, Redirect uri `http://localhost:58000/simkl_auth`, client_id/secret লিখলে স্বয়ংক্রিয় অনুমোদন। - trakt.tv: app তৈরি করতে হবে, Redirect uri `http://localhost:58000/trakt_auth`, user_name/client_id/client_secret লিখে অনুমোদন। - তিনটিই শুধু প্লেয়ার স্বাভাবিকভাবে বন্ধ হওয়ার পর সিঙ্ক করে, ওয়েবপেজে ক্লিক করা দেখা-চিহ্নিতকরণ ট্রিগার করে না। ## লুকানো ফিচার (README-তে অসমর্থিত হিসেবে চিহ্নিত) iso ব্লুরে/bdmv প্লেব্যাক (VLC সুপারিশ, iso অগ্রগতি ফেরত পাঠায় না), লোকাল রিডাইরেক্ট/প্লে অ্যাড্রেস প্রতিস্থাপন, strm LAN সিঙ্ক প্লেব্যাক অগ্রগতি, mpv থেকে lua স্ক্রিপ্টে ডেটা পাঠানো, mpv স্বয়ংক্রিয়ভাবে ওপেনিং/এন্ডিং স্কিপ, পরের এপিসোড প্রি-রিড, কন্টিনিউ ওয়াচিং প্রি-রিড, Telegram আপডেট নোটিফিকেশন, পার্সিস্টেন্ট ক্যাশ (ডাউনলোডের সময়ই প্লে), দানদানপ্লে ড্যানমাকু প্লেয়ার সমর্থন, এবং Pot ডিস্ক রিড মোডে Emby-কে মানদণ্ড ধরে প্লেলিস্ট ইত্যাদি। ## ফিডব্যাকের শর্ত README জোর দিয়ে বলে ফিডব্যাকের আগে সর্বশেষ সংস্করণে আপডেট করুন, mpv-সহ পোর্টেবল সংস্করণ দিয়ে পরীক্ষা করুন, অন্তত দুটি ভিডিও পরীক্ষা করুন, লগ ও পুনরুৎপাদনের ধাপ দিন, শর্ত না মানলে ফিডব্যাক উপেক্ষা করা হবে।