-
Автор темы
- #1
По просьбе человека из чата югейма делюсь с вами небольшим парсером сообщений из чатов в Telegram. Бот обладает достаточной скоростью работы и очень легко может быть автоматизирован под нужды разработчика. Также имеется поддержка изменения ключевых слов для парсинга, количества просматриваемых сообщений и сохранение сессии пользователя. Все настройки хранятся в файле
Скрипт работает за счет библиотеки
На выходе вы получаете файл
Скачать исходный код парсера на Python вместе с небольшим пресетом настроек можно с Яндекс.Диска:
Credits: @matyushkin
settings.ini
.Скрипт работает за счет библиотеки
telethon
, которая используется для создания юзер ботов. Поэтому перед началом использования нужно будет зарегистрировать новое приложение в инструментах разработчика Telegram. Лк доступен по
Пожалуйста, авторизуйтесь для просмотра ссылки.
ссылке. В файл настроек необходимо вписать полученные App api_id
и App api_hash
, а также имя пользователя юзер бота для авторизации и дальнейшей работы.На выходе вы получаете файл
channel_messages.json
, где представлены данные всех сообщений, подошедших по ключевым словам. Для работы с подобным ответом можно использовать приведенный ниже класс, полученный мной с помощью генератора классов JSON от Xamasoft.
C#:
// 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