instagram: adds support for share urls
This commit is contained in:
parent
401c0513a3
commit
2e9694689f
2 changed files with 49 additions and 0 deletions
|
@ -29,6 +29,23 @@ const (
|
||||||
// to get the API key and timestamp
|
// 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{
|
var HTTPClient = &http.Client{
|
||||||
Transport: &http3.Transport{
|
Transport: &http3.Transport{
|
||||||
TLSClientConfig: &tls.Config{
|
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(
|
func MediaListFromAPI(
|
||||||
ctx *models.DownloadContext,
|
ctx *models.DownloadContext,
|
||||||
stories bool,
|
stories bool,
|
||||||
|
|
|
@ -14,6 +14,7 @@ var List = []*models.Extractor{
|
||||||
tiktok.VMExtractor,
|
tiktok.VMExtractor,
|
||||||
instagram.Extractor,
|
instagram.Extractor,
|
||||||
instagram.StoriesExtractor,
|
instagram.StoriesExtractor,
|
||||||
|
instagram.ShareURLExtractor,
|
||||||
twitter.Extractor,
|
twitter.Extractor,
|
||||||
twitter.ShortExtractor,
|
twitter.ShortExtractor,
|
||||||
pinterest.Extractor,
|
pinterest.Extractor,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue