Парсер сообщений из Telegram по ключевым словам

  • Автор темы Автор темы Irval
  • Дата начала Дата начала
Олдфаг
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,842
Реакции
1,853
По просьбе человека из чата югейма делюсь с вами небольшим парсером сообщений из чатов в Telegram. Бот обладает достаточной скоростью работы и очень легко может быть автоматизирован под нужды разработчика. Также имеется поддержка изменения ключевых слов для парсинга, количества просматриваемых сообщений и сохранение сессии пользователя. Все настройки хранятся в файле settings.ini.

Скрипт работает за счет библиотеки telethon, которая используется для создания юзер ботов. Поэтому перед началом использования нужно будет зарегистрировать новое приложение в инструментах разработчика Telegram. Лк доступен по
Пожалуйста, авторизуйтесь для просмотра ссылки.
ссылке. В файл настроек необходимо вписать полученные App api_id и App api_hash, а также имя пользователя юзер бота для авторизации и дальнейшей работы.

На выходе вы получаете файл channel_messages.json, где представлены данные всех сообщений, подошедших по ключевым словам. Для работы с подобным ответом можно использовать приведенный ниже класс, полученный мной с помощью генератора классов JSON от Xamasoft.
C#:
Expand Collapse Copy
// Generated by Xamasoft JSON Class Generator
// http://www.xamasoft.com/json-class-generator

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace ParserBot
{

    public class PeerId
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("channel_id")]
        public int ChannelId { get; set; }
    }

    public class Entity
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("offset")]
        public int Offset { get; set; }

        [JsonProperty("length")]
        public int Length { get; set; }

        [JsonProperty("language")]
        public string Language { get; set; }
    }

    public class RecentReplier
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("user_id")]
        public int UserId { get; set; }
    }

    public class Replies
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("replies")]
        public int Replies { get; set; }

        [JsonProperty("replies_pts")]
        public int RepliesPts { get; set; }

        [JsonProperty("comments")]
        public bool Comments { get; set; }

        [JsonProperty("recent_repliers")]
        public IList<RecentReplier> RecentRepliers { get; set; }

        [JsonProperty("channel_id")]
        public int ChannelId { get; set; }

        [JsonProperty("max_id")]
        public int MaxId { get; set; }

        [JsonProperty("read_max_id")]
        public object ReadMaxId { get; set; }
    }

    public class Messages
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("id")]
        public int Id { get; set; }

        [JsonProperty("peer_id")]
        public PeerId PeerId { get; set; }

        [JsonProperty("date")]
        public string Date { get; set; }

        [JsonProperty("message")]
        public string Message { get; set; }

        [JsonProperty("out")]
        public bool Out { get; set; }

        [JsonProperty("mentioned")]
        public bool Mentioned { get; set; }

        [JsonProperty("media_unread")]
        public bool MediaUnread { get; set; }

        [JsonProperty("silent")]
        public bool Silent { get; set; }

        [JsonProperty("post")]
        public bool Post { get; set; }

        [JsonProperty("from_scheduled")]
        public bool FromScheduled { get; set; }

        [JsonProperty("legacy")]
        public bool Legacy { get; set; }

        [JsonProperty("edit_hide")]
        public bool EditHide { get; set; }

        [JsonProperty("pinned")]
        public bool Pinned { get; set; }

        [JsonProperty("from_id")]
        public object FromId { get; set; }

        [JsonProperty("fwd_from")]
        public object FwdFrom { get; set; }

        [JsonProperty("via_bot_id")]
        public object ViaBotId { get; set; }

        [JsonProperty("reply_to")]
        public object ReplyTo { get; set; }

        [JsonProperty("media")]
        public object Media { get; set; }

        [JsonProperty("reply_markup")]
        public object ReplyMarkup { get; set; }

        [JsonProperty("entities")]
        public IList<Entity> Entities { get; set; }

        [JsonProperty("views")]
        public int Views { get; set; }

        [JsonProperty("forwards")]
        public int Forwards { get; set; }

        [JsonProperty("replies")]
        public Replies Replies { get; set; }

        [JsonProperty("edit_date")]
        public object EditDate { get; set; }

        [JsonProperty("post_author")]
        public string PostAuthor { get; set; }

        [JsonProperty("grouped_id")]
        public object GroupedId { get; set; }

        [JsonProperty("restriction_reason")]
        public IList<object> RestrictionReason { get; set; }
    }

}

Скачать исходный код парсера на Python вместе с небольшим пресетом настроек можно с Яндекс.Диска:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Credits: @matyushkin
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
енто для меня :) Спасиба добрый одмин :roflanEbalo:
 
