感觉 https://github.com/overtake/TelegramSwift 有些好文明设计,在考虑是 port 到 https://github.com/clansty/tdesktop 还是把 0wgram 的东西 port 到 TelegramSwift
GitHub
GitHub - overtake/TelegramSwift: Source code of Telegram for macos on Swift 5.0
Source code of Telegram for macos on Swift 5.0. Contribute to overtake/TelegramSwift development by creating an account on GitHub.
想重写一个这个
实际上 Export 的 API 和平时 Telegram 的接口是一样的,能返回的数据也一样。不知道为什么官方的这个导出的数据就这么奇怪。
接口只是在调用的时候包裹在了 invokeWithTakeout 里面加上了 takeout_id,调用的方法和返回都和平时一样。也不知道为什么要加这层东西,难道是相当于快照一下?或者带上 invokeWithTakeout 可以放宽 RateLimit?
以及官方文档里面写 invokeWithTakeout 要套上 invokeWithMessagesRange,并且对每个返回的 MessageRange 重复操作。然而我执行 invokeWithTakeout(messages.getSplitRanges) 返回的结果是 minId: 1 maxId:2147483647,只有这么一个。我猜测大概是如果私聊的 messageId 超过了 2147483647 就会返回两个?(Telegram 的 messageId 确实是个 int32,以及私聊和不 Super 的 Group 的 messageId 是相对于用户且共享范围的。不过我自己的 messageId 也就六位数)
以及 https://github.com/one-among-us/TelegramBackup 看起来是没有 invokeWithTakeout 的。invokeWithTakeout 到底有什么作用真的不得而知。不过看起来 contacts.GetSaved 这个方法是必须要 invokeWithTakeout 的
反正准备写一个导出工具,可以直接导出到 PostgreSQL,差量导出,防止本地一个几十个 G 的 result.json
https://core.telegram.org/api/takeout
实际上 Export 的 API 和平时 Telegram 的接口是一样的,能返回的数据也一样。不知道为什么官方的这个导出的数据就这么奇怪。
接口只是在调用的时候包裹在了 invokeWithTakeout 里面加上了 takeout_id,调用的方法和返回都和平时一样。也不知道为什么要加这层东西,难道是相当于快照一下?或者带上 invokeWithTakeout 可以放宽 RateLimit?
以及官方文档里面写 invokeWithTakeout 要套上 invokeWithMessagesRange,并且对每个返回的 MessageRange 重复操作。然而我执行 invokeWithTakeout(messages.getSplitRanges) 返回的结果是 minId: 1 maxId:2147483647,只有这么一个。我猜测大概是如果私聊的 messageId 超过了 2147483647 就会返回两个?(Telegram 的 messageId 确实是个 int32,以及私聊和不 Super 的 Group 的 messageId 是相对于用户且共享范围的。不过我自己的 messageId 也就六位数)
以及 https://github.com/one-among-us/TelegramBackup 看起来是没有 invokeWithTakeout 的。invokeWithTakeout 到底有什么作用真的不得而知。不过看起来 contacts.GetSaved 这个方法是必须要 invokeWithTakeout 的
反正准备写一个导出工具,可以直接导出到 PostgreSQL,差量导出,防止本地一个几十个 G 的 result.json
https://core.telegram.org/api/takeout
❤1🤩1
凌莞的奇奇怪怪的分享
契机:有人不知道解散群之前应该先 export 一下
看起来一个原先是 Chat 然后 migrate to Channel 的群,migrate 之前的消息在群解散之后还能获取到