Ejemplos en C# / .NET¶
Ejemplos completos en C# para usar la API de SubX.
Instalación¶
Cliente Básico¶
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; }
}
// Uso
class Program
{
static async Task Main()
{
var client = new SubXClient(Environment.GetEnvironmentVariable("SUBX_API_KEY"));
// Buscar
var results = await client.SearchAsync(new SearchParams
{
Title = "Dexter",
Limit = 10
});
Console.WriteLine($"Encontrados {results.Total} subtítulos");
// Descargar
if (results.Items.Count > 0)
{
var subtitleId = results.Items[0].Id;
var content = await client.DownloadAsync(subtitleId);
await File.WriteAllBytesAsync("subtitulo.srt", content);
Console.WriteLine("¡Descargado exitosamente!");
}
}
}
Ver la Guía de Inicio Rápido para más ejemplos.