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
|
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) {
|
func (h *handler) handleVideo(media bsky.ParsedEmbeds) (tgbotapi.InputMedia, error) {
|
||||||
url := buildBlobURL(h.bsky.Bluesky.Cfg.PDSURL, h.bsky.Bluesky.Cfg.DID, media.URI)
|
url := buildBlobURL(h.bsky.Bluesky.Cfg.PDSURL, h.bsky.Bluesky.Cfg.DID, media.URI)
|
||||||
log.Printf("Fetching video: %s\n", url)
|
log.Printf("Fetching video: %s\n", url)
|
||||||
|
|
@ -373,12 +388,16 @@ func (h *handler) ProcessPost(event *models.Event) error {
|
||||||
case "record":
|
case "record":
|
||||||
continue
|
continue
|
||||||
case "image":
|
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 {
|
if len(mediaGroup) == 0 {
|
||||||
mediaAdd.Caption = captionText
|
mediaAdd.Caption = captionText
|
||||||
mediaAdd.ParseMode = tgbotapi.ModeHTML
|
mediaAdd.ParseMode = tgbotapi.ModeHTML
|
||||||
}
|
}
|
||||||
mediaGroup = append(mediaGroup, &mediaAdd)
|
mediaGroup = append(mediaGroup, mediaAdd)
|
||||||
case "video":
|
case "video":
|
||||||
mediaAdd, err := h.handleVideo(media)
|
mediaAdd, err := h.handleVideo(media)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -400,12 +419,16 @@ func (h *handler) ProcessPost(event *models.Event) error {
|
||||||
for _, media := range po {
|
for _, media := range po {
|
||||||
switch media.Type {
|
switch media.Type {
|
||||||
case "image":
|
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 {
|
if len(mediaGroup) == 0 {
|
||||||
mediaAdd.Caption = captionText
|
mediaAdd.Caption = captionText
|
||||||
mediaAdd.ParseMode = tgbotapi.ModeHTML
|
mediaAdd.ParseMode = tgbotapi.ModeHTML
|
||||||
}
|
}
|
||||||
mediaGroup = append(mediaGroup, &mediaAdd)
|
mediaGroup = append(mediaGroup, mediaAdd)
|
||||||
case "video":
|
case "video":
|
||||||
mediaAdd, err := h.handleVideo(media)
|
mediaAdd, err := h.handleVideo(media)
|
||||||
if err != nil {
|
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))
|
h.tg.Send(tgbotapi.NewEditMessageCaption(telegramRecord.ChannelID, telegramRecord.MessageID[0], captionText))
|
||||||
} else {
|
} else {
|
||||||
resp, err := h.tg.SendMediaGroup(tgbotapi.NewMediaGroup(cid, mediaGroup))
|
resp, err := h.tg.SendMediaGroup(tgbotapi.NewMediaGroup(cid, mediaGroup))
|
||||||
fmt.Println(err)
|
|
||||||
h.cleanupFiles()
|
h.cleanupFiles()
|
||||||
|
if err != nil || len(resp) == 0 {
|
||||||
|
log.Printf("Failed to send media group: %v\n", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
uri, postCid := getLink(event)
|
uri, postCid := getLink(event)
|
||||||
var messageIDs []int
|
var messageIDs []int
|
||||||
for _, msgID := range resp {
|
for _, msgID := range resp {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue