Skip to content

Commit ded540b

Browse files
committed
Initial work on #1
1 parent d4c66b5 commit ded540b

File tree

5 files changed

+1674
-0
lines changed

5 files changed

+1674
-0
lines changed

Diff for: .gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,4 @@ typings/
5757
# dotenv environment variables file
5858
.env
5959

60+
dl/

Diff for: index.js

+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
const request = require('request');
2+
const fs = require('fs');
3+
const async = require('async');
4+
5+
require('dotenv').config()
6+
const env = process.env;
7+
8+
function downloadImage(address) {
9+
var r = request(address);
10+
11+
r.on('response', function (res) {
12+
var filepath = './dl/' + res.headers.date + '.' + res.headers['content-type'].split('/')[1];
13+
console.log(filepath);
14+
res.pipe(fs.createWriteStream(filepath));
15+
});
16+
}
17+
18+
function getAllImages(filename) {
19+
request(`${env.BASE_URL}/command.cgi?op=100&DIR=/DCIM/${filename}`, function (error, response, body) {
20+
if (error) {
21+
return console.log('error:', error); // Print the error if one occurred
22+
}
23+
24+
var lines = body.split('\r\n')
25+
var q = async.queue(function (task, done) {
26+
downloadImage(task.url);
27+
});
28+
for (var i = 0, len = lines.length; i < len; i++) {
29+
var line = lines[i];
30+
31+
if (line !== 'WLANSD_FILELIST') {
32+
33+
var splitLine = line.split(',');
34+
var directory = splitLine[0];
35+
var filename = splitLine[1];
36+
37+
if (filename) {
38+
console.log(`\nStarting download on ${directory}/${filename}`);
39+
var fullPath = `${env.BASE_URL}${directory}/${filename}`;
40+
console.log(fullPath);
41+
q.push({
42+
url: fullPath
43+
}, function (err) {
44+
if (err) {
45+
console.log(`ERROR: ${err}`);
46+
}
47+
console.log(`Finished downloading ${fullPath}\n`);
48+
});
49+
}
50+
}
51+
52+
}
53+
})
54+
}
55+
56+
57+
request(`${env.BASE_URL}/command.cgi?op=100&DIR=/DCIM`, function (error, response, body) {
58+
if (error) {
59+
return console.log('error:', error); // Print the error if one occurred
60+
}
61+
62+
var lines = body.split('\r\n')
63+
64+
for (var i = 0, len = lines.length; i < len; i++) {
65+
var line = lines[i].trim();
66+
if (line !== 'WLANSD_FILELIST') {
67+
68+
var splitLine = line.split(',');
69+
var directory = splitLine[0];
70+
var filename = splitLine[1];
71+
var size = splitLine[2];
72+
var attribute = splitLine[3];
73+
var date = splitLine[4];
74+
var time = splitLine[5];
75+
76+
if (attribute === '16' && filename !== 'EOSMISC') {
77+
console.log(`Folder ${filename}`);
78+
getAllImages(filename);
79+
}
80+
}
81+
}
82+
});

Diff for: interval.sh

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
trap "break;exit" SIGHUP SIGINT SIGTERM
2+
sleep 1s
3+
while /bin/true; do
4+
node index.js
5+
sleep 15s
6+
done
7+

Diff for: package.json

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"name": "flashair-transfer",
3+
"version": "1.0.0",
4+
"main": "index.js",
5+
"repository": "[email protected]:PrailNet/FlashAir-Transfer.git",
6+
"author": "Noah Prail <[email protected]>",
7+
"license": "MIT",
8+
"private": true,
9+
"dependencies": {
10+
"async": "^2.5.0",
11+
"dotenv": "^4.0.0",
12+
"request": "^2.83.0"
13+
},
14+
"scripts": {
15+
"start": "node index.js",
16+
"dev": "nodemon index.js"
17+
},
18+
"devDependencies": {
19+
"nodemon": "^1.12.1"
20+
}
21+
}

0 commit comments

Comments
 (0)