ins-saver
Give me an instagram link to return the JSON data for your related resources ins-saver
- Deft, lightweight reptilian tools,To help you access the critical data on instagram.
- Support for
Typescript type checking
- Support for Links to
posts
andigtv
. - ES7 async/await support.
Installation
Install using npm:
npm install ins-saver
Install using yarn:
yarn add ins-saver
API Reference
-
ins-saver
-
InsSaver
⏏ - new InsSaver([opts])
-
instance
-
.analysisPost(urlOrCode,handleDataCallback) ⇒
InsSaver
-
.analysisIg(urlOrCode,handleDataCallback) ⇒
InsSaver
-
.download(url,filename?) ⇒
Promisedata:downloadFileType
-
.analysisPost(urlOrCode,handleDataCallback) ⇒
-
static
-
.warn(msg) ⇒
void
-
.info(msg) ⇒
void
-
.title(msg,color?,indent?) ⇒
void
-
.log(o,tit?,color?,indent ?) ⇒
void
-
.createUrl(urlOrCode) ⇒
string
-
.createTvUrl(urlOrCode) ⇒
string
-
.getShortCode(url) ⇒
string
-
.warn(msg) ⇒
-
InsSaver
⏏
InsSaver
new InsSaver([opts])
Create a new InsSaver.
Param | Type | Description |
---|---|---|
[opts] | Object |
|
[opts.getCookie] | async function |
Return the cookies |
[opts.downloadPath] | String |
The path to save the resource |
[opts.outCookie]? | async function |
The Hook function to call when a cookie fails |
[opts.proxy]? | String |
Proxy address |
[opts.switchCookieInterval]? | number |
Time interval to switch cookies |
[opts.useCookieMaxNum]? | number |
Maximum number of cookies used |
[opts.cookies]? | CookieType[] |
Use the cookies provided directly if there is a cookies option |
Example
Basic usage:
var InsSaver = require('ins-saver');
var config = {
getCookie:async function (){
return ["csrftoken=hxGbDuBHR4nM2C0cVVHrsDT4pDfnGXMy;rur=ATN;ds_user_id=48888644144;sessionid=48888644144%3AATiVVxHTkAI8Dx%3A3"
]
},
downloadPath: "D:\\ins-saver\\resources\\",
switchCookieInterval:1000 * 60,
proxy:"http://127.0.0.1:1080" // if use proxy
}
var saver = new InsSaver(config);
//return the json data related to the link
saver.analysisPost("https://www.instagram.com/p/CXDzvDrPQry__/?utm_medium=copy_link",async (data)=>{
// handle the json data
})
InsSaver
saver.analysisPost ⇒ crawls JSON-FORMATTED data like post links
https://www.instagram.com/p/CXDzvDrPQry/?utm_medium=copy_link
saver.analysisPost("https://www.instagram.com/p/CXDzvDrPQry__/?utm_medium=copy_link",async (data)=>{
//The Hook function call passes in the parsed JSON data
})
The data format that needs to be processed looks something like this :
type InsJsonDataType = {
id:number,
shortcode:string,
caption:string, //post desc
owner:{
id:number,
profile_pic_url:string,
username:string,
full_name:string,
},
is_multiple:boolean,
list: {
id:string,
shortcode:string,
display_url:string,
url:string,
is_video:boolean,
type:string,
typename:string
}[]
}
InsSaver
saver.analysisIg⇒ crawls JSON-FORMATTED data like Igtv links
https://www.instagram.com/tv/CQI4IrrD2mU/?utm_medium=copy_link
The Usage is the same as analysisPost
, except that the list
array in the returned data
contains only one piece of data
Promisedata:downloadFileType
saver.download([url], [filename]?) ⇒ When you get the JSON data, you can use the download function to download the resource you want!
Example Usage:
saver.download(data.owner.profile_pic_url,data.owner.username)
.then( res => {
//res contains some information about the downloaded resource when the download is successful, or it contains an error message
})
The res data format that needs to be processed looks something like this :
// when success
{
status: "ok",
statusCode: 200 ,
createtime,
filename,
filepath,
fullpath,
size
}
// when error
{
status: "error",
statusCode,
createtime,
error
}
Typings
some typescript typings github
Contributing
Please submit all issues and pull requests to the Changlon/ins-saver repository!
Tests
Run tests using yarn test
.
Support
If you have any problem or suggestion please open an issue here.