مكتبة عملاء .NET Standard لشبكة Soulseek.
التثبيت من NuGet.
varclient = new SoulseekClient();await client.ConnectAsync("Username", "Password"); استجابات IEnumerable<SearchResponse> = تنتظر Client.SearchAsync(SearchQuery.FromText("بعض البحث")); ملاحظة: يقبل SearchAsync SearchQuery باستخدام المُنشئ SearchQuery(string query, IEnumerable<string> exclusions, int? minimumBitrate, int? minimumFileSize, int? minimumFilesInFolder, bool isVBR, bool isCBR) ، مما يسمح بجميع الخيارات التي يوفرها العميل الرسمي.
SearchResponse له الشكل التالي:
int FileCountIReadOnlyCollection<File> Filesint LockedFileCount IReadOnlyCollection<File> LockedFilesint FreeUploadSlots رمز طول قائمة الانتظار الطويلة int UploadSpeedstring اسم المستخدم
يحتوي File على عدد من الخصائص؛ ستحتاج إلى Filename Size للتنزيل.
byte[] file = انتظار Client.DownloadAsync(اسم المستخدم: "اسم مستخدم ما"، اسم الملف: "اسم ملف مؤهل بالكامل"، الحجم: 42);
أو (مثالي)
var fs = new FileStream("c:downloadslocal filename", FileMode.Create);await Client.DownloadAsync(اسم المستخدم: "بعض اسم المستخدم"، اسم الملف: "بعض أسماء الملفات المؤهلة بالكامل"، OutputStream: fs، الحجم: 42) ;ملاحظة: قم بالتنزيل إلى دفق حيثما أمكن ذلك لتقليل حمل الذاكرة.
الواجهة الخارجية للمكتبة متناثرة وموثقة بشكل جيد؛ أفضل مورد هو الكود نفسه. ذات أهمية خاصة:
ISoulseekClient
SoulseekClientOptions
خيارات البحث
خيارات النقل
بدءًا من بداية عام 2024 تقريبًا، بدأ خادم Soulseek في إرسال قائمة "عبارات البحث المستبعدة" كوسيلة لتقييد المحتوى المتبادل على الشبكة وإرضاء المتصيدين بحقوق الطبع والنشر.
يتم تسليم قائمة العبارات هذه في الحدث ExcludedSearchPhrassReceived ، وأتوقع أنه يجب تصفية أي نتائج بحث صادرة لاستبعاد الملفات التي تحتوي على أي من العبارات المستبعدة في المسار أو اسم الملف.
إنني أقدر تعاون الجميع والتزامهم بضمان صحة شبكة Soulseek على المدى الطويل.
لاحظ أن تطبيق المثال قد تم استبداله بـ slskd ولن يتم الاحتفاظ به بعد الآن.
تم تضمين تطبيق ويب صغير بمثابة مثال.
من المهم ملاحظة أنه لا توجد حاليًا أي ضوابط على التحميلات؛ يمكن لأي عدد من الأشخاص تنزيل أي شيء تشاركه في أي وقت. مع أخذ ذلك في الاعتبار، فكر في مشاركة عدد صغير من الملفات من المثال.
من المهم أيضًا ملاحظة أن بعض شاشات العرض في التطبيق تستطلع البرنامج الخفي للحصول على التحديثات؛ وهذا غير فعال، ويجب ألا تستخدم هذا التطبيق عبر اتصال بيانات الهاتف المحمول.
يمكن سحب صورة Docker التي تحتوي على التطبيق من jpdillingham/slsk-web-example.
سيبدو الحد الأدنى run كما يلي:
docker run -i -p 5000:5000 -v <path/to/downloads>:/var/slsk/download -v <path/to/shared>:/var/slsk/shared -e "SLSK_USERNAME=<your username>" -e "SLSK_PASSWORD=<your password>" jpdillingham/slsk-web-example:latest
سيتم بعد ذلك الوصول إلى التطبيق على المنفذ 5000 (على سبيل المثال http://localhost:5000). مع هذا التكوين، لن يتمكن التطبيق من قبول الاتصالات الواردة ولن يتصل بالشبكة الموزعة. قد تتلقى نتائج بحث محدودة ولن يتمكن المستخدمون من العثور على ملفاتك عبر البحث. قد يواجه المستخدمون الآخرون صعوبة في تصفح مشاركاتك.
المجموعة الكاملة من الخيارات هي كما يلي:
docker run -i -p 5000:5000 -p 50000:50000 -v <path/to/downloads>:/var/slsk/download -v <path/to/shared>:/var/slsk/shared -e "SLSK_USERNAME=<your username>" -e "SLSK_PASSWORD=<your password>" -e "SLSK_LISTEN_PORT=50000" -e "SLSK_CONNECT_TIMEOUT=5000" -e "SLSK_INACTIVITY_TIMEOUT=15000" -e "SLSK_READ_BUFFER_SIZE=16384" -e "SLSK_WRITE_BUFFER_SIZE=16384" -e "SLSK_ENABLE_DNET=true" -e "SLSK_DNET_CHILD_LIMIT=10" -e "SLSK_DIAGNOSTIC=Info" -e "SLSK_SHARED_CACHE_TTL=3600000" -e "SLSK_ENABLE_SECURITY=true" -e "SLSK_SECURITY_TOKEN_TTL=604800000" -e "SLSK_ROOM_MESSAGE_LIMIT=250" -e "SLSK_BASE_PATH=/" jpdillingham/slsk-web-example:latest
مع هذا التكوين، سيستمع التطبيق على المنفذ 50000 وسيتصل بالشبكة الموزعة، مما يسمح بما يصل إلى 10 اتصالات فرعية. من المفترض ألا يواجه التطبيق أي مشكلة في الاتصال بشرط أن تقوم بإعادة توجيه المنفذ 50000 بشكل صحيح، وسوف يتلقى طلبات البحث الموزعة ويستجيب لها.
إذا كان SLSK_ENABLE_SECURITY true ، فستتم مطالبتك بتسجيل الدخول. قم بتوفير القيم التي حددتها لحقول SLSK_USERNAME و SLSK_PASSWORD . سيؤدي تعيين هذا الخيار إلى false إلى تعطيل المطالبة.
إذا كنت ترغب في تشغيل التطبيق خلف وكيل عكسي، فقم بتعيين SLSK_BASE_PATH على مسار الوكيل الخاص بك.
للراحة، تم تضمين نصين برمجيين، run و start ، في examples/Web/bin لتشغيل المثال بشكل تفاعلي وكبرنامج خفي، على التوالي.
يتم تقسيم تطبيق المثال إلى مشروعين؛ تم تشغيل .NET 5.0 WebAPI وتطبيق React مع تطبيق create-react-app. إذا كنت ترغب في تشغيل هذين التطبيقين خارج Docker، فستحتاج إلى تشغيل كلا التطبيقين؛ dotnet run لواجهة برمجة التطبيقات (API) yarn|npm start لتطبيق React. يمكنك الاتصال بـ http://localhost:3000، أو أن واجهة برمجة التطبيقات (API) تخدم Swagger UI على http://localhost:5000/swagger.
تم تضمين برنامج نصي للبناء في دليل bin للمثال والذي سينشئ تطبيق React، وينسخ الملفات الثابتة إلى دليل wwwroot الخاص بواجهة برمجة التطبيقات، ويبني واجهة برمجة التطبيقات، ثم يحاول إنشاء صورة Docker.
النيكوتين + (الأكثر حداثة)
بروتوكول Soulseek - Museek+
وثائق بروتوكول Soulseek (معكوسة)
أصبح الكثير من Soulseek.NET ممكنًا بفضل عمل الآخرين. تم استخدام الموارد التالية كمرجع:
النيكوتين زائد
نظرة حية بواسطة @misterhat
museek-plus بواسطةeLvErDe
slsk-client بواسطة @f-hj.