ไลบรารีไคลเอ็นต์ .NET Standard สำหรับเครือข่าย Soulseek
ติดตั้งจาก NuGet
var client = new SoulseekClient();await client.ConnectAsync("ชื่อผู้ใช้", "รหัสผ่าน");
IEnumerable<SearchResponse> responses = รอ Client.SearchAsync(SearchQuery.FromText("บางการค้นหา"));
หมายเหตุ: SearchAsync
ยอมรับ SearchQuery
ด้วย Constructor SearchQuery(string query, IEnumerable<string> exclusions, int? minimumBitrate, int? minimumFileSize, int? minimumFilesInFolder, bool isVBR, bool isCBR)
อนุญาตให้ใช้ตัวเลือกทั้งหมดที่มีให้โดยไคลเอนต์อย่างเป็นทางการ
SearchResponse
มีรูปร่างดังต่อไปนี้:
int FileCountIReadOnlyCollection <ไฟล์> Filesint LockedFileCount IReadOnlyCollection <ไฟล์> LockedFilesint FreeUploadSlots โทเค็นคิวยาวยาว ชื่อผู้ใช้ int UploadSpeedstring
File
มีคุณสมบัติหลายประการ คุณจะต้องมี Filename
และ Size
ในการดาวน์โหลด
byte[] file = await 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 และจะไม่ได้รับการบำรุงรักษาอีกต่อไป
รวมไปถึงแอปพลิเคชันเว็บขนาดเล็กซึ่งทำหน้าที่เป็นตัวอย่าง
โปรดทราบว่าขณะนี้ยังไม่มีการควบคุมการอัปโหลด ทุกสิ่งที่คุณแชร์สามารถดาวน์โหลดได้โดยคนจำนวนเท่าใดก็ได้ในเวลาใดก็ตาม ด้วยเหตุนี้ ให้พิจารณาแชร์ไฟล์จำนวนเล็กน้อยจากตัวอย่าง
สิ่งสำคัญที่ควรทราบคือบางจอภาพในแอปพลิเคชันจะสำรวจ daemon เพื่อรับการอัปเดต สิ่งนี้ไม่มีประสิทธิภาพ และคุณไม่ควรใช้แอปพลิเคชันนี้ผ่านการเชื่อมต่อข้อมูลมือถือ
สามารถดึงอิมเมจ 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
สำหรับการรันตัวอย่างแบบโต้ตอบและเป็น daemon ตามลำดับ
แอปพลิเคชันตัวอย่างแบ่งออกเป็นสองโครงการ .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 ของ API สร้าง API จากนั้นพยายามสร้างอิมเมจ Docker
นิโคติน+ (ล่าสุด)
SoulseekProtocol - Museek+
เอกสารโปรโตคอล Soulseek (มิเรอร์)
Soulseek.NET ส่วนใหญ่เกิดขึ้นได้จากผลงานของผู้อื่น ทรัพยากรต่อไปนี้ถูกใช้เป็นข้อมูลอ้างอิง:
นิโคตินบวก
ไลฟ์ลุค โดย @misterhat
museek-plus โดย @eLvErDe
slsk-client โดย @ f-hj