node-bowshock

3.2.0 • Public • Published

Screenshot


GitHub issues Build Status Coverage Status
An npm Package for Node.js based on https://github.com/emirozer/bowshock
bowshock is an all-in-one wrapper for NASA API's. Here is a list of currently supported API's :

Install

npm install node-bowshock

Do I need an API Key ?

Yes No
Earth
Apod
Donki
Rover
NeoWs
EPIC
EVA
EONET
ExoPlanet
Helio
GeneLab
ImgVidLib
Patents
Skymorph
SSC
SSD/CNEOS
Trek WMTS
Techport

Get your NASA API KEY from : https://data.nasa.gov/developer/external/planetary/#apply-for-an-api-key

Setting up the API Key


Set an environment varible NASA_API_KEY which is equal to your key string.
Create a .env file in the root of the project. Logging to console can be enabled or disabled.

.env

NASA_API_KEY=########################
LOGGER=true

All functions return a promise. I might switch to observables

Apod
let bowshock = require("node-bowshock")
//with specific date and tags - For apod all args are optional
bowshock.apod("2017-03-11").then(apod => {
});
Donki
let bowshock = require("node-bowshock");
let object = {
  startDate: "2017-09-10",
  endDate: "2017-10-10"
};
bowshock.donki.CME(object);
bowshock.donki.CMEA(object);
bowshock.donki.FLR(object);
bowshock.donki.GST(object);
bowshock.donki.HSS(object);
bowshock.donki.IPS(object);
bowshock.donki.MPC(object);
bowshock.donki.notifications(object);
bowshock.donki.RBE(object);
bowshock.donki.SEP(object);
bowshock.donki.WSASim(object);
EPIC
let bowshock = require("node-bowshock");
 
bowshock.epic.natural();
bowshock.epic.naturalAll();
bowshock.epic.naturalDate("2018-5-15");
bowshock.epic.naturalAvailable();
bowshock.epic.enhanced();
bowshock.epic.enhancedAll();
bowshock.epic.enhancedDate("2018-5-15");
bowshock.epic.enhancedAvailable();
ExoPlanet
let bowshock = require("node-bowshock");
 
bowshock.exoPlanet.getSingleKOI("K00007.01");
bowshock.exoPlanet.allConfirmedPlanetsAndCols();
bowshock.exoPlanet.confirmedPlanetsInKeplerField();
bowshock.exoPlanet.starsKnownToHostExoPlanets();
bowshock.exoPlanet.confirmedPlanetsThatTransitHostStars();
bowshock.exoPlanet.currentNonConfirmedPlanetCandidates();
bowshock.exoPlanet.k2TargetsFromCapaign9();
bowshock.exoPlanet.confirmedPlanetsInMissionStarList();
bowshock.exoPlanet.allMicrolensingPlanetsWithTimeSeries();
bowshock.exoPlanet.allPlanetaryCandidatesSmallerThan2ReWithEquilibriumTemperaturesBetween180and303K();
GeneLab
let bowshock = require("node-bowshock");
 
bowshock.geneLab.search({ type: "cgene", term: "a" });
Image and Video Library
let bowshock = require("node-bowshock");
 
let obj = {
  q: "space"
  //   center: '',
  //   description: '',
  //   description_508: '',
  //   keywords: 'space',
  //   location: '',
  //   media_type: '',
  //   nasa_id: '',
  //   photographer: '',
  //   secondary_creator: '',
  //   title: '',
  //   year_start: '',
  //   year_end: ''
};
bowshock.nasaImgVideo.search(obj);
 
bowshock.nasaImgVideo.getAsset("Space-to-Ground_171_170407");
bowshock.nasaImgVideo.getMetadata("Space-to-Ground_171_170407");
bowshock.nasaImgVideo.getCaptions("Space-to-Ground_171_170407");
SSC
let bowshock = require("node-bowshock");
 
bowshock.satelliteSituationCenter.getObservatories();
 
bowshock.satelliteSituationCenter.getWADL();
 
bowshock.satelliteSituationCenter.getSpaseObservatories();
 
bowshock.satelliteSituationCenter.getGroundStations();
 
bowshock.satelliteSituationCenter.getLocations();
 
bowshock.satelliteSituationCenter.getGraphs();
bowshock.satelliteSituationCenter.getConjunctions();
Mars Rovers
let bowshock = require("node-bowshock");
 
bowshock.mars.curiosity("2015-06-03");
bowshock.mars.opportunity("2015-06-03");
bowshock.mars.spirit("2015-06-03");
bowshock.mars.manifest("curiosity");
bowshock.mars.insight({perPage: 50});
NeoWs
let bowshock = require("node-bowshock");
 
