Upload image bytes instead of blob URL
All checks were successful
/ build (push) Successful in 1m31s
All checks were successful
/ build (push) Successful in 1m31s
This commit is contained in:
parent
48d565111e
commit
025282ff39
1 changed files with 31 additions and 5 deletions
36
main.go
36
main.go
|
|
@ -198,6 +198,21 @@ func (h *handler) HandleEvent(ctx context.Context, event *models.Event) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (h *handler) handleImage(did string, media bsky.ParsedEmbeds) (*tgbotapi.InputMediaPhoto, error) {
|
||||
blobURL := buildBlobURL(h.bsky.Bluesky.Cfg.PDSURL, did, media.URI)
|
||||
resp, err := http.Get(blobURL)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to fetch image: %w", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
data, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to read image: %w", err)
|
||||
}
|
||||
mediaAdd := tgbotapi.NewInputMediaPhoto(tgbotapi.FileBytes{Name: "image.jpg", Bytes: data})
|
||||
return &mediaAdd, nil
|
||||
}
|
||||
|
||||
func (h *handler) handleVideo(media bsky.ParsedEmbeds) (tgbotapi.InputMedia, error) {
|
||||
url := buildBlobURL(h.bsky.Bluesky.Cfg.PDSURL, h.bsky.Bluesky.Cfg.DID, media.URI)
|
||||
log.Printf("Fetching video: %s\n", url)
|
||||
|
|
@ -373,12 +388,16 @@ func (h *handler) ProcessPost(event *models.Event) error {
|
|||
case "record":
|
||||
continue
|
||||
case "image":
|
||||
mediaAdd := tgbotapi.NewInputMediaPhoto(tgbotapi.FileURL(buildBlobURL(h.bsky.Bluesky.Cfg.PDSURL, h.bsky.Bluesky.Cfg.DID, media.URI)))
|
||||
mediaAdd, err := h.handleImage(event.Did, media)
|
||||
if err != nil {
|
||||
log.Printf("Failed to handle image: %s\n", err)
|
||||
continue
|
||||
}
|
||||
if len(mediaGroup) == 0 {
|
||||
mediaAdd.Caption = captionText
|
||||
mediaAdd.ParseMode = tgbotapi.ModeHTML
|
||||
}
|
||||
mediaGroup = append(mediaGroup, &mediaAdd)
|
||||
mediaGroup = append(mediaGroup, mediaAdd)
|
||||
case "video":
|
||||
mediaAdd, err := h.handleVideo(media)
|
||||
if err != nil {
|
||||
|
|
@ -400,12 +419,16 @@ func (h *handler) ProcessPost(event *models.Event) error {
|
|||
for _, media := range po {
|
||||
switch media.Type {
|
||||
case "image":
|
||||
mediaAdd := tgbotapi.NewInputMediaPhoto(tgbotapi.FileURL(buildBlobURL(h.bsky.Bluesky.Cfg.PDSURL, h.bsky.Bluesky.Cfg.DID, media.URI)))
|
||||
mediaAdd, err := h.handleImage(event.Did, media)
|
||||
if err != nil {
|
||||
log.Printf("Failed to handle image: %s\n", err)
|
||||
continue
|
||||
}
|
||||
if len(mediaGroup) == 0 {
|
||||
mediaAdd.Caption = captionText
|
||||
mediaAdd.ParseMode = tgbotapi.ModeHTML
|
||||
}
|
||||
mediaGroup = append(mediaGroup, &mediaAdd)
|
||||
mediaGroup = append(mediaGroup, mediaAdd)
|
||||
case "video":
|
||||
mediaAdd, err := h.handleVideo(media)
|
||||
if err != nil {
|
||||
|
|
@ -427,8 +450,11 @@ func (h *handler) ProcessPost(event *models.Event) error {
|
|||
h.tg.Send(tgbotapi.NewEditMessageCaption(telegramRecord.ChannelID, telegramRecord.MessageID[0], captionText))
|
||||
} else {
|
||||
resp, err := h.tg.SendMediaGroup(tgbotapi.NewMediaGroup(cid, mediaGroup))
|
||||
fmt.Println(err)
|
||||
h.cleanupFiles()
|
||||
if err != nil || len(resp) == 0 {
|
||||
log.Printf("Failed to send media group: %v\n", err)
|
||||
return err
|
||||
}
|
||||
uri, postCid := getLink(event)
|
||||
var messageIDs []int
|
||||
for _, msgID := range resp {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue