xiyuesaves / LiteLoaderQQNT-lite_tools

LiteLoaderQQNT 插件 - 轻量工具箱 —— 轻量 · 优雅 · 高效 · 福瑞
GNU General Public License v3.0
870 stars 30 forks source link

支持tg的animated保存到本地表情 #287

Closed jiongjiongJOJO closed 1 month ago

jiongjiongJOJO commented 1 month ago

support download telegram animated

jiongjiongJOJO commented 1 month ago

282

jiongjiongJOJO commented 1 month ago

抱歉抱歉,有些代码存在部分疏忽,感谢作者更新

xiyuesaves commented 1 month ago

在转换过程中某些贴纸会出现错误,例如这个,json文件应该没有问题,报错看起来像是遇到不受支持的编码了

throwJson.json

Lottie转Gif错误: Traceback (most recent call last):
  File "C:\fakepath\tgBuffer_to_gif.py", line 14, in <module>
  File "C:\fakepath\tgBuffer_to_gif.py", line 9, in main
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 195, in from_data
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 123, in __init__
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 286, in lottie_animation_from_data
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcbd' in position 271811: surrogates not allowed
jiongjiongJOJO commented 1 month ago

在转换过程中某些贴纸会出现错误,例如这个,json文件应该没有问题,报错看起来像是遇到不受支持的编码了

throwJson.json

Lottie转Gif错误: Traceback (most recent call last):
  File "C:\fakepath\tgBuffer_to_gif.py", line 14, in <module>
  File "C:\fakepath\tgBuffer_to_gif.py", line 9, in main
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 195, in from_data
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 123, in __init__
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 286, in lottie_animation_from_data
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcbd' in position 271811: surrogates not allowed

这个是已经解决了吗,刚起床还没看这个问题

xiyuesaves commented 1 month ago

在转换过程中某些贴纸会出现错误,例如这个,json文件应该没有问题,报错看起来像是遇到不受支持的编码了

throwJson.json

Lottie转Gif错误: Traceback (most recent call last):
  File "C:\fakepath\tgBuffer_to_gif.py", line 14, in <module>
  File "C:\fakepath\tgBuffer_to_gif.py", line 9, in main
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 195, in from_data
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 123, in __init__
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 286, in lottie_animation_from_data
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcbd' in position 271811: surrogates not allowed

这个是已经解决了吗,刚起床还没看这个问题

没有,只是处理了在执行失败时不会阻塞剩下的表情处理流程

xiyuesaves commented 1 month ago

有可能是 tgBuffer_to_gif 没有等到管道结束输入就执行剩下的流程导致json字符串缺失?

就像之前的那个demo,如果文件过大的话会分成多次传递,目前来看下载下来的json文件是完整的,问题只能出现在这里了

image

jiongjiongJOJO commented 1 month ago

有可能是 tgBuffer_to_gif 没有等到管道结束输入就执行剩下的流程导致json字符串缺失?

就像之前的那个demo,如果文件过大的话会分成多次传递,目前来看下载下来的json文件是完整的,问题只能出现在这里了

image

是这个原因,稍等我更新一下tgs转gif的程序就行了 image

jiongjiongJOJO commented 1 month ago

在转换过程中某些贴纸会出现错误,例如这个,json文件应该没有问题,报错看起来像是遇到不受支持的编码了

throwJson.json

Lottie转Gif错误: Traceback (most recent call last):
  File "C:\fakepath\tgBuffer_to_gif.py", line 14, in <module>
  File "C:\fakepath\tgBuffer_to_gif.py", line 9, in main
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 195, in from_data
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 123, in __init__
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 286, in lottie_animation_from_data
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcbd' in position 271811: surrogates not allowed

这个json有对应的tg链接吗,我找到的那个是视频,目前我从本地测试的是正常的

xiyuesaves commented 1 month ago

在转换过程中某些贴纸会出现错误,例如这个,json文件应该没有问题,报错看起来像是遇到不受支持的编码了

