C# / .NET Examples¶
Complete C# examples for using the SubX API.
Installation¶
Basic Client¶
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Net.Http.Json;
using System.Threading.Tasks;
using System.Collections.Generic;
public class SubXClient
{
private readonly HttpClient _httpClient;
private const string BaseUrl = "https://subx-api.duckdns.org";
public SubXClient(string apiKey)
{
_httpClient = new HttpClient();
_httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", apiKey);
}
public async Task<SearchResult> SearchAsync(SearchParams parameters)
{
var query = System.Web.HttpUtility.ParseQueryString(string.Empty);
if (!string.IsNullOrEmpty(parameters.Title))
query["title"] = parameters.Title;
if (parameters.Limit.HasValue)
query["limit"] = parameters.Limit.ToString();
if (!string.IsNullOrEmpty(parameters.ImdbId))
query["imdb_id"] = parameters.ImdbId;
var url = $"{BaseUrl}/api/subtitles/search?{query}";
return await _httpClient.GetFromJsonAsync<SearchResult>(url);
}
public async Task<byte[]> DownloadAsync(string subtitleId)
{
var url = $"{BaseUrl}/api/subtitles/{subtitleId}/download";
return await _httpClient.GetByteArrayAsync(url);
}
}
public class SearchParams
{
public string Title { get; set; }
public string ImdbId { get; set; }
public int? Limit { get; set; }
}
public class SearchResult
{
public List<Subtitle> Items { get; set; }
public int Total { get; set; }
}
public class Subtitle
{
public string Id { get; set; }
public string Title { get; set; }
public string VideoType { get; set; }
public int? Season { get; set; }
public int? Episode { get; set; }
}
// Usage
class Program
{
static async Task Main()
{
var client = new SubXClient(Environment.GetEnvironmentVariable("SUBX_API_KEY"));
// Search
var results = await client.SearchAsync(new SearchParams
{
Title = "Dexter",
Limit = 10
});
Console.WriteLine($"Found {results.Total} subtitles");
// Download
if (results.Items.Count > 0)
{
var subtitleId = results.Items[0].Id;
var content = await client.DownloadAsync(subtitleId);
await File.WriteAllBytesAsync("subtitle.srt", content);
Console.WriteLine("Downloaded successfully!");
}
}
}
See the Quickstart Guide for more examples.