mirror of
https://github.com/Slava-Shchipunov/awg-openwrt.git
synced 2026-03-14 01:13:09 +00:00
feat: add openWRT data fetch
This commit is contained in:
84
index.js
Normal file
84
index.js
Normal file
@@ -0,0 +1,84 @@
|
||||
const axios = require('axios');
|
||||
const cheerio = require('cheerio');
|
||||
const fs = require('fs');
|
||||
|
||||
const version = process.argv[2]; // Получение версии OpenWRT из аргумента командной строки
|
||||
const url = `https://downloads.openwrt.org/releases/${version}/targets/`;
|
||||
|
||||
async function fetchHTML(url) {
|
||||
try {
|
||||
const { data } = await axios.get(url);
|
||||
return cheerio.load(data);
|
||||
} catch (error) {
|
||||
console.error(`Error fetching HTML for ${url}: ${error}`);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async function getTargets() {
|
||||
const $ = await fetchHTML(url);
|
||||
const targets = [];
|
||||
$('table tr td.n a').each((index, element) => {
|
||||
const name = $(element).attr('href');
|
||||
if (name && name.endsWith('/')) {
|
||||
targets.push(name.slice(0, -1));
|
||||
}
|
||||
});
|
||||
return targets;
|
||||
}
|
||||
|
||||
async function getSubtargets(target) {
|
||||
const $ = await fetchHTML(`${url}${target}/`);
|
||||
const subtargets = [];
|
||||
$('table tr td.n a').each((index, element) => {
|
||||
const name = $(element).attr('href');
|
||||
if (name && name.endsWith('/')) {
|
||||
subtargets.push(name.slice(0, -1));
|
||||
}
|
||||
});
|
||||
return subtargets;
|
||||
}
|
||||
|
||||
async function getDetails(target, subtarget) {
|
||||
const packagesUrl = `${url}${target}/${subtarget}/packages/`;
|
||||
const $ = await fetchHTML(packagesUrl);
|
||||
let vermagic = '';
|
||||
let pkgarch = '';
|
||||
|
||||
$('a').each((index, element) => {
|
||||
const name = $(element).attr('href');
|
||||
if (name && name.startsWith('kernel_')) {
|
||||
const vermagicMatch = name.match(/kernel_5\.\d+\.\d+-\d+-([a-f0-9]+)_([a-zA-Z0-9_-]+)\.ipk$/);
|
||||
if (vermagicMatch) {
|
||||
vermagic = vermagicMatch[1];
|
||||
pkgarch = vermagicMatch[2];
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return { vermagic, pkgarch };
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const targets = await getTargets();
|
||||
const results = [];
|
||||
|
||||
for (const target of targets) {
|
||||
const subtargets = await getSubtargets(target);
|
||||
for (const subtarget of subtargets) {
|
||||
const { vermagic, pkgarch } = await getDetails(target, subtarget);
|
||||
results.push({
|
||||
tag: version,
|
||||
target,
|
||||
subtarget,
|
||||
vermagic,
|
||||
pkgarch,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
fs.writeFileSync('results.json', JSON.stringify(results, null, 2), 'utf-8');
|
||||
console.log('Results written to results.json');
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
Reference in New Issue
Block a user