UPD: На текущий момент бот не работает, упёрся в лимит каналов на одного юзера (500 каналов).
В конце статьи есть ссылка на инструкцию, как развернуть себе такого самостоятельно.
Предпосылки и проблематика
Когда я переключился с ВК на телеграм, выбрав последний основным мессенджером, я столкнулся с рядом неудобств: в телеге нет привычной ленты новостей и весь контент надо собирать по каналам. ВК имеет функционал групп (сообщения из которых и собираются в ленту), но меня всегда бесило наличие рекламы явной, рекламных постов и прочего мусора, видеть который я в ленте не хотел.
Одно время, когда ВК начал пихать в ленту свои рекомендации (неотключаемые вообще никак), я пользовался адблоком, альтернативными андроид-клиентами (kate mobile), но все эти полумеры напрягали.
В телеге же, как только количество каналов подросло, очень напрягала необходимость заходить в каждый. И, когда их набралось штук 30, я стал забивать на некоторые, т.к. утомлялся туда-сюда по ним перемещаться.
Сайт и Telegram-канал Ищи своих: россияне могут узнать о пленных и убитых в Украине
Плюс, как-то внезапно, много каналов начали спамить крос-сылками с рекламой. И ладно, если это партнерские посты из схожих по тематике каналов. Чаще это были всякие курсы английского, питона, а иногда вообще скам про казино или крипту.
Идея и реализация
Так появилась мысль сделать агрегатор телеграм-каналов с фильтрацией по ключевым словам (которые в рекламных постах достаточно часто попадаются).
Я в курсе про функционал группировки каналов в некоторых клиентах, но по некоторым причинам он мне не подходит:
- группировка работает только на уровне клиента. Т.е. сгруппированные в мобильном приложении каналы не будут сгруппированы в веб-версии или другом клиенте
- нельзя (по крайней мере я не нашел) группировать чаты и каналы
- фильтрация спама и рекламы недоступна
- я собирался экспортировать агрегированный контент в rss (об этом во второй части статьи)
Погуглив существующие инструменты для работы с телегой, я остановился на питоновской библиотеке telethon. Ее ключевой особенностью была возможность работать в режиме клиента, а не бота (об этом ниже, в нюансах).
Что еще капотом:
- telethon как telegram-клиент
- asyncio для асинхронности
- peewee и sqlite3 для хранения инфы кто на что подписался.
Сами посты из подписок не сохраняются, пересылаются на лету
Название придумал быстро: я люблю соединять слова, так что агрегатор телеграма быстро превратился в Телегрегатор.
Нюансы агрегатора
Процесс установки и использования самой библиотеки я не буду расписывать, в доках все достаточно подробно. Остановлюсь на нескольких технических нюансах, которые всплыли в процессе создания Телегрегатора:
- Поскольку меня напрягают висячие непрочитанные сообщения (а так же больше 5-7 вкладок в браузере), я хотел, чтобы агрегатор вместо меня подписывался на каналы и пересылал мне сообщения в специально заведенный для этого чат/канал (я это назвал поток, feed).
- Как следствие из п.1, агрегатор должен был самостоятельно подписываться на каналы (в т.ч. закрытые), вступать в группы и чаты. А это значило, что вариант с ботом не подходил, т.к. он пассивен и его может добавить только участник чата или владелец канала. Здесь и пригодилась возможность telethon’а эмулировать клиент. Т.е. telethon-клиент авторизуется с номером телефона и кодом из смс и эмулирует обычного юзера. Может реагировать на сообщения о наборе текста, заходить в каналы, группы, чаты, пересылать сообщения, и всё это в реалтайме. В общем, полноценный пользователь.
- Как следствие из п.2, возможности бота (кастомные клавиатуры и команды) оказались мне недоступны (или я не нашел, как клиентом это делать). Если знаете как — напишите в комментах. Так что пришлось велосипедить с обработкой пользовательских команд.
- Была идея, что пользователю надо общаться с ботом, а тот уже под капотом передает команды клиенту (подписаться на канал), но это показалось слишком сложным для mvp.
Как попробовать?
UPD: Тут была инструкция по запуску, но она более не актуальна. Смотри инструкцию в отдельном посте, ссылка внизу.
В ТЕЛЕГРАМ ПОЯВЯТСЯ СТОРИС: все новости про новую функцию Telegram!
Ограничения и планы
Есть несколько ограничений: альбом из фоток, которые пришли в оригинальный канал в одном сообщении, Телегрегатор пересылает отдельными сообщениями. Или репост в поток иногда происходит не мгновенно, а спустя 5-10 секунд. Иногда Телегрегатор падает (рестарт автоматически), и может пропустить какое-то сообщение. Это редко, но случается.
Видимо, это особенности протокола. Если заметите странное поведение — напишите мне.
В планах добавить следующий функционал:
- показать случайный пост из случайного канала
- топ самых популярных каналов (самых редких, как вариант)
- предлагает случайный канал
Я люблю находить годноту в телеге. Порой, в канале всего человек 200, и о нём вообще не узнать, кроме как по рекомендациям друзей.
Сам пользуюсь Телегрегатором где-то полгода, решил поделиться, вдруг кому-то зайдет. Из своего аккаунта я удалил все подписки, теперь ими рулю через потоки, полет нормальный.
Исходный код пока грязный, так что публиковать не стал.
все-так бот или клиент?
Как я уже писал выше, есть альтернативный способ реализации задуманного мной функционала:
Я должен взаимодействовать с ботом, отправляя ему команды о создании потока, после чего он сам создает нужный канал, добавляет туда меня, выставляет нужные права. Дальнейшее управление каналом тоже происходит через бота. Если такая схема выглядит удобнее — дайте знать.
Часть вторая, про RSS
В процессе работы над Телегрегатором появилась мысль экспортировать это все в RSS-ленту. Я многократно встречал статьи, в т.ч. на Хабре, как автор читает вообще всё через rss, собирая его из разных источников. Кто-то пошел дальше: из rss собирает подборку и формирует ежедневную рассылку на почту. Планирую прийти к такому варианту. Если вы имеете такой опыт — отпишитесь, пожалуйста, в комментах, очень интересна ваша реализация.
Генераторов rss из соцсетей много, пару примеров:
- http://feed.exileed.com/
- https://rsshub.app/telegram/channel/temablog
Но у них есть недостатки:
- не умеют читать приватные каналы
- редко обновляют кеш
- не отображают вложения (фото, видео, музыку)
- медленно или нестабильно работают (иногда падают)
Поэтому, вторым очевидным шагом стало создание моста telegram->rss. По факту, это тот же клиент-Телегрегатор, который по имени канала получает последние сообщения из канала (без подписки) и возвращает в виде rss-ленты. В планах сделать подписку на запрашиваемый канал, тогда можно будет получать ленту и из приватных каналов, но пока так. Отпишитесь, если такой функционал востребован. Проверить можно здесь: http://tg2rss.prosto-tak.ru/.
P.S. В «Я пиарюсь» не хватает кармы. Для телеграма вообще нет хаба, странно.
Источник: habr.com
News
One America News network is a national TV news network airing on Verizon Fios, channel 116. AT Everything The Mainstream Media Won’t Report.
Police frequency
YOUR NEWSMAKER #1 in LA County and USA.
The Epoch Times
An independent, award-winning voice in print truthfulness in reporting. Email sign up: https://ept.ms/–Newsletters
Blaze Media
News and entertainment for people who love America
Newsmax Clips
Newsmax TV, America’s fastest-growing cable news channel in more than 70 million homes, gives you the latest breaking news from Washington, New York, Hollywood and from capitals around the world — with top-rated shows.
The Western Journal
The Western Journal aims to equip readers with the TRUTH.
Daily Wire Junkies
Official Twitter feed of The Daily Wire.
The New York Times
Essential news, photos and videos from the Russia-Ukraine war. Get the latest at www.nytimes.com/ukraine
Breaking News | Times
Where the conversation begins. Follow for breaking news, special reports, and more from NYTimes.com
Daily Caller
The journalists who love America. Real news starts here. Subscribe to the Daily Caller on YouTube: http://bit.ly/2Wzfnka
Hananya Naftali — Israel News
The real news about Israel, the Middle East, and peace. Based in Jerusalem.
Latest News in USA
news about New York and the entire US
World News [Breaking News]
This channel brings you all the news from the world in the fastest way
NTD
NTD’s mission is to uplift and inform society by publishing quality content that embodies integrity, dignity, and the best of humanity.
All visual content featured on this website may be copyrighted to their respective rightful owners. No infringement intended. This site is not affiliated with Telegram.
Источник: tlgrm.eu
НЯН — автоматический агрегатор новостных каналов в Telegram
НЯН собирает сообщения с других новостных каналов в Telegram, склеивает похожие сообщения в сюжеты и разбивает источники на 3 типа. Помогает быстро понимать, кто написал новость, и стоит ли ей доверять.
36 показов
4.7K открытий
Что означают эмодзи
Красные. Российские официальные новости и прогосударственные каналы.
Синие. Оппозиционные и зарубежные каналы.
⚖ Фиолетовые. Нейтральные каналы.
⏱ Самый оперативный. Канал, написавший первым.
Просмотры. Общее количество просмотров по всем постам в сюжете.
Как это работает
- Обход каналов. Поисковый робот раз в несколько десятков секунд обходит все каналы из списка, формируя поток документов за последние 6 часов.
- Разбивка на сюжеты. Поток документов разбивается на сюжеты, то есть на наборы документов про одни и те же события, но от разных источников. Как именно — написано здесь, здесь, или тут.
- Фильтрация сюжетов. Среди получившихся сюжетов оставляются только важные. Текущие критерии важности: количество источников и суммарное количество просмотров за разные промежутки времени. Среди всех больших сюжетов выбираются 40% лучших по просмотрам в час.
- Выбор аннотации. Для каждого сюжета нужно выбрать тот документ, который будет этот сюжет представлять — аннотацию. Текущие критерии выбора аннотации: русский язык, свежесть, не слишком длинный текст, похожесть на остальные документы сюжета.
Гарантируется свобода массовой информации. Цензура запрещается.
Конституция РФ, ст. 29, ч. 5
Я не разделяю ваших убеждений, но готов умереть за ваше право их высказывать.
Эвелин Беатрис Холл
- Нужность новостей. Новости — важная часть общественной и политической жизни. Если бы никто не распространял новости, многие преступления остались бы безнаказанными. Не нужно игнорировать реальность.
- Выход из пузыря. «Пузыри фильтров» — это когда соцсети и персонализированные сервисы создают ошибочное впечатление, будто вашу точку зрения разделяет весь мир. Они поляризуют и радикализуют общество, а потому важно их избегать.
- Справедливое освещение. Если есть несколько позиций, то они должны одинаково присутствовать в канале, независимо от того, сколько источников на той или иной стороне.
Особенности
Чего НЕ делает канал
- Проверка достоверности. Канал НЕ проверяет достоверность сообщений. Нет никакой проверки фактов и разоблачения фейков.
- Изменение оригинальных сообщений. Канал НЕ изменяет тексты источников, за исключением вырезания особенностей форматирования, дисклеймеров и текстовых копирайтов.
- Ручное вмешательство. Ничего НЕ исправляется руками, за исключением явных технических багов. При этом регулярно меняется сама система.
Почему ты уверен, что разбивка каналов на группы правильная?
Есть объективные данные о совместном попадании различных каналов в сюжеты. Один из способов эти данные отобразить — построить Word2Vec-like модель, где вместо предложений сюжеты, а вместо слов каналы. В результате для каждого канала получается вектор в некотором пространстве.
Чем вероятнее каналы встречаются в одних и тех же сюжетах, тем ближе должны лежать их векторы. Подобная визуализация есть на картинке ниже. Цветами отмечены разные группы источников. Красная и синяя группы явно выделяются на этой картинке.
На чём планируешь зарабатывать, если не на рекламе?
Заказы на аналитику и мониторинги, персонализированные каналы и боты. Но об этом пока рано говорить.
Почему такое название?
У НЯН есть вполне конкретная расшифровка, но мне пока не хотелось бы её раскрывать.
Список источников
⚖ Пивоваров (Редакция) • РБК • Овсянка, сэр! • Санкции в РФ • КК • Baza • Афиша Daily • Varlamov News • Военный обозреватель • Ateo Breaking • VC • Ateo Breaking • Осторожно, новости
Украина Сейчас • Ньюсач/Двач • Протесты в мире • Медиазона • Лентач • BBC News | Русская служба • RadioSvoboda • ЧТД • Настоящее Время • Медуза — LIVE • Сталингулаг • Реальная Война • TJ • DOXA • Новая газета • NEXTA Live • ТРУХА • SOTA • The Village • ОВД-Инфо LIVE • Avtozak LIVE
Readovka • Mash • RT на русском • Shot • Военный Осведомитель • РИА Новости • Соловьёв • Раньше всех. Ну почти. • ТАСС • Daily Storm
Обратная связь
E-mail: [email protected] . Говорят, что с mail.ru письма не отправляются, пишите с других ящиков. Буду рад ответить!
На комментарии тоже постараюсь ответить.
Источник: vc.ru