bowshock.neows.today(true);
 
bowshock.neows.stats();
 
bowshock.neows.feed("2015-06-03");
 
//Lookup a specific Asteroid based on its NASA JPL small body (SPK-ID) ID
bowshock.neows.lookup(3542519);
 
bowshock.neows.browse();
EVA
let bowshock = require("node-bowshock");
 
bowshock.eva();
EONET
let bowshock = require("node-bowshock");
 
bowshock.eonet.events({
  source: "InciWeb, EO",
  status: "open",
  limit: 5,
  days: 20
});
 
bowshock.eonet.categories({
  id: 8,
  source: "InciWeb, EO",
  status: "open",
  limit: 5,
  days: 20
});
 
bowshock.eonet.layers(8);
Asterank
let bowshock = require("node-bowshock");
 
//all args mandatory
bowshock.asterank({
  query: { e: { $lt: 0.1 }, i: { $lt: 4 }, a: { $lt: 1.5 } },
  limit: 10
});
Earth
let bowshock = require("node-bowshock");
 
//imagery endpoint lon & lat mandatory, rest optional
bowshock.earth.imagery({ lon: 100.75, lat: 1.5, date: "2014-02-04" });
 
//assets endpoint lon & lat & begin mandatory, end optional
bowshock.earth.assets({ lon: 100.75, lat: 1.5, begin: "2014-02-01" });
HelioViewer
let bowshock = require("node-bowshock");
 
//args are mandatory
bowshock.helioviewer.getjp2image({ date: "2014-01-01T23:59:59", sourceId: 14 });
 
//args are mandatory
bowshock.helioviewer.getjp2header(7654321);
 
//startTime, endTime and sourceId are required
bowshock.helioviewer.getJPX({
  startTime: "2014-01-01T00:00:00",
  endTime: "2014-01-01T00:45:00",
  sourceId: 14
  //linked: true,
  //cadence: 12
});
 
//startTime, endTime and sourceId are required
bowshock.helioviewer.getJPXClosestToMidPoint({
  startTimes: [1306886400, 1306887000, 1306887600],
  endTimes: [1306886700, 1306887300, 1306887900],
  sourceId: 14
  //linked: true
});
 
//startTime, endTime, layers, events, eventsLabels, and imageScale are required
bowshock.helioviewer.queueMovie({
  startTime: "2010-03-01T12:12:12",
  endTime: "2010-03-04T12:12:12",
  layers: "[3,1,100],[4,1,100]",
  events: "[AR,HMI_HARP;,SPoCA,1],[CH,all,1]",
  eventsLabels: false,
  imageScale: 21.04,
  format: "mp4",
  frameRate: 15,
  maxFrames: 300,
  scale: true,
  scaleType: "earth",
  scaleX: -1000,
  scaleY: -500,
  movieLength: 4.3333,
  watermark: true,
  width: 1920,
  height: 1200,
  x0: 0,
  y0: 0,
  x1: -5000,
  y1: -5000,
  x2: 5000,
  y2: 5000
  //callback: "Wrap the response object in a function call of your choosing."
});
 
bowshock.helioviewer.reQueueMovie("VXvX5");
 
// id and format required
bowshock.helioviewer.getMovieStatus({
  id: "VXvX5",
  format: "mp4",
  verbose: true
  //callback: "callback",
  //token: "4673d6db4e2a3365ab361267f2a9a112"
});
 
// id and format are required - saves movie to root directory
bowshock.helioviewer.downloadMovie({
  id: "VXvX5",
  format: "mp4",
  hq: true
});
 
//id, format, and height are required --opens movie in default web browser
bowshock.helioviewer.playMovie({
  id: "VXvX5",
  format: "mp4",
  height: 820
  //hq: true,
  //width: 846
});
 
//date, imageScale, layers, eventLabels, and height are required
bowshock.helioviewer.takeScreenshot({
  date: "2014-01-01T23:59:59",
  imageScale: 2.4204409,
  layers: "[SDO,AIA,AIA,335,1,100]",
  eventLabels: false,
  height: 1200,
  //events: "[AR,HMI_HARP;SPoCA,1],[CH,all,1]"
  //scale: false,
  //scaleType: "earth",
  //scaleX: -1000,
  //scaleY: -500,
  //width: 1920,
  //x0: 1,
  //y0: 1,
  x1: -5000,
  y1: -5000,
  x2: 5000,
  y2: 5000,
  display: true,
  watermark: false
});
 
