-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathMicrosoftLanguageScraper.cs
38 lines (30 loc) · 1.26 KB
/
MicrosoftLanguageScraper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
using GTranslate;
namespace LanguageScraper;
public class MicrosoftLanguageScraper : ILanguageScraper
{
private readonly HttpClient _httpClient = new();
public MicrosoftLanguageScraper()
{
_httpClient.DefaultRequestHeaders.AcceptLanguage.ParseAdd("en");
}
public TranslationServices TranslationService => TranslationServices.Microsoft;
public IReadOnlyCollection<ILanguage> ExistingTtsLanguages => [];
public async Task<LanguageData> GetLanguageDataAsync()
{
var stream = await _httpClient.GetStreamAsync(new Uri("https://api.cognitive.microsofttranslator.com/languages?api-version=3.0&scope=translation"));
var document = await JsonDocument.ParseAsync(stream);
var languages = document
.RootElement
.GetProperty("translation")
.EnumerateObject()
.Select(x => new ScrapedLanguage(x.Value.GetProperty("name").GetString()!, x.Name, string.Empty, x.Value.GetProperty("nativeName").GetString()!))
.ToArray();
return new LanguageData { Languages = languages, TtsLanguages = Array.Empty<ILanguage>() };
}
}