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

Audioserve হলো Rust-এ লেখা একটি ব্যক্তিগত অডিও সার্ভার, যা সরাসরি ডিরেক্টরি স্ট্রাকচার থেকে অডিও ফাইল পরিবেশন করে। এটি মূলত অডিওবুকের জন্য উদ্দিষ্ট, যদিও সুসংগঠিত যেকোনো ফোল্ডার সংগ্রহ কাজ করে। এর ডিজাইনে সরলতা ও মিনিমালিস্ট পদ্ধতির উপর জোর দেওয়া হয়েছে। মিডিয়া লাইব্রেরি: Audioserve অডিও ট্যাগের উপর নির্ভর না করে ফাইল সিস্টেম ব্রাউজ করে, তাই আপনি যে ফোল্ডার স্ট্রাকচার তৈরি করবেন সেটিই দেখতে পাবেন। সুপারিশকৃত লেআউটের মধ্যে রয়েছে author/book বা author/series/book। ফাইলগুলো স্বাভাবিকভাবে সাজানো যায়, তাই সংখ্যাগত প্যাডিং ঐচ্ছিক। ফোল্ডারে রাখা কভার ইমেজ ও বর্ণনা ফাইল প্রদর্শনের জন্য ব্যবহৃত হয়, এবং সার্চ ফোল্ডার নামের উপর চলে। একাধিক কালেকশন আলাদা কমান্ড-লাইন আর্গুমেন্ট হিসেবে দেওয়া যায়। ক্যাশিং: কালেকশন ডেটা একটি এমবেডেড কী-ভ্যালু ডেটাবেসে (sled) ক্যাশ করা হয়, যা অনেক ফাইলযুক্ত ফোল্ডারের সার্চ ও লোডিং দ্রুত করে। বড় কালেকশনের জন্য প্রথম স্ক্যানে সময় লাগতে পারে। পরিবর্তনগুলো ডিফল্টভাবে inotify-এর মাধ্যমে পর্যবেক্ষণ করা হয়, এবং একটি সিগন্যাল বা --force-cache-update আর্গুমেন্ট দিয়ে সম্পূর্ণ পুনঃস্ক্যান বাধ্যতামূলক করা যায়। আলাদা কালেকশন :no-cache দিয়ে অপ্ট আউট করতে পারে, তবে এর ফলে সার্চ ধীর হয় ও পজিশন শেয়ারিং থাকে না। একক-ফাইল অডিওবুক: .m4b এবং চ্যাপ্টার মেটাডেটাযুক্ত অনুরূপ ফাইলগুলো ভার্চুয়াল চ্যাপ্টার ফাইল ধারণকারী ফোল্ডার হিসেবে উপস্থাপিত হয়। চ্যাপ্টারগুলো সময়কাল থেকে তৈরি করা যায় বা একটি .chapters CSV ফাইলের মাধ্যমে সরবরাহ করা যায়। CD সাবফোল্ডারগুলো ঐচ্ছিকভাবে প্যারেন্ট ফোল্ডারে সংকুচিত করা যায়। প্লেব্যাক পজিশন: একই ডিভাইস গ্রুপের ক্লায়েন্টরা একটি WebSocket সংযোগের মাধ্যমে প্লেব্যাক পজিশন শেয়ার করতে পারে, যা অন্য ডিভাইসে চালিয়ে যাওয়ার সুযোগ দেয়। পজিশনগুলো JSON-এ ব্যাকআপ ও পুনরুদ্ধার করা যায়। শেষ শোনার অবস্থানের ভিত্তিতে সম্পন্ন ফোল্ডার চিহ্নিত করা হয়। নিরাপত্তা: একটি শেয়ার্ড সিক্রেট দ্বারা অ্যাক্সেস নিয়ন্ত্রিত হয়; নামযুক্ত ব্যবহারকারী নেই। সিক্রেটটি একটি salted hash হিসেবে পাঠানো হয়, এবং সার্ভার পরবর্তী অনুরোধের জন্য টোকেন ইস্যু করে। TLS সরাসরি বা রিভার্স প্রক্সির মাধ্যমে সমর্থিত, এবং রেট লিমিটিং উপলব্ধ। API-তে লুকানো ফাইল ব্লক করা হয়। ট্রান্সকোডিং ও পারফরম্যান্স: Audioserve অডিওকে নিম্ন বিটরেটে ট্রান্সকোড করতে পারে, সাথে ঐচ্ছিক ট্রান্সকোডিং ক্যাশ। এটি রেসপন্স কম্প্রেশন ও HTTP/2 সমর্থন করে। ক্লায়েন্ট ও API: একটি আধুনিক PWA ওয়েব ক্লায়েন্ট (TypeScript/Svelte) অন্তর্ভুক্ত, সাথে একটি পুরোনো ওয়েব ক্লায়েন্ট ও একটি Android ক্লায়েন্ট। একটি ডকুমেন্টেড HTTP API কাস্টম ক্লায়েন্ট তৈরির সুযোগ দেয়। ইনস্টলেশন: বিকল্পগুলোর মধ্যে রয়েছে Docker ইমেজ, স্ট্যাটিক Linux বিল্ড, লোকাল বিল্ড, এবং collation, tags-encoding, shared-positions, transcoding-cache ও behind-proxy-এর মতো ঐচ্ছিক ফিচারসহ কম্পাইলেশন।