bowshock.helioviewer.downloadScreenshot(3240748);
 
//date and sourceId are required
bowshock.helioviewer.getClosestImage({
  date: "2014-01-01T23:59:59",
  sourceId: 14
  //callback: "callback"
});
 
// all args are optional
bowshock.helioviewer.getDataSources({
  verbose: true,
  enable: "[Yohkoh,STEREO_A,STEREO_B]"
  //callback: "callback
});
 
//all args are required
bowshock.helioviewer.getTile({
  id: 36275490,
  x: -1,
  y: -1,
  imageScale: 2.42044088
});
 
bowshock.helioviewer.shortenURL(
  "date%3D2014-02-25T15%3A18%3A07.000Z%26imageScale%3D2.4204409%26centerX%3D-410.06307838566283%26centerY%3D-244.6662219973343%26imageLayers%3D%255BSDO%2CAIA%2CAIA%2C304%2C1%2C100%255D%26eventLayers%3D%26eventLabels%3Dtrue"
);
 
bowshock.helioviewer.getNewsFeed();
 
bowshock.helioviewer.checkYouTubeAuth();
 
bowshock.helioviewer.getYouTubeAuth({
  id: "F3Dh5",
  title: "Test",
  description:
    "This movie was produced by Helioviewer.org. See the original at http://helioviewer.org/?movieId=F3Dh5 or download a high-quality version from http://api.helioviewer.org/v2/downloadMovie/?id=F3Dh5&format=mp4&hq=true",
  tags: "test",
  share: true
});
 
bowshock.helioviewer.uploadMovieToYouTube({
  id: "F3Dh5",
  share: true
});
 
helioviewer.getUserVideos();
Patents
let bowshock = require("node-bowshock");
 
//only query is mandatory, rest is optional
bowshock.patents({ query: "temperature", concept_tags: true, limit: 5 });
Skymorph
let bowshock = require("node-bowshock");
 
// mandatory obj id
bowshock.skymorph.search_target_obj("J99TS7A");
 
//argument is a key that can be found in search_target_obj data
bowshock.skymorph.search_image(
  "|001204124410|51882.530787037|129.062741402712|4.64001695570385|128.337645|4.0726|20.70|-4.28|-11.08|n.a.|n.a.|n.a.|71.9154214757038|547.287989060186|y|"
);
SSD/CNEOS
let bowshock = require("node-bowshock");
 
//all args are optional
bowshock.ssd.cad({
  date_min: "2014-03-11",
  date_max: "2016-03-11"
  //dist_min: 0.05,
  //dist_max: 0.1,
  //h_min: 22,
  //h_max: 17.75,
  //v_inf_min: 5,
  //v_inf_max: 20,
  //v_rel_min: 11.2,
  //v_rel_max: 19,
  //class: "ATE",
  //pha: false,
  //nea: false,
  //comet: false,
  //neo: true,
  //kind: "a",
  //spk: 2000433,
  //des: 433,
  //body: "Earth",
  //sort: "date",
  //limit: 5,
  //fullname: true
});
//all args are optional
bowshock.ssd.fireballs({
  date_min: "2016-12-01",
  date_max: "2017-01-01",
  //energy_min: .3,
  //energy_max: 10,
  //impact_e_min: .08,
  //impact_e_max: 10,
  //vel_min: 18.5,
  //vel_max: 20,
  //alt_min: 1,
  //alt_max: 22,
  //req_loc: false,
  req_alt: false,
  req_vel: false,
  req_vel_comp: false,
  vel_comp: false,
  sort: "date",
  limit: 5
});
 
bowshock.ssd.nhats({
  dv: 12,
  dur: 450,
  stay: 8,
  launch: "2015-2020",
  //h: 16,
  //occ: 3,
  //spk:2000433,
  //des: "141P",
  plot: true
});
 
bowshock.ssd.sentry({
  spk: 2029075
  //des: 29075,
  //h_max: 50,
  //ps_min: 10,
  //ip_min: 1e-3,
  //days: 6,
  //all: false,
  //removed: false
});
Trek WMTS
let bowshock = require("node-bowshock");
 
bowshock.trek.mars("curiosity_ctx_mosaic");
 
bowshock.trek.vesta("global_LAMO");
Techport
let bowshock = require("node-bowshock");
 
bowshock.techport(4795);

Contributors

BTW What is "bowshock"?

Screenshot

Readme

Keywords

Package Sidebar

Install

npm i node-bowshock

Weekly Downloads

113

Version

3.2.0

License

MIT

Unpacked Size

116 kB

Total Files

39

Last publish

Collaborators

  • javajohnhub