API клиент для 2ch.hk
Клиенты логически разбиты на два класса Wakaba2ChApi и Wakaba2ChApiMobile по описанию API.
services.AddWakaba2ChApiClient();
Если нужно пользоваться сразу двумя, можно заинжектить один общий интерфейс
class TestWakaba
{
IWakaba2ChApiClient _wakaba2ChApiClient;
//Достаем из DI
public TestWakaba(IWakaba2ChApiClient wakaba2ChApiClient)
{
_wakaba2ChApiClient = wakaba2ChApiClient;
}
//Юзаем
public async Task GetThreads()
{
//Общее API
var threadsFromBoard = await _wakaba2ChApiClient.Client.GetAllThreadsFromBoardLite("b");
foreach (var thread in threadsFromBoard.Threads.OrderByDescending(x => x.Score))
{
Console.WriteLine($"Тред: {thread.Subject}");
Console.WriteLine($"Просмотров: {thread.Views}");
Console.WriteLine($"Текст: {thread.Comment}");
Console.WriteLine($"Ответов: {thread.PostsCount}");
Console.WriteLine(Environment.NewLine);
}
//Мобильное API
var threadOptions = await _wakaba2ChApiClient.ClientMobile.GetThreadOptions();
...
}
}
Так же можно заинжектить отдельно общий или мобильный клиент.
//Отдельно каждый
services.AddWakaba2ChApiMobile(); //В DI достаем IWakaba2ChApiMobile
services.AddWakaba2ChApi(); //В DI достаем IWakaba2ChApi
Если нужно достучаться до API через прокси, передайте в билд инжекта подготовленный HttpClientHanlder
services.AddWakaba2ChApiClient(new HttpClientHandler { Proxy = proxy });
//или без DI
var dvachApiClientMobile = new Wakaba2ChApiMobile(new HttpClientHandler { Proxy = proxy });
var dvachApiClientCommon = new Wakaba2ChApi(new HttpClientHandler { Proxy = proxy });
JSON для тредов и списков:
Треды:
http(s)://2ch.hk/доска/res/номертреда.json Список тредов:
http(s)://2ch.hk/доска/номерстраницы.json (первая страница: index)Все треды с сортировкой по последнему посту:
http(s)://2ch.hk/доска/catalog.jsonВсе треды с сортировкой по времени создания треда: http(s)://2ch.hk/доска/catalog_num.json
Все треды с доски(облегченный вариант, с просмотрами и рейтингом для топа тредов):
http(s)://2ch.hk/доска/threads.jsonМобильное API
Получить настройки всех досок:
Пример: http(s)://2ch.hk/makaba/mobile.fcgi?task=get_boardsПолучить все посты из треда с номера поста по доске:
Пример: http(s)://2ch.hk/makaba/mobile.fcgi?task=get_thread&board=abu&thread=39220&num=41955Получить все посты из треда с номера поста по треду:
Пример: http(s)://2ch.hk/makaba/mobile.fcgi?task=get_thread&board=abu&thread=39220&post=252Получить один пост:
Пример: http(s)://2ch.hk/makaba/mobile.fcgi?task=get_post&board=доска&post=номер_поста
Работа с капчей:
Получить типы капч, включённые на указанной доске:
https://2ch.hk/api/captcha/settings/bПолучить уникальный id для выбранного типа капчи:
https://2ch.hk/api/captcha/%%type%%/idВ случае google recaptcha (которая используется сейчас), дальнейшие шаги описаны тут:
https://developers.google.com/recaptcha/intro