Fix links to not-yet-downloaded files
This commit is contained in:
parent
f052d633ac
commit
8c20aaa30d
|
@ -1,7 +1,6 @@
|
||||||
package telegram
|
package telegram
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/sha256"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
@ -192,7 +191,10 @@ func (c *Client) updateNewMessage(update *client.UpdateNewMessage) {
|
||||||
|
|
||||||
// download file(s)
|
// download file(s)
|
||||||
if file != nil && !file.Local.IsDownloadingCompleted {
|
if file != nil && !file.Local.IsDownloadingCompleted {
|
||||||
c.DownloadFile(file.Id, 10, false)
|
newFile, err := c.DownloadFile(file.Id, 10, true)
|
||||||
|
if err == nil {
|
||||||
|
file = newFile
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// OTR support (I do not know why would you need it, seriously)
|
// OTR support (I do not know why would you need it, seriously)
|
||||||
if !strings.HasPrefix(text, "?OTR") {
|
if !strings.HasPrefix(text, "?OTR") {
|
||||||
|
@ -254,12 +256,7 @@ func (c *Client) updateFile(update *client.UpdateFile) {
|
||||||
|
|
||||||
err := os.Symlink(
|
err := os.Symlink(
|
||||||
update.File.Local.Path,
|
update.File.Local.Path,
|
||||||
fmt.Sprintf(
|
c.formatFilePath(c.content.Path, update.File.Remote.Id, filepath.Ext(update.File.Local.Path)),
|
||||||
"%s/%s%s",
|
|
||||||
c.content.Path,
|
|
||||||
fmt.Sprintf("%x", sha256.Sum256([]byte(update.File.Remote.Id))),
|
|
||||||
filepath.Ext(update.File.Local.Path),
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
linkErr := err.(*os.LinkError)
|
linkErr := err.(*os.LinkError)
|
||||||
|
|
|
@ -303,15 +303,17 @@ func (c *Client) formatContent(file *client.File, filename string) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf(
|
return fmt.Sprintf(
|
||||||
"%s (%v kbytes) | %s/%s%s",
|
"%s (%v kbytes) | %s",
|
||||||
filename,
|
filename,
|
||||||
file.Size/1024,
|
file.Size/1024,
|
||||||
c.content.Link,
|
c.formatFilePath(c.content.Link, file.Remote.Id, filepath.Ext(file.Local.Path)),
|
||||||
fmt.Sprintf("%x", sha256.Sum256([]byte(file.Remote.Id))),
|
|
||||||
filepath.Ext(filename),
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Client) formatFilePath(basedir string, id string, ext string) string {
|
||||||
|
return fmt.Sprintf("%s/%x%s", basedir, sha256.Sum256([]byte(id)), ext)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Client) formatRestrict(ban bool, hours int64) client.ChatMemberStatus {
|
func (c *Client) formatRestrict(ban bool, hours int64) client.ChatMemberStatus {
|
||||||
var until int32
|
var until int32
|
||||||
if hours != 0 {
|
if hours != 0 {
|
||||||
|
@ -453,13 +455,13 @@ func (c *Client) contentToFilename(content client.MessageContent) (*client.File,
|
||||||
return nil, ""
|
return nil, ""
|
||||||
case client.TypeMessageAudio:
|
case client.TypeMessageAudio:
|
||||||
audio, _ := content.(*client.MessageAudio)
|
audio, _ := content.(*client.MessageAudio)
|
||||||
return audio.Audio.Audio, audio.Audio.FileName
|
return audio.Audio.Audio, filepath.Base(audio.Audio.Audio.Local.Path)
|
||||||
case client.TypeMessageVideo:
|
case client.TypeMessageVideo:
|
||||||
video, _ := content.(*client.MessageVideo)
|
video, _ := content.(*client.MessageVideo)
|
||||||
return video.Video.Video, video.Video.FileName
|
return video.Video.Video, filepath.Base(video.Video.Video.Local.Path)
|
||||||
case client.TypeMessageDocument:
|
case client.TypeMessageDocument:
|
||||||
document, _ := content.(*client.MessageDocument)
|
document, _ := content.(*client.MessageDocument)
|
||||||
return document.Document.Document, document.Document.FileName
|
return document.Document.Document, filepath.Base(document.Document.Document.Local.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, ""
|
return nil, ""
|
||||||
|
|
Loading…
Reference in a new issue