ytlinkprov: Follow 3XX codes to last 200
Signed-off-by: HeshamTB <hishaminv@gmail.com>
This commit is contained in:
parent
156ecd35e9
commit
12b3da09ac
@ -2,7 +2,10 @@ package ytlinkprov
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/lrstanley/go-ytdlp"
|
||||
@ -70,11 +73,28 @@ func (c *CacheLinkProv) validCache(l TimedLink) bool {
|
||||
}
|
||||
|
||||
func getRemoteLink(id string) (string, error) {
|
||||
|
||||
var link string
|
||||
|
||||
vidUrl := fmt.Sprintf("https://youtube.com/watch?v=%s", id)
|
||||
ytCmd := ytdlp.New().ExtractAudio().GetURL()
|
||||
ytRes, err := ytCmd.Run(context.Background(), vidUrl)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return ytRes.Stdout, nil
|
||||
linkFirst := strings.Split(ytRes.Stdout, "\n")[0]
|
||||
|
||||
/* Get the last link in a chain of 3XX codes*/
|
||||
resp, err := http.Get(link)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
return linkFirst, nil
|
||||
}
|
||||
|
||||
link = resp.Request.URL.String()
|
||||
return link, nil
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user