summaryrefslogtreecommitdiffstats
path: root/bridge/telegram/handlers.go
diff options
context:
space:
mode:
Diffstat (limited to 'bridge/telegram/handlers.go')
-rw-r--r--bridge/telegram/handlers.go54
1 files changed, 46 insertions, 8 deletions
diff --git a/bridge/telegram/handlers.go b/bridge/telegram/handlers.go
index 5c60f74b..ee087524 100644
--- a/bridge/telegram/handlers.go
+++ b/bridge/telegram/handlers.go
@@ -217,6 +217,46 @@ func (b *Btelegram) handleDownloadAvatar(userid int, channel string) {
}
}
+func (b *Btelegram) maybeConvertTgs(name *string, data *[]byte) {
+ var format string
+ switch b.GetString("MediaConvertTgs") {
+ case FormatWebp:
+ b.Log.Debugf("Tgs to WebP conversion enabled, converting %v", name)
+ format = FormatWebp
+ case FormatPng:
+ // The WebP to PNG converter can't handle animated webp files yet,
+ // and I'm not going to write a path for x/image/webp.
+ // The error message would be:
+ // conversion failed: webp: non-Alpha VP8X is not implemented
+ // So instead, we tell lottie to directly go to PNG.
+ b.Log.Debugf("Tgs to PNG conversion enabled, converting %v", name)
+ format = FormatPng
+ default:
+ // Otherwise, no conversion was requested. Trying to run the usual webp
+ // converter would fail, because '.tgs.webp' is actually a gzipped JSON
+ // file, and has nothing to do with WebP.
+ return
+ }
+ err := helper.ConvertTgsToX(data, format, b.Log)
+ if err != nil {
+ b.Log.Errorf("conversion failed: %v", err)
+ } else {
+ *name = strings.Replace(*name, "tgs.webp", format, 1)
+ }
+}
+
+func (b *Btelegram) maybeConvertWebp(name *string, data *[]byte) {
+ if b.GetBool("MediaConvertWebPToPNG") {
+ b.Log.Debugf("WebP to PNG conversion enabled, converting %v", name)
+ err := helper.ConvertWebPToPNG(data)
+ if err != nil {
+ b.Log.Errorf("conversion failed: %v", err)
+ } else {
+ *name = strings.Replace(*name, ".webp", ".png", 1)
+ }
+ }
+}
+
// handleDownloadFile handles file download
func (b *Btelegram) handleDownload(rmsg *config.Message, message *tgbotapi.Message) error {
size := 0
@@ -264,15 +304,13 @@ func (b *Btelegram) handleDownload(rmsg *config.Message, message *tgbotapi.Messa
if err != nil {
return err
}
- if strings.HasSuffix(name, ".webp") && b.GetBool("MediaConvertWebPToPNG") {
- b.Log.Debugf("WebP to PNG conversion enabled, converting %s", name)
- err := helper.ConvertWebPToPNG(data)
- if err != nil {
- b.Log.Errorf("conversion failed: %s", err)
- } else {
- name = strings.Replace(name, ".webp", ".png", 1)
- }
+
+ if strings.HasSuffix(name, ".tgs.webp") {
+ b.maybeConvertTgs(&name, data)
+ } else if strings.HasSuffix(name, ".webp") {
+ b.maybeConvertWebp(&name, data)
}
+
helper.HandleDownloadData(b.Log, rmsg, name, message.Caption, "", data, b.General)
return nil
}