оо, нормас :seemsgood:
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
По просьбе человека из чата югейма делюсь с вами небольшим парсером сообщений из чатов в Telegram. Бот обладает достаточной скоростью работы и очень легко может быть автоматизирован под нужды разработчика. Также имеется поддержка изменения ключевых слов для парсинга, количества просматриваемых сообщений и сохранение сессии пользователя. Все настройки хранятся в файле settings.ini.

Скрипт работает за счет библиотеки telethon, которая используется для создания юзер ботов. Поэтому перед началом использования нужно будет зарегистрировать новое приложение в инструментах разработчика Telegram. Лк доступен по
Пожалуйста, авторизуйтесь для просмотра ссылки.
ссылке. В файл настроек необходимо вписать полученные App api_id и App api_hash, а также имя пользователя юзер бота для авторизации и дальнейшей работы.

На выходе вы получаете файл channel_messages.json, где представлены данные всех сообщений, подошедших по ключевым словам. Для работы с подобным ответом можно использовать приведенный ниже класс, полученный мной с помощью генератора классов JSON от Xamasoft.
C#:
Expand Collapse Copy
// Generated by Xamasoft JSON Class Generator
// http://www.xamasoft.com/json-class-generator

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace ParserBot
{

    public class PeerId
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("channel_id")]
        public int ChannelId { get; set; }
    }

    public class Entity
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("offset")]
        public int Offset { get; set; }

        [JsonProperty("length")]
        public int Length { get; set; }

        [JsonProperty("language")]
        public string Language { get; set; }
    }

    public class RecentReplier
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("user_id")]
        public int UserId { get; set; }
    }

    public class Replies
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("replies")]
        public int Replies { get; set; }

        [JsonProperty("replies_pts")]
        public int RepliesPts { get; set; }

        [JsonProperty("comments")]
        public bool Comments { get; set; }

        [JsonProperty("recent_repliers")]
        public IList<RecentReplier> RecentRepliers { get; set; }

        [JsonProperty("channel_id")]
        public int ChannelId { get; set; }

        [JsonProperty("max_id")]
        public int MaxId { get; set; }

        [JsonProperty("read_max_id")]
        public object ReadMaxId { get; set; }
    }

    public class Messages
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("id")]
        public int Id { get; set; }

        [JsonProperty("peer_id")]
        public PeerId PeerId { get; set; }

        [JsonProperty("date")]
        public string Date { get; set; }

        [JsonProperty("message")]
        public string Message { get; set; }

        [JsonProperty("out")]
        public bool Out { get; set; }

        [JsonProperty("mentioned")]
        public bool Mentioned { get; set; }

        [JsonProperty("media_unread")]
        public bool MediaUnread { get; set; }

        [JsonProperty("silent")]
        public bool Silent { get; set; }

        [JsonProperty("post")]
        public bool Post { get; set; }

        [JsonProperty("from_scheduled")]
        public bool FromScheduled { get; set; }

        [JsonProperty("legacy")]
        public bool Legacy { get; set; }

        [JsonProperty("edit_hide")]
        public bool EditHide { get; set; }

        [JsonProperty("pinned")]
        public bool Pinned { get; set; }

        [JsonProperty("from_id")]
        public object FromId { get; set; }

        [JsonProperty("fwd_from")]
        public object FwdFrom { get; set; }

        [JsonProperty("via_bot_id")]
        public object ViaBotId { get; set; }

        [JsonProperty("reply_to")]
        public object ReplyTo { get; set; }

        [JsonProperty("media")]
        public object Media { get; set; }

        [JsonProperty("reply_markup")]
        public object ReplyMarkup { get; set; }

        [JsonProperty("entities")]
        public IList<Entity> Entities { get; set; }

        [JsonProperty("views")]
        public int Views { get; set; }

        [JsonProperty("forwards")]
        public int Forwards { get; set; }

        [JsonProperty("replies")]
        public Replies Replies { get; set; }

        [JsonProperty("edit_date")]
        public object EditDate { get; set; }

        [JsonProperty("post_author")]
        public string PostAuthor { get; set; }

        [JsonProperty("grouped_id")]
        public object GroupedId { get; set; }

        [JsonProperty("restriction_reason")]
        public IList<object> RestrictionReason { get; set; }
    }

}

Скачать исходный код парсера на Python вместе с небольшим пресетом настроек можно с Яндекс.Диска:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Credits: @matyushkin
Спасибо.
 
По просьбе человека из чата югейма делюсь с вами небольшим парсером сообщений из чатов в Telegram. Бот обладает достаточной скоростью работы и очень легко может быть автоматизирован под нужды разработчика. Также имеется поддержка изменения ключевых слов для парсинга, количества просматриваемых сообщений и сохранение сессии пользователя. Все настройки хранятся в файле settings.ini.

