7 Commits

Author SHA1 Message Date
7b5ad0ffc6 2.1.1 2018-11-06 16:11:28 -07:00
c5e8b7f178 fix: saner defaults
3 second fetch timeout and 200km radius
2018-11-06 16:11:12 -07:00
c4870763a9 2.1.0 2018-11-02 16:50:11 -07:00
6591e7eaa8 feat: add raw version of text fields 2018-11-02 16:50:01 -07:00
58d405396e 2.0.1 2018-11-02 16:49:58 -07:00
f7523ae5e2 fix: exit on errors 2018-11-02 16:37:09 -07:00
024a43e20b fix: format undefined fields 2018-11-02 16:37:09 -07:00
6 changed files with 32 additions and 16 deletions

View File

@@ -1,5 +1,15 @@
### Changelog ### Changelog
#### [v2.1.1](https://git.w33ble.com/w33ble/adsb-index/compare/v2.1.0...v2.1.1) (6 November 2018)
- fix: saner defaults [`c5e8b7f`](https://git.w33ble.com/w33ble/adsb-index/commit/c5e8b7f178a8bbc76b72eea08afc4d578baababb)
#### [v2.1.0](https://git.w33ble.com/w33ble/adsb-index/compare/v2.0.1...v2.1.0) (2 November 2018)
- feat: add raw version of text fields [`6591e7e`](https://git.w33ble.com/w33ble/adsb-index/commit/6591e7eaa8c9c317a55632f856310cdd3f783464)
#### [v2.0.1](https://git.w33ble.com/w33ble/adsb-index/compare/v2.0.0...v2.0.1) (2 November 2018)
- fix: format undefined fields [`024a43e`](https://git.w33ble.com/w33ble/adsb-index/commit/024a43e20b7ebcf79ef5625df2021a41fa9b2ce9)
- fix: exit on errors [`f7523ae`](https://git.w33ble.com/w33ble/adsb-index/commit/f7523ae5e20414dfec597050051566adbba9a310)
### [v2.0.0](https://git.w33ble.com/w33ble/adsb-index/compare/v1.0.1...v2.0.0) (2 November 2018) ### [v2.0.0](https://git.w33ble.com/w33ble/adsb-index/compare/v1.0.1...v2.0.0) (2 November 2018)
- feat: add ads-b exchange source [`9f0da54`](https://git.w33ble.com/w33ble/adsb-index/commit/9f0da54ccfc639ec6367ea85ec39bea117fd3108) - feat: add ads-b exchange source [`9f0da54`](https://git.w33ble.com/w33ble/adsb-index/commit/9f0da54ccfc639ec6367ea85ec39bea117fd3108)
- feat: use ads-b exchange data [`89261d0`](https://git.w33ble.com/w33ble/adsb-index/commit/89261d0010315ad248dcfdcf25916d952de648d8) - feat: use ads-b exchange data [`89261d0`](https://git.w33ble.com/w33ble/adsb-index/commit/89261d0010315ad248dcfdcf25916d952de648d8)

View File

@@ -21,7 +21,7 @@ const { index, interval, lat, lon, radius, ...elasticsearch } = getopts(process.
interval: 0, interval: 0,
lat: 33.433638, lat: 33.433638,
lon: -112.008113, lon: -112.008113,
radius: 1000, radius: 200,
}, },
}); });
@@ -42,7 +42,7 @@ async function run() {
// scheduled running // scheduled running
if (interval === 0) return; if (interval === 0) return;
logger.debug(`Starting interval (${interval}s)...`); logger.debug(`Starting interval (${interval}s)...`);
runInterval(fetchAndIndex, interval * 1000); runInterval(() => fetchAndIndex().catch(handleError), interval * 1000);
} }
run().catch(handleError); run().catch(handleError);

View File

