Soulseek 네트워크용 .NET Standard 클라이언트 라이브러리입니다.
NuGet에서 설치합니다.
var client = new SoulseekClient();await client.ConnectAsync("사용자 이름", "비밀번호");
IEnumerable<SearchResponse> 응답 = 대기 Client.SearchAsync(SearchQuery.FromText("일부 검색"));
참고: SearchAsync
공식 클라이언트에서 제공하는 모든 옵션을 허용하는 SearchQuery(string query, IEnumerable<string> exclusions, int? minimumBitrate, int? minimumFileSize, int? minimumFilesInFolder, bool isVBR, bool isCBR)
생성자를 사용하여 SearchQuery
허용합니다.
SearchResponse
모양은 다음과 같습니다.
int FileCountIReadOnlyCollection<파일> Filesint LockedFileCount IReadOnlyCollection<파일> LockedFilesint FreeUploadSlots 긴 대기열길이 토큰 int UploadSpeedstring 사용자 이름
File
여러 가지 속성이 있습니다. 다운로드하려면 Filename
과 Size
필요합니다.
byte[] file = wait Client.DownloadAsync(username: "일부 사용자 이름", filename: "일부 정규화된 파일 이름", 크기: 42);
또는 (이상적으로)
var fs = new FileStream("c:downloadslocal filename", FileMode.Create);await Client.DownloadAsync(사용자 이름: "일부 사용자 이름", 파일 이름: "일부 정규화된 파일 이름", outputStream: fs, 크기: 42) ;
참고: 메모리 오버헤드를 줄이려면 가능한 경우 스트림으로 다운로드하세요.
라이브러리의 외부 인터페이스는 드물고 잘 문서화되어 있습니다. 최고의 리소스는 코드 자체입니다. 특히 흥미로운 점은 다음과 같습니다.
ISoulseek클라이언트
Soulseek클라이언트옵션
검색옵션
전송 옵션
Soulseek 서버는 2024년 초부터 네트워크에서 교환되는 콘텐츠를 제한하고 저작권 트롤을 달래기 위한 방법으로 '제외 검색어' 목록을 보내기 시작했습니다.
이 문구 목록은 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
에 포함되었습니다.
예제 애플리케이션은 두 개의 프로젝트로 분할됩니다. create-react-app으로 부트스트랩된 .NET 5.0 WebAPI 및 React 애플리케이션. Docker 외부에서 이를 실행하려면 두 애플리케이션을 모두 시작해야 합니다. API의 경우 dotnet run
이고 React 애플리케이션의 경우 yarn|npm start
. http://localhost:3000에 연결하거나 API가 http://localhost:5000/swagger에서 Swagger UI를 제공할 수 있습니다.
React 앱을 빌드하고 정적 파일을 API의 wwwroot 디렉터리에 복사하고 API를 빌드한 다음 Docker 이미지 빌드를 시도하는 예제의 bin
디렉터리에 포함된 빌드 스크립트입니다.
니코틴+(최신 버전)
Soulseek프로토콜 - Museek+
Soulseek 프로토콜 문서(미러링)
Soulseek.NET의 대부분은 다른 사람들의 작업으로 가능해졌습니다. 다음 리소스가 참조로 사용되었습니다.
니코틴 플러스
@misterhat의 라이브룩
@eLvErDe의 museek-plus
@f-hj의 slsk-client.