Author Topic: Протокол Telegram  (Read 440077 times)

0 Members and 40 Guests are viewing this topic.

Offline dartraiden

Re: Протокол Telegram
« Reply #195 on: 18 10 2025, 07:26:16 »
Повторюсь: в стабильной версии очень старая tdlib.

В версии в разработке этот баг есть?
« Last Edit: 18 10 2025, 07:38:19 by dartraiden »
 

Offline Alex79

Re: Протокол Telegram
« Reply #196 on: 18 10 2025, 09:52:11 »
Повторюсь: в стабильной версии очень старая tdlib.

В версии в разработке этот баг есть?

В предыдущем посте же все написано. Ссылки на скачку файлов формируются при запросе конкретного сообщения от клиента к серверу и их срок жизни около 2 часов (наверное это настройка в боте выдающем файлы, либо канала с архивами эфиров), чтобы они качались всегда, в миранде нужно добавить в механизм обработки события загрузки - если она не начинается, значит ссылка устарела и требуется повторно загрузить в историю миранды (с сервера) то сообщение, которое содержит загружаемый файл с обновленной ссылкой.
 

Offline dartraiden

Re: Протокол Telegram
« Reply #197 on: 18 10 2025, 22:51:29 »
TG работает совсем иначе. Вот как выглядит отдельное событие (пост в канале "Коммерсант FM (Эфиры)")

Code: [Select]
    message {
      id = 7525629952
      sender_id = messageSenderChat {
        chat_id = -1002401255574
      }
      chat_id = -1002401255574
      sending_state = null
      scheduling_state = null
      is_outgoing = false
      is_pinned = false
      is_from_offline = false
      can_be_saved = true
      has_timestamped_media = true
      is_channel_post = true
      contains_unread_mention = false
      date = 1759788667
      edit_date = 0
      forward_info = null
      import_info = null
      interaction_info = messageInteractionInfo {
        view_count = 13
        forward_count = 0
        reply_info = null
        reactions = null
      }
      unread_reactions = vector[0] {
      }
      fact_check = null
      reply_to = null
      message_thread_id = 0
      topic_id = null
      self_destruct_type = null
      self_destruct_in = 0.000000
      auto_delete_in = 0.000000
      via_bot_user_id = 0
      sender_business_bot_user_id = 0
      sender_boost_count = 0
      paid_message_star_count = 0
      author_signature = ""
      media_album_id = 0
      effect_id = 0
      has_sensitive_content = false
      restriction_reason = ""
      content = messageAudio {
        audio = audio {
          duration = 3594
          title = "00:00 мск - 07.10.2025"
          performer = "Коммерсант FM"
          file_name = "00-00.mp3"
          mime_type = "audio/mpeg"
          album_cover_minithumbnail = minithumbnail {
            width = 40
            height = 40
            data = bytes [838] { FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 01 00 01 00 00 FF DB 00 43 00 28 1C 1E 23 1E 19 28 23 21 23 2D 2B 28 30 3C 64 41 3C 37 37 3C 7B 58 5D 49 64 91 80 99 96 8F 80 8C 8A A0 B4 E6 C3 A0 ...}
          }
          album_cover_thumbnail = thumbnail {
            format = thumbnailFormatJpeg {
            }
            width = 320
            height = 320
            file = file {
              id = 2407
              size = 13351
              expected_size = 13351
              local = localFile {
                path = ""
                can_be_downloaded = true
                can_be_deleted = false
                is_downloading_active = false
                is_downloading_completed = false
                download_offset = 0
                downloaded_prefix_size = 0
                downloaded_size = 0
              }
              remote = remoteFile {
                id = "AAMCAgADIQUABI8gQJYAAhwJaPQbGpaA0my6kVMKN8b8nl6qlQkAAsJ-AAI0NiBLq_Tjxbm4bAwBAAdtAAM2BA"
                unique_id = "AQADwn4AAjQ2IEty"
                is_uploading_active = false
                is_uploading_completed = true
                uploaded_size = 13351
              }
            }
          }
          external_album_covers = vector[2] {
            thumbnail {
              format = thumbnailFormatJpeg {
              }
              width = 100
              height = 100
              file = file {
                id = 2409
                size = 0
                expected_size = 0
                local = localFile {
                  path = ""
                  can_be_downloaded = true
                  can_be_deleted = false
                  is_downloading_active = false
                  is_downloading_completed = false
                  download_offset = 0
                  downloaded_prefix_size = 0
                  downloaded_size = 0
                }
                remote = remoteFile {
                  id = "AAg9I2F1ZGlvX3QjMDA6MDAg0LzRgdC6IC0gMDcuMTAuMjAyNSPQmtC-0LzQvNC10YDRgdCw0L3RgiBGTSMxIwACAw"
                  unique_id = "_wAIPSNhdWRpb190IzAwOjAwINC80YHQuiAtIDA3LjEwLjIwMjUj0JrQvtC80LzQtdGA0YHQsNC90YIgRk0jMSMAAg"
                  is_uploading_active = false
                  is_uploading_completed = true
                  uploaded_size = 0
                }
              }
            }
            thumbnail {
              format = thumbnailFormatJpeg {
              }
              width = 600
              height = 600
              file = file {
                id = 2410
                size = 0
                expected_size = 0
                local = localFile {
                  path = ""
                  can_be_downloaded = true
                  can_be_deleted = false
                  is_downloading_active = false
                  is_downloading_completed = false
                  download_offset = 0
                  downloaded_prefix_size = 0
                  downloaded_size = 0
                }
                remote = remoteFile {
                  id = "AAg9I2F1ZGlvX3QjMDA6MDAg0LzRgdC6IC0gMDcuMTAuMjAyNSPQmtC-0LzQvNC10YDRgdCw0L3RgiBGTSMwIwACAw"
                  unique_id = "_wAIPSNhdWRpb190IzAwOjAwINC80YHQuiAtIDA3LjEwLjIwMjUj0JrQvtC80LzQtdGA0YHQsNC90YIgRk0jMCMAAg"
                  is_uploading_active = false
                  is_uploading_completed = true
                  uploaded_size = 0
                }
              }
            }
          }
          audio = file {
            id = 2408
            size = 57503744
            expected_size = 57503744
            local = localFile {
              path = ""
              can_be_downloaded = true
              can_be_deleted = false
              is_downloading_active = false
              is_downloading_completed = false
              download_offset = 0
              downloaded_prefix_size = 0
              downloaded_size = 0
            }
            remote = remoteFile {
              id = "CQACAgIAAyEFAASPIECWAAIcCWj0GxqWgNJsupFTCjfG_J5eqpUJAALCfgACNDYgS6v048W5uGwMNgQ"
              unique_id = "AgADwn4AAjQ2IEs"
              is_uploading_active = false
              is_uploading_completed = true
              uploaded_size = 57503744
            }
          }
        }
        caption = formattedText {
          text = "🕙 Не удалось найти плейлист за этот час. Навигация по дате, времени. Клик по хештегу отсортирует записи по этому каналу или всем чатам:
Навигация по дате, времени. Клик по хештегу отсортирует записи по этому каналу или всем чатам: #д07102025 #ч00 @recradio"
          entities = vector[5] {
            textEntity {
              offset = 78
              length = 7
              type = textEntityTypeBold {
              }
            }
            textEntity {
              offset = 174
              length = 7
              type = textEntityTypeBold {
              }
            }
            textEntity {
              offset = 233
              length = 10
              type = textEntityTypeHashtag {
              }
            }
            textEntity {
              offset = 244
              length = 4
              type = textEntityTypeHashtag {
              }
            }
            textEntity {
              offset = 249
              length = 9
              type = textEntityTypeMention {
              }
            }
          }
        }
      }
      reply_markup = replyMarkupInlineKeyboard {
        rows = vector[3] {
          vector[1] {
            inlineKeyboardButton {
              text = "Список Радиостанций"
              type = inlineKeyboardButtonTypeUrl {
                url = "https://t.me/recradio"
              }
            }
          }
          vector[1] {
            inlineKeyboardButton {
              text = "СЛУШАТЬ ПРЯМОЙ ЭФИР"
              type = inlineKeyboardButtonTypeUrl {
                url = "https://volna.top/radio-kommersant?tlg"
              }
            }
          }
          vector[1] {
            inlineKeyboardButton {
              text = "Поддержать"
              type = inlineKeyboardButtonTypeUrl {
                url = "https://t.me/recradio/4"
              }
            }
          }
        }
      }
    }