@@ -1,6 +1,6 @@
{ {
"name": "adsb-index", "name": "adsb-index",
"version": "2.0.0", "version": "2.1.1",
"private": true, "private": true,
"description": "ADS-B indexing script", "description": "ADS-B indexing script",
"bin": "bin/index.js", "bin": "bin/index.js",

View File

@@ -26,8 +26,8 @@ export async function createIndex(client, index) {
mappings: { mappings: {
[doctype]: { [doctype]: {
properties: { properties: {
operator: { type: 'keyword' }, operator: { type: 'text', fields: { raw: { type: 'keyword' } } },
aircraft: { type: 'text' }, aircraft: { type: 'text', fields: { raw: { type: 'keyword' } } },
aircraft_manufacturer: { type: 'keyword' }, aircraft_manufacturer: { type: 'keyword' },
transponder: { type: 'keyword' }, transponder: { type: 'keyword' },
callsign: { type: 'keyword' }, callsign: { type: 'keyword' },
@@ -45,8 +45,8 @@ export async function createIndex(client, index) {
squawk: { type: 'keyword' }, squawk: { type: 'keyword' },
spi: { type: 'boolean' }, spi: { type: 'boolean' },
position_source: { type: 'keyword' }, position_source: { type: 'keyword' },
from: { type: 'text' }, from: { type: 'text', fields: { raw: { type: 'keyword' } } },
to: { type: 'text' }, to: { type: 'text', fields: { raw: { type: 'keyword' } } },
}, },
}, },
}, },

View File

@@ -1,7 +1,7 @@
import axios from 'axios'; import axios from 'axios';
export default axios.create({ export default axios.create({
timeout: 5000, timeout: 3000,
responseType: 'json', responseType: 'json',
headers: { headers: {
'Content-Type': 'application/json; charset=utf-8', 'Content-Type': 'application/json; charset=utf-8',

View File

@@ -1,5 +1,12 @@
import fetch from './fetch.mjs'; import fetch from './fetch.mjs';
const formatNumber = str => str && Number(`${str}`.replace(/[^0-9.-]/, ''));
const formatString = str => {
if (str == null) return 'N/A';
if (typeof str !== 'string') return str;
return str && str.length && str !== 'undefined' ? str.trim() : 'N/A';
};
export async function getOpenskyData() { export async function getOpenskyData() {
const positionSourceMap = ['ADS-B', 'ASTERIX', 'MLAT']; const positionSourceMap = ['ADS-B', 'ASTERIX', 'MLAT'];
const res = await fetch.get(`https://opensky-network.org/api/states/all`); const res = await fetch.get(`https://opensky-network.org/api/states/all`);
@@ -25,15 +32,14 @@ export async function getOpenskyData() {
export async function getAdbsExchangeData({ lat, lon, radius }) { export async function getAdbsExchangeData({ lat, lon, radius }) {
const positionSourceMap = ['Unknown', 'Mode-S', 'ADS-B', 'ADS-B', 'ADS-B', 'ADS-B']; const positionSourceMap = ['Unknown', 'Mode-S', 'ADS-B', 'ADS-B', 'ADS-B', 'ADS-B'];
const formatNumber = str => str && Number(`${str}`.replace(/[^0-9.-]/, ''));
const res = await fetch.get( const res = await fetch.get(
`http://public-api.adsbexchange.com/VirtualRadar/AircraftList.json?lat=${lat}&lng=${lon}&fDstL=0&fDstU=${radius}` `http://public-api.adsbexchange.com/VirtualRadar/AircraftList.json?lat=${lat}&lng=${lon}&fDstL=0&fDstU=${radius}`
); );
return res.data.acList.map(rec => ({ return res.data.acList.map(rec => ({
transponder: `${rec.Icao}`.toLowerCase(), transponder: formatString(`${rec.Icao}`.toLowerCase()),
callsign: `${rec.Call}`.trim(), callsign: formatString(rec.Call),
origin_country: rec.Cou, origin_country: rec.Cou,
time_position: new Date(rec.PosTime), time_position: new Date(rec.PosTime),
last_contact: new Date(rec.PosTime), last_contact: new Date(rec.PosTime),
@@ -48,10 +54,10 @@ export async function getAdbsExchangeData({ lat, lon, radius }) {
squawk: rec.Sqk, squawk: rec.Sqk,
spi: false, spi: false,
position_source: positionSourceMap[rec.Trt], position_source: positionSourceMap[rec.Trt],
operator: rec.Op, operator: formatString(rec.Op),
aircraft: rec.Mdl, aircraft: formatString(rec.Mdl),
aircraft_manufacturer: rec.Man, aircraft_manufacturer: formatString(rec.Man),
from: rec.From, from: formatString(rec.From),
to: rec.To, to: formatString(rec.To),
})); }));
} }