Скрипт работает за счет библиотеки telethon, которая используется для создания юзер ботов. Поэтому перед началом использования нужно будет зарегистрировать новое приложение в инструментах разработчика Telegram. Лк доступен по
Пожалуйста, авторизуйтесь для просмотра ссылки.
ссылке. В файл настроек необходимо вписать полученные App api_id и App api_hash, а также имя пользователя юзер бота для авторизации и дальнейшей работы.

На выходе вы получаете файл channel_messages.json, где представлены данные всех сообщений, подошедших по ключевым словам. Для работы с подобным ответом можно использовать приведенный ниже класс, полученный мной с помощью генератора классов JSON от Xamasoft.
C#:
Expand Collapse Copy
// Generated by Xamasoft JSON Class Generator
// http://www.xamasoft.com/json-class-generator

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace ParserBot
{

    public class PeerId
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("channel_id")]
        public int ChannelId { get; set; }
    }

    public class Entity
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("offset")]
        public int Offset { get; set; }

        [JsonProperty("length")]
        public int Length { get; set; }

        [JsonProperty("language")]
        public string Language { get; set; }
    }

    public class RecentReplier
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("user_id")]
        public int UserId { get; set; }
    }

    public class Replies
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("replies")]
        public int Replies { get; set; }

        [JsonProperty("replies_pts")]
        public int RepliesPts { get; set; }

        [JsonProperty("comments")]
        public bool Comments { get; set; }

        [JsonProperty("recent_repliers")]
        public IList<RecentReplier> RecentRepliers { get; set; }

        [JsonProperty("channel_id")]
        public int ChannelId { get; set; }

        [JsonProperty("max_id")]
        public int MaxId { get; set; }

        [JsonProperty("read_max_id")]
        public object ReadMaxId { get; set; }
    }

    public class Messages
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("id")]
        public int Id { get; set; }

        [JsonProperty("peer_id")]
        public PeerId PeerId { get; set; }

        [JsonProperty("date")]
        public string Date { get; set; }

        [JsonProperty("message")]
        public string Message { get; set; }

        [JsonProperty("out")]
        public bool Out { get; set; }

        [JsonProperty("mentioned")]
        public bool Mentioned { get; set; }

        [JsonProperty("media_unread")]
        public bool MediaUnread { get; set; }

        [JsonProperty("silent")]
        public bool Silent { get; set; }

        [JsonProperty("post")]
        public bool Post { get; set; }

        [JsonProperty("from_scheduled")]
        public bool FromScheduled { get; set; }

        [JsonProperty("legacy")]
        public bool Legacy { get; set; }

        [JsonProperty("edit_hide")]
        public bool EditHide { get; set; }

        [JsonProperty("pinned")]
        public bool Pinned { get; set; }

        [JsonProperty("from_id")]
        public object FromId { get; set; }

        [JsonProperty("fwd_from")]
        public object FwdFrom { get; set; }

        [JsonProperty("via_bot_id")]
        public object ViaBotId { get; set; }

        [JsonProperty("reply_to")]
        public object ReplyTo { get; set; }

        [JsonProperty("media")]
        public object Media { get; set; }

        [JsonProperty("reply_markup")]
        public object ReplyMarkup { get; set; }

        [JsonProperty("entities")]
        public IList<Entity> Entities { get; set; }

        [JsonProperty("views")]
        public int Views { get; set; }

        [JsonProperty("forwards")]
        public int Forwards { get; set; }

        [JsonProperty("replies")]
        public Replies Replies { get; set; }

        [JsonProperty("edit_date")]
        public object EditDate { get; set; }

        [JsonProperty("post_author")]
        public string PostAuthor { get; set; }

        [JsonProperty("grouped_id")]
        public object GroupedId { get; set; }

        [JsonProperty("restriction_reason")]
        public IList<object> RestrictionReason { get; set; }
    }

}

Скачать исходный код парсера на Python вместе с небольшим пресетом настроек можно с Яндекс.Диска:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Credits: @matyushkin
ого, да мы с одного сурса пастили :roflanEbalo:
 
ого, да мы с одного сурса пастили :roflanEbalo:
Ну да, я код из той же темы брал, только изменил немного для удобства использования. Больше не публикуй материал, если уже есть подобный на форуме
 
Ну да, я код из той же темы брал, только изменил немного для удобства использования. Больше не публикуй материал, если уже есть подобный на форуме
ну я там еще несколько улучшений сделал - сделал приятные логи в консоль, выбор канала в кфг, код читается легко за счет своей простоты и принтов
 
ну я там еще несколько улучшений сделал - сделал приятные логи в консоль, выбор канала в кфг, код читается легко за счет своей простоты и принтов
Я сделал чуть-ли не то же самое XD
 
По просьбе человека из чата югейма делюсь с вами небольшим парсером сообщений из чатов в Telegram. Бот обладает достаточной скоростью работы и очень легко может быть автоматизирован под нужды разработчика. Также имеется поддержка изменения ключевых слов для парсинга, количества просматриваемых сообщений и сохранение сессии пользователя. Все настройки хранятся в файле settings.ini.

