Soulseek ネットワーク用の .NET Standard クライアント ライブラリ。
NuGetからインストールします。
var client = new SoulseekClient();await client.ConnectAsync("ユーザー名", "パスワード");IEnumerable<SearchResponse> 応答 = await Client.SearchAsync(SearchQuery.FromText("some search"));注: SearchAsync 、コンストラクターSearchQuery(string query, IEnumerable<string> exclusions, int? minimumBitrate, int? minimumFileSize, int? minimumFilesInFolder, bool isVBR, bool isCBR)を使用してSearchQuery受け入れ、公式クライアントによって提供されるすべてのオプションを許可します。
SearchResponse形式は次のとおりです。
int FileCountIReadOnlyCollection<File> Filesint LockedFileCount IReadOnlyCollection<File> LockedFilesint FreeUploadSlots 長い QueueLengthint トークン 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) ;注: メモリのオーバーヘッドを削減するために、可能な場合はストリームにダウンロードします。
ライブラリの外部インターフェイスはまばらですが、十分に文書化されています。最良のリソースはコード自体です。 特に興味深いもの:
ISoulseekクライアント
Soulseekクライアントオプション
検索オプション
転送オプション
2024 年の初め頃から、Soulseek サーバーは、ネットワーク上で交換されるコンテンツを制限し、著作権荒らしを鎮める方法として、「除外検索フレーズ」のリストを送信し始めました。
この語句のリストはExcludedSearchPhrassReceivedイベントで配信されます。パスまたはファイル名に除外された語句が含まれるファイルを除外するには、送信される検索結果をフィルタリングする必要があると想定しています。
Soulseek ネットワークの長期的な健全性を確保するための皆様のご協力とご尽力に感謝いたします。
サンプル アプリケーションは slskd に置き換えられ、今後は保守されないことに注意してください。
例として機能する小さな Web アプリケーションが含まれています。
現時点ではアップロードを制御できないことに注意することが重要です。共有したものは、いつでも何人でもダウンロードできます。 これを念頭に置いて、例の少数のファイルを共有することを検討してください。
アプリケーション内の一部のディスプレイは更新のためにデーモンをポーリングすることに注意することも重要です。これは非効率的であり、モバイル データ接続を介してこのアプリケーションを使用するべきではありません。
アプリケーションを含む 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プロキシ パスに設定します。
便宜上、サンプルを対話的に実行するため、およびデーモンとして実行するための 2 つのスクリプトrunとstartがそれぞれexamples/Web/binに含まれています。
サンプル アプリケーションは 2 つのプロジェクトに分割されています。 .NET 5.0 WebAPI と、create-react-app でブートストラップされた React アプリケーション。 これらを Docker の外部で実行したい場合は、両方のアプリケーションを起動する必要があります。 API の場合はdotnet run 、React アプリケーションの場合はyarn|npm start 。 http://localhost:3000 に接続することも、API が http://localhost:5000/swagger で Swagger UI を提供することもできます。
この例のbinディレクトリに含まれるビルド スクリプトは、React アプリをビルドし、静的ファイルを API の wwwroot ディレクトリにコピーし、API をビルドしてから、Docker イメージのビルドを試みます。
ニコチン+ (最新)
Soulseekプロトコル - Museek+
Soulseek プロトコルのドキュメント (ミラーリング)
Soulseek.NET の多くは他の人の働きによって可能になりました。次のリソースが参考として使用されました。
ニコチンプラス
@misterhat によるライブルック
museek-plus by @eLvErDe
@f-hj による slsk-client。