Soulseek 网络的 .NET Standard 客户端库。
从 NuGet 安装。
var client = new SoulseekClient();await client.ConnectAsync("用户名", "密码");
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 long QueueLengthint 令牌 int UploadSpeedstring 用户名
File
有许多属性;您需要Filename
和Size
才能下载。
byte[] file = wait Client.DownloadAsync(username: "某个用户名", filename: "某个完全限定的文件名", size: 42);
或(理想情况下)
var fs = new FileStream("c:downloadslocal filename", FileMode.Create);await Client.DownloadAsync(用户名:“某个用户名”,文件名:“某个完全限定的文件名”,outputStream:fs,大小:42) ;
注意:尽可能下载到流以减少内存开销。
库的外部接口稀疏且文档齐全;最好的资源是代码本身。 特别感兴趣的是:
灵魂寻求客户
Soulseek客户选项
搜索选项
转账选项
从 2024 年初开始,Soulseek 服务器已开始发送“排除的搜索短语”列表,作为限制网络上交换的内容并安抚版权巨魔的一种方式。
此短语列表是在事件ExcludedSearchPhrassReceived
中传递的,我期望必须过滤任何传出的搜索结果以排除在路径或文件名中包含任何已排除短语的文件。
我感谢大家为确保 Soulseek 网络长期健康而付出的合作和承诺。
请注意,示例应用程序已被 slskd 取代,并且将不再维护。
其中包括一个小型 Web 应用程序作为示例。
需要注意的是,目前没有对上传的控制;您共享的任何内容都可以在任何给定时间被任意数量的人下载。 考虑到这一点,请考虑共享示例中的少量文件。
还需要注意的是,应用程序中的某些显示会轮询守护程序以获取更新;这是低效的,您确实不应该通过移动数据连接使用此应用程序。
可以从 jpdillingham/slsk-web-example 中提取包含应用程序的 Docker 映像。
最小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
设置为您的代理路径。
为方便起见, examples/Web/bin
中包含了两个脚本run
和start
,分别用于交互式运行示例和作为守护进程运行。
示例应用程序分为两个项目; .NET 5.0 WebAPI 和使用 create-react-app 引导的 React 应用程序。 如果您想在 Docker 之外运行这些应用程序,您需要启动这两个应用程序; dotnet run
用于 API, yarn|npm start
用于 React 应用程序。 您可以连接到 http://localhost:3000,或者 API 通过 http://localhost:5000/swagger 提供 Swagger UI。
示例bin
目录中包含的构建脚本将构建 React 应用程序,将静态文件复制到 API 的 wwwroot 目录,构建 API,然后尝试构建 Docker 映像。
尼古丁+(最新)
SoulseekProtocol - Museek+
Soulseek 协议文档(镜像)
Soulseek.NET 的大部分内容都是通过其他人的工作而得以实现的。使用以下资源作为参考:
加尼古丁
现场观看@misterhat
museek-plus by @eLvErDe
slsk-client,作者:@f-hj。