throwJson.json

Lottie转Gif错误: Traceback (most recent call last):
  File "C:\fakepath\tgBuffer_to_gif.py", line 14, in <module>
  File "C:\fakepath\tgBuffer_to_gif.py", line 9, in main
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 195, in from_data
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 123, in __init__
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 286, in lottie_animation_from_data
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcbd' in position 271811: surrogates not allowed

这个json有对应的tg链接吗,我找到的那个是视频,目前我从本地测试的是正常的

https://t.me/addstickers/TheMoomintroll 这个贴纸包,具体是里面那个背后有表盘的表情

jiongjiongJOJO commented 1 month ago

在转换过程中某些贴纸会出现错误,例如这个,json文件应该没有问题,报错看起来像是遇到不受支持的编码了 throwJson.json

Lottie转Gif错误: Traceback (most recent call last):
  File "C:\fakepath\tgBuffer_to_gif.py", line 14, in <module>
  File "C:\fakepath\tgBuffer_to_gif.py", line 9, in main
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 195, in from_data
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 123, in __init__
  File "C:\fakepath\rlottie_python\rlottie_wrapper.py", line 286, in lottie_animation_from_data
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcbd' in position 271811: surrogates not allowed

这个json有对应的tg链接吗,我找到的那个是视频,目前我从本地测试的是正常的

暂时没搞定,本地测的过程中发现可能不是管道没结束就处理了数据,而且这个异常的数据大小并不大,同一个贴纸包里有比这个更大的也能正常保存,可能是其他原因导致的,明天有空我再看下吧

jiongjiongJOJO commented 1 month ago

image

这个问题是传出来的数据是未经utf-8解码的数据,我这边当做已经解码的数据处理,正常情况下不存在问题,这个是特殊情况,所以异常了。 现在我这边直接读取buffer数据之后进行utf-8解码即可。但是我现在考虑到另外一个问题,因为tgs是一个gzip压缩了的json文件,通过pipe传输时,将这个gzip解压了再传出的,会导致数据大小比较大,能否考虑直接传出gzip的buffer数据,Python程序这边进行解压,这样也减轻了pipe传输时的管道压力。Python程序也可以考虑同时适配这两种情况。我的建议是直接传出gzip数据。

xiyuesaves commented 1 month ago

可以改,直接去掉解压流程就行了

jiongjiongJOJO commented 1 month ago

可以改,直接去掉解压流程就行了

OK,我这边测试一下,一起提交

xiyuesaves commented 1 month ago

不过就tgs这个大小的文件用pipe传输的压力应该可以忽略不记吧?

jiongjiongJOJO commented 1 month ago

不过就tgs这个大小的文件用pipe传输的压力应该可以忽略不记吧?

解压前是20K左右,解压后300K左右

jiongjiongJOJO commented 1 month ago

不过就tgs这个大小的文件用pipe传输的压力应该可以忽略不记吧?

解压前是20K左右,解压后300K左右

目前两种方式都支持,可以考虑不合并

xiyuesaves commented 1 month ago

pipe基于内存,300k确实可以忽略不计?(主要是工具箱有大部分用户并不会使用最新版本,如果现在调整数据流处理流程的话可能会导致部分用户使用旧版工具箱但却下载新版转码模块导致报错

xiyuesaves commented 1 month ago

等下我是不是把一条消息发了好几遍?

jiongjiongJOJO commented 1 month ago

pipe基于内存,300k确实可以忽略不计?(主要是工具箱有大部分用户并不会使用最新版本,如果现在调整数据流处理流程的话可能会导致部分用户使用旧版工具箱但却下载新版转码模块导致报错

不会的,我这边同时适配了两种格式的数据,刚刚都测通了,是gzip就解压后处理,不是gzip则直接处理。 我把转码的之前Release删除就行了。

等下我是不是把一条消息发了好几遍?

没有看到多条消息,应该没有多发

jiongjiongJOJO commented 1 month ago

已提交 #290