Скрипт работает за счет библиотеки telethon, которая используется для создания юзер ботов. Поэтому перед началом использования нужно будет зарегистрировать новое приложение в инструментах разработчика Telegram. Лк доступен по
Пожалуйста, авторизуйтесь для просмотра ссылки.
ссылке. В файл настроек необходимо вписать полученные App api_id и App api_hash, а также имя пользователя юзер бота для авторизации и дальнейшей работы.

На выходе вы получаете файл channel_messages.json, где представлены данные всех сообщений, подошедших по ключевым словам. Для работы с подобным ответом можно использовать приведенный ниже класс, полученный мной с помощью генератора классов JSON от Xamasoft.
C#:
Expand Collapse Copy
// Generated by Xamasoft JSON Class Generator
// http://www.xamasoft.com/json-class-generator

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace ParserBot
{

    public class PeerId
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("channel_id")]
        public int ChannelId { get; set; }
    }

    public class Entity
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("offset")]
        public int Offset { get; set; }

        [JsonProperty("length")]
        public int Length { get; set; }

        [JsonProperty("language")]
        public string Language { get; set; }
    }

    public class RecentReplier
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("user_id")]
        public int UserId { get; set; }
    }

    public class Replies
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("replies")]
        public int Replies { get; set; }

        [JsonProperty("replies_pts")]
        public int RepliesPts { get; set; }

        [JsonProperty("comments")]
        public bool Comments { get; set; }

        [JsonProperty("recent_repliers")]
        public IList<RecentReplier> RecentRepliers { get; set; }

        [JsonProperty("channel_id")]
        public int ChannelId { get; set; }

        [JsonProperty("max_id")]
        public int MaxId { get; set; }

        [JsonProperty("read_max_id")]
        public object ReadMaxId { get; set; }
    }

    public class Messages
    {

        [JsonProperty("_")]
        public string _ { get; set; }

        [JsonProperty("id")]
        public int Id { get; set; }

        [JsonProperty("peer_id")]
        public PeerId PeerId { get; set; }

        [JsonProperty("date")]
        public string Date { get; set; }

        [JsonProperty("message")]
        public string Message { get; set; }

        [JsonProperty("out")]
        public bool Out { get; set; }

        [JsonProperty("mentioned")]
        public bool Mentioned { get; set; }

        [JsonProperty("media_unread")]
        public bool MediaUnread { get; set; }

        [JsonProperty("silent")]
        public bool Silent { get; set; }

        [JsonProperty("post")]
        public bool Post { get; set; }

        [JsonProperty("from_scheduled")]
        public bool FromScheduled { get; set; }

        [JsonProperty("legacy")]
        public bool Legacy { get; set; }

        [JsonProperty("edit_hide")]
        public bool EditHide { get; set; }

        [JsonProperty("pinned")]
        public bool Pinned { get; set; }

        [JsonProperty("from_id")]
        public object FromId { get; set; }

        [JsonProperty("fwd_from")]
        public object FwdFrom { get; set; }

        [JsonProperty("via_bot_id")]
        public object ViaBotId { get; set; }

        [JsonProperty("reply_to")]
        public object ReplyTo { get; set; }

        [JsonProperty("media")]
        public object Media { get; set; }

        [JsonProperty("reply_markup")]
        public object ReplyMarkup { get; set; }

        [JsonProperty("entities")]
        public IList<Entity> Entities { get; set; }

        [JsonProperty("views")]
        public int Views { get; set; }

        [JsonProperty("forwards")]
        public int Forwards { get; set; }

        [JsonProperty("replies")]
        public Replies Replies { get; set; }

        [JsonProperty("edit_date")]
        public object EditDate { get; set; }

        [JsonProperty("post_author")]
        public string PostAuthor { get; set; }

        [JsonProperty("grouped_id")]
        public object GroupedId { get; set; }

        [JsonProperty("restriction_reason")]
        public IList<object> RestrictionReason { get; set; }
    }

}

Скачать исходный код парсера на Python вместе с небольшим пресетом настроек можно с Яндекс.Диска:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Credits: @matyushkin

Приветсвую! А каким образом нужно доработать софт, чтобы софт регулярно с определённым заданным таймингом парсил целевые сообщения из выбранных телеграм-чатов и комментарии из телеграм-каналов (комментарии из каналов - второстепенно, не так важно) и не скидывал их всем скопом в файл, а чтобы пересылал в отдельный чат с ботом, через которого можно было бы переходить в ЛС к пользователям, которые и написали целевые сообщение, обнаруженные парсером? Насколько сложно это будет реализовать и сколько вообще это примерно будет стоить?
 
Назад
Сверху Снизу