Комментарии 14
«Но можно написать bot, который будет поступающие к нему сообщения отправлять куда нужно, чтобы их обработать и вывести на сайт. А можно воспользоваться готовым»
Это точно русский?
Это точно русский?
+1
Вот, создавая такие туториалы, вы невольно проводите реверс-инжениринг первого предложения из этого поста :)
0
Хочу сказать. что пост перенесен администрацией в хаб «Я пиарюсь» как рекламный, но я не имею никакого отношения к авторам данного телеграм-бота.
Просто поделился интересной программой.
Просто поделился интересной программой.
+1
Зачем такие сложности с ботами и чужими сервисами, когда телеграмм предоставляет апи доступа к постам в каналах?
Создаете свой канал и тяните себе jsом или обрабатываете на сервере:
t.me/канал/ид_поста?embed=1
Пример за пять минут:
Output:
Прикручиваете оффсеты, валидацию ответа еще за полчаса и вот вам альтернатива сторонним сервисам
Создаете свой канал и тяните себе jsом или обрабатываете на сервере:
t.me/канал/ид_поста?embed=1
Пример за пять минут:
var urls = ['https://t.me/lentach/27600?embed=1', 'https://t.me/lentach/27601?embed=1', 'https://t.me/lentach/27602?embed=1'];
Promise.all(urls.map(url =>
fetch(url).then(resp => resp.text())
)).then(texts => {
let parser = new DOMParser();
let parsedHtml = parser.parseFromString(texts, 'text/html');
let bodyText = parsedHtml.getElementsByClassName("tgme_widget_message_text");
for (let i = 0; i < bodyText.length; i++) {
console.log(bodyText[i].innerHTML);
}
})
Output:
В Москве представили первый дом по программе реновации, и он уже готов к заселению<br><br>Фото: <a href="http://lentach.media/6c60" target="_blank" rel="noopener">http://lentach.media/6c60</a>
Киевский Совет одобрил снос храма Московского патриархата, который находится на месте первого каменного храма Киевской Руси<br><br><a href="http://lentach.media/f234" target="_blank" rel="noopener">http://lentach.media/f234</a>
Под авиаудар американских сил в Сирии попали российские наёмники, сообщают иранские СМИ<br><br><a href="http://lentach.media/c660" target="_blank" rel="noopener">http://lentach.media/c660</a>
Прикручиваете оффсеты, валидацию ответа еще за полчаса и вот вам альтернатива сторонним сервисам
+1
В принципе, тоже вариант, в идеале даже лучший, только вопросы:
1. как узнать id крайнего поста в канале?
2. если это js код для клиента, то как с Access-Control-Allow-Origin ??? Сервер t.me не отдает данные всем подряд
3. реализация real-time апдейта канала у клиента по мере поступления сообщений в канал
Получается, понадобится делать на своем сервере прокси канала и самому реализовывать его динамичный апдейт у клиентов. Не полчаса.
1. как узнать id крайнего поста в канале?
2. если это js код для клиента, то как с Access-Control-Allow-Origin ??? Сервер t.me не отдает данные всем подряд
3. реализация real-time апдейта канала у клиента по мере поступления сообщений в канал
Получается, понадобится делать на своем сервере прокси канала и самому реализовывать его динамичный апдейт у клиентов. Не полчаса.
0
Да, пожалуй, погорячился по поводу получаса.
1. Тут придется воткнуть костыль и опрашивать на +10/20 айдишников в большую сторону от последнего успешного и где-нибудь сохранить
2. cors proxy
3. setInterval
1. Тут придется воткнуть костыль и опрашивать на +10/20 айдишников в большую сторону от последнего успешного и где-нибудь сохранить
2. cors proxy
3. setInterval
0
Я уже думал на эту тему, относительно примера от hMartin, для своего инлайн бота
На тот момент когда думал, ничего дельного в голову не пришло, а сейчас вот думаю, что методом дихотомии вполне себе сносно можно определить id крайнего поста в канале.
Простым чекингом с потолка взятого id можно найти последний с относительно небольшими затратами ресурсов серверной части.
Например:
1. чекаем достаточно большой id, пусть будет 100к t.me/lentach/100000
видим, что ссылки не существует, поста с таким id нет
2. Делим пополам, чекаем t.me/lentach/50000
аналогичная ситуация
3. Делим пополам, чекаем t.me/lentach/25000
а вот по этой ссылке пост уже есть, проверяем дальше
4. t.me/lentach/37500
Поста снова нет, снова берем половину между тем где было и где нет 25к и 37.5к
5. t.me/lentach/31250
Снова попали — думаю смысл ясен: делим пополам пока разница между верхней и нижней границей больше одного, в остатке получим точный id, при старте с id в 100k, нам потребуется 17 итераций (вроде), простого деления на 2 и проверки кода http, что для серверной части раз в какое то время совсем даже не сложная задача. Записываем last_id в файл или базу — профит.
На тот момент когда думал, ничего дельного в голову не пришло, а сейчас вот думаю, что методом дихотомии вполне себе сносно можно определить id крайнего поста в канале.
Простым чекингом с потолка взятого id можно найти последний с относительно небольшими затратами ресурсов серверной части.
Например:
1. чекаем достаточно большой id, пусть будет 100к t.me/lentach/100000
видим, что ссылки не существует, поста с таким id нет
2. Делим пополам, чекаем t.me/lentach/50000
аналогичная ситуация
3. Делим пополам, чекаем t.me/lentach/25000
а вот по этой ссылке пост уже есть, проверяем дальше
4. t.me/lentach/37500
Поста снова нет, снова берем половину между тем где было и где нет 25к и 37.5к
5. t.me/lentach/31250
Снова попали — думаю смысл ясен: делим пополам пока разница между верхней и нижней границей больше одного, в остатке получим точный id, при старте с id в 100k, нам потребуется 17 итераций (вроде), простого деления на 2 и проверки кода http, что для серверной части раз в какое то время совсем даже не сложная задача. Записываем last_id в файл или базу — профит.
0
1. ну, не 10/20, а пока не дойдешь до крайнего
в любом случае, это, наверное, единственный вариант отвеббить свой телеграм-канал
спасибо
в любом случае, это, наверное, единственный вариант отвеббить свой телеграм-канал
спасибо
0
Здраствуйте.
Скажите пожалуйста, почему вот уже больше месяца не работает Journalist?
хнык… не подскачите альтернативу?
Скажите пожалуйста, почему вот уже больше месяца не работает Journalist?
хнык… не подскачите альтернативу?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Вывод Telegram-канала на свой вебсайт