Розміщати матеріали в 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 } }