Як розмістити публікацію в Telegra.ph програмою ZennoPoster

Розміщати матеріали в Telegra.ph в браузері не складно. Проте коли необхідно розмістити багато публікацій – то зручніше автоматизувати цей процес. А для автоматизації роботи в інтернеті дуже добре себе показала програма ZennoPoster. Тому це завдання я для доступу до сервісу буду використовувати API Telegra.ph, а відправляти HTTP запити буду програмою ZennoPoster.

Перш ніж відправляти публікації в Telegra.ph потрібно одержати свій API key, який буде використовуватись для автентифікації всіх HTTP запитів до сервісу. Про одержання ключа я вже розказував.

Дальше необхідно завантажити всі картинки, які будуть використовуватись в публікації не сервери сервісу Telegra.ph (або можна на будь-який інших хостинг зображень). Про це я розказував в іншій публікації.

Всі публікації на Telegra.ph складаються зі списка блоків. Кожен блок – це тег, який всередині також може містити список блоків.

Запити до API Telegra.ph повинні містити інформацію про автора, access_token (тобто API ключик), і власне сам список блоків. Зручно всі ці параметри формувати у вигляді JSON. Що власне я і покажу нижче в C# коді.

Формую блок з посиланням

var link_href = new Dictionary<string,object>();
	link_href["href"] = "https://blog.yosyfovych.te.ua"; 
	link_href["target"] = "_blank";

var link_a = new Dictionary<string,object>();
	link_text["tag"] = "a";
	link_text["attrs"] = link_href;
	link_text["children"] = new[]{ "текст посилання" };

var link = new Dictionary<string,object>();
	link["tag"] = "p";
	link["children"] = new Dictionary<string,object>[]{ link_a };

Формую блок з текстом

var paragraph = new Dictionary<string,object>();
	paragraph["tag"] = "p";
	paragraph["children"] = new []{"Тут може бути цілий абзац тексту","А тут буде також новий рядок"};

Формую блок з зображенням

var img_src = new Dictionary<string,object>();
	img_src["src"] = "https://graph.org/file/0cce0b06286dc5e704263.jpg"; // допустимо вказувати без домена
var img = new Dictionary<string,object>();
	img["tag"] = "img";
	img["attrs"] = img_src;
var img_class = new Dictionary<string,object>();
	img_class["class"] = "figure_wrapper";
var img_div = new Dictionary<string,object>();
	img_div["tag"] = "div";
	img_div["attrs"] = img_class;
	img_div["children"] = new[]{ img };
var img_caption = new Dictionary<string,object>();
	img_caption["tag"] = "figcaption";
	img_caption["children"] = new[]{""};
var img_figure = new Dictionary<string,object>();
	img_figure["tag"] = "figure";
	img_figure["children"] = new Dictionary<string,object>[]{ img_div, img_caption} ; // img_caption

З’єдную весь контент в блок

var all_content = new List<object>();
	all_content.Add(img_figure);
	all_content.Add(paragraph);
	all_content.Add(link);

Формую параметри в JSON

string api_key = ""; // тут ключик одержаний при створенні аккаунта
string autor  = "Автор публікації"; // тут ім'я автора публікації
string autor_url  = "https://blog.yosyfovych.te.ua"; // Посилання на сайт автора публікації
string title = "Заголовок публікації";  // тут заголовок автора публікації
var form_params = new Dictionary<string, object>(); 
	form_params.Add("access_token",api_key );    
    form_params.Add("title", title );    
    form_params.Add("author_name", autor);
    form_params.Add("author_url", autor_url);
	form_params.Add("content", all_block);
	form_params.Add("return_content", "true");

string query = Global.ZennoLab.Json.JsonConvert.SerializeObject(form_params,  Global.ZennoLab.Json.Formatting.None);

Відправляю HTTP запит методом POST

string content_type = @"application/json";
string url = "https://api.telegra.ph/createPage";
var method = ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.POST;
string proxy = string.Empty;
string encoding =Encoding.UTF8.WebName;
var type = ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly;
 
string post = ZennoPoster.HTTP.Request(
  method: method, 
  url: url, 
  content: query, 
  contentPostingType: content_type, 
  proxy: proxy, 
  Encoding: encoding, 
  respType: type, 
  Timeout: 180 * 1000, 
  UseRedirect: false, 
  MaxRedirectCount: 0, 
  UseOriginalUrl: true, 
  removeDefaultHeaders: true );
return post;

Одержаний результат з посиланням на публікацію

{
	"ok": true,
	"result":
	{
		"path": "kakoj-to-tekst-11-18-5",
		"url": "https:\/\/telegra.ph\/kakoj-to-tekst-11-18-5",
		"title": "текст заголовка",
		"description": "опис публікації",
		"author_name": "автор",
		"author_url": "https:\/\/site.com\/",
		"content": [
		{
			"tag": "figure",
			"children": [
			{
				"tag": "img",
				"attrs":
				{
					"src": "\/file\/0cce0b06286dc5e704263.jpg"
				}
			},
			{
				"tag": "figcaption",
				"children": [""]
			}]
		},
		{
			"tag": "p",
			"children": ["додатковий текст"]
		},
		{
			"tag": "p",
			"children": [
			{
				"tag": "a",
				"attrs":
				{
					"href": "https:\/\/site.com\/",
					"target": "_blank"
				},
				"children": ["текст посилання"]
			}]
		}],
		"views": 0,
		"can_edit": true
	}
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *