ins-saver v0.5.0
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?) ⇒ Promise<data:downloadFileType>
- 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
- InsSaver ⏏
InsSaver ⏏
Kind: Exported class
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
})
saver.analysisPost ⇒ InsSaver
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
}[]
}
saver.analysisIg⇒ InsSaver
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
saver.download(url, filename?) ⇒ Promise<data:downloadFileType>
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.
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago