-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsession.js
More file actions
45 lines (38 loc) · 1.17 KB
/
Copy pathsession.js
File metadata and controls
45 lines (38 loc) · 1.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import "dotenv/config";
import { IgApiClient } from "instagram-private-api";
import { writeFile, readFileSync, existsSync } from "fs";
async function saveData(data) {
const path = process.env.IG_MUTE_ACCOUNT_PATH;
// Save User account object to file
await writeFile(path, JSON.stringify(data), (err) => {
if (err) throw err;
});
}
function dataExists() {
return existsSync(process.env.IG_MUTE_ACCOUNT_PATH);
}
function loadData() {
let rawdata = readFileSync(process.env.IG_MUTE_ACCOUNT_PATH, "utf-8");
let account = JSON.parse(rawdata);
return account;
}
const createSession = async () => {
const ig = new IgApiClient();
ig.state.generateDevice(process.env.IG_USERNAME);
ig.state.proxyUrl = process.env.IG_PROXY;
ig.request.end$.subscribe(async () => {
const serialized = await ig.state.serialize();
delete serialized.constants;
await saveData(serialized);
});
if (dataExists()) {
const loadedData = loadData();
await ig.state.deserialize(loadedData);
} else {
console.log("SOMETHING IS WRONG");
return;
await ig.account.login(process.env.IG_USERNAME, process.env.IG_PASSWORD);
}
return ig;
};
export default createSession;