instagram: adds support for share urls

This commit is contained in:
stefanodvx 2025-04-14 15:47:22 +02:00
parent 401c0513a3
commit 2e9694689f
2 changed files with 49 additions and 0 deletions

View file

@ -29,6 +29,23 @@ const (
// to get the API key and timestamp
)
var igHeaders = map[string]string{
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Accept-Language": "en-GB,en;q=0.9",
"Cache-Control": "max-age=0",
"Dnt": "1",
"Priority": "u=0, i",
"Sec-Ch-Ua": `Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99`,
"Sec-Ch-Ua-Mobile": "?0",
"Sec-Ch-Ua-Platform": "macOS",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Sec-Fetch-User": "?1",
"Upgrade-Insecure-Requests": "1",
"User-Agent": util.ChromeUA,
}
var HTTPClient = &http.Client{
Transport: &http3.Transport{
TLSClientConfig: &tls.Config{
@ -73,6 +90,37 @@ var StoriesExtractor = &models.Extractor{
},
}
var ShareURLExtractor = &models.Extractor{
Name: "Instagram Share URL",
CodeName: "instagram:share",
Type: enums.ExtractorTypeSingle,
Category: enums.ExtractorCategorySocial,
URLPattern: regexp.MustCompile(`https?:\/\/(www\.)?instagram\.com\/share\/((reels?|video|s|p)\/)?(?P<id>[^\/\?]+)`),
IsRedirect: true,
Run: func(ctx *models.DownloadContext) (*models.ExtractorResponse, error) {
req, err := http.NewRequest(
http.MethodGet,
ctx.MatchedContentURL,
nil,
)
if err != nil {
return nil, fmt.Errorf("failed to create request: %w", err)
}
for k, v := range igHeaders {
req.Header.Set(k, v)
}
resp, err := HTTPClient.Do(req)
if err != nil {
return nil, fmt.Errorf("failed to send request: %w", err)
}
defer resp.Body.Close()
return &models.ExtractorResponse{
URL: resp.Request.URL.String(),
}, nil
},
}
func MediaListFromAPI(
ctx *models.DownloadContext,
stories bool,