Оно состоит из отдельных элементов: текст, превьюшка, прикреплённый файл и т.д. Нас интересует файл:

Code: [Select]
          audio = file {
            id = 2408
            size = 57503744
            expected_size = 57503744
            local = localFile {
              path = ""
              can_be_downloaded = true
              can_be_deleted = false
              is_downloading_active = false
              is_downloading_completed = false
              download_offset = 0
              downloaded_prefix_size = 0
              downloaded_size = 0
            }
            remote = remoteFile {
              id = "CQACAgIAAyEFAASPIECWAAIcCWj0GxqWgNJsupFTCjfG_J5eqpUJAALCfgACNDYgS6v048W5uGwMNgQ"
              unique_id = "AgADwn4AAjQ2IEs"
              is_uploading_active = false
              is_uploading_completed = true
              uploaded_size = 57503744
            }
          }

Как видно, никаких ссылок никто никому не присылает. Приходит лишь идентификатор файла. Когда Миранда скачивает файл (автоматически или по запросу пользователя), она отправляет на сервер запрос "а дай мне файл с вот таким идентификатором" и в ответ получает файл.

Сейчас я запросил историю этого канала. Завтра попробую скачать какие-нибудь из этих эфиров. Также, попробую очистить и заново закачать историю и мы увидим на примере вон того события, поменяется ли хоть что-то в нём (вдруг идентификаторы протухают каким-то образом? тогда через несколько часов загрузка этого события с сервера будет содержать иные идентификаторы).
« Last Edit: 18 10 2025, 23:16:46 by dartraiden »