├── .npmignore ├── screenshot.jpg ├── .gitignore ├── .github ├── workflows │ └── tests.yml └── dependabot.yml ├── test.js ├── LICENSE.md ├── example.js ├── docs └── layout.html ├── index.js ├── package.json ├── cli.js ├── CONTRIBUTING.md ├── CHANGELOG.md └── README.md /.npmignore: -------------------------------------------------------------------------------- 1 | screenshot.jpg 2 | example.js 3 | docs 4 | -------------------------------------------------------------------------------- /screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ungoldman/himawari-bg/HEAD/screenshot.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | logs 2 | *.log 3 | .DS_Store 4 | node_modules 5 | site 6 | package-lock.json 7 | -------------------------------------------------------------------------------- /.github/workflows/tests.yml: -------------------------------------------------------------------------------- 1 | name: tests 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: 7 | - main 8 | 9 | jobs: 10 | test: 11 | runs-on: macos-latest 12 | steps: 13 | - uses: actions/checkout@v4 14 | - name: Use Node.js (Latest LTS) 15 | uses: actions/setup-node@v4 16 | with: 17 | node-version: lts/* 18 | - run: brew install imagemagick graphicsmagick 19 | - run: npm i 20 | - run: npm test 21 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # Basic dependabot.yml file with 2 | # minimum configuration for two package managers 3 | 4 | version: 2 5 | updates: 6 | # Enable version updates for npm 7 | - package-ecosystem: "npm" 8 | # Look for `package.json` and `lock` files in the `root` directory 9 | directory: "/" 10 | # Check the npm registry for updates every day (weekdays) 11 | schedule: 12 | interval: "daily" 13 | # Enable updates to github actions 14 | - package-ecosystem: "github-actions" 15 | directory: "/" 16 | schedule: 17 | interval: "daily" 18 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const path = require('path') 3 | const test = require('tape') 4 | const bg = require('./') 5 | const wallpaper = require('wallpaper') 6 | 7 | let originalImagePath 8 | 9 | test('main', async t => { 10 | originalImagePath = await wallpaper.get() 11 | 12 | await bg({ outfile: './test.jpg' }) 13 | 14 | await sleep(250) // let system catch up 15 | const newPape = await wallpaper.get() 16 | const testJpg = path.resolve('./test.jpg') 17 | t.equal(newPape, testJpg) 18 | }) 19 | 20 | test.onFinish(async () => { 21 | await sleep(250) 22 | await wallpaper.set(originalImagePath) 23 | fs.unlinkSync('./test.jpg') 24 | }) 25 | 26 | // shh 27 | function sleep (ms) { 28 | return new Promise(resolve => setTimeout(resolve, ms)) 29 | } 30 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # [ISC License](https://spdx.org/licenses/ISC) 2 | 3 | Copyright (c) 2016, Nate Goldman 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 8 | -------------------------------------------------------------------------------- /example.js: -------------------------------------------------------------------------------- 1 | const bg = require('./') 2 | 3 | bg({ 4 | /** 5 | * The location to save the resulting image. 6 | * Default: `~/Pictures/himawari-images/${Date.now()}.jpg` 7 | * @type {String} 8 | */ 9 | outfile: './example.jpg', 10 | 11 | /** 12 | * The time of the picture desired. If you want to get the latest image, use 'latest'. 13 | * Default: 'latest' 14 | * @type {String|Date} 15 | */ 16 | date: new Date(2016, 1, 1), // Or new Date() or a date string 17 | 18 | /** 19 | * The zoom level of the image. Can be 1-5 (default: 2) 20 | * Each zoom level requires more images to be downloaded and therefore stitched 21 | * together. Higher zoom yields a higher resolution image. 22 | * Default: 2 23 | * @type {Number} 24 | */ 25 | zoom: 1, 26 | 27 | /** 28 | * If set to true, an image on the infrared light spectrum will be generated 29 | * Default: false 30 | * @type {Boolean} 31 | */ 32 | infrared: true 33 | }) 34 | -------------------------------------------------------------------------------- /docs/layout.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | module-init 7 | 8 | 9 | 10 | 24 | 25 | 26 | 36 |
37 | 38 | 39 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const himawari = require('@ungoldman/himawari') 2 | const path = require('path') 3 | const wallpaper = require('wallpaper') 4 | const { mkdirp } = require('mkdirp') 5 | const ProgressBar = require('progress') 6 | const untildify = require('untildify') 7 | let bar = null 8 | 9 | async function himawariBG (opts) { 10 | opts = opts || {} 11 | const outfile = untildify(opts.outfile || `~/Pictures/himawari-images/${Date.now()}.jpg`) 12 | 13 | // create outfile directory just in case 14 | mkdirp.sync(path.dirname(outfile)) 15 | 16 | return new Promise((resolve, reject) => { 17 | himawari({ 18 | zoom: opts.zoom || 2, 19 | outfile, 20 | date: opts.date || 'latest', 21 | infrared: opts.infrared || false, 22 | parallel: opts.parallel | true, 23 | chunk: function (info) { 24 | bar = bar || createProgressBar(info.total) 25 | bar.tick() 26 | }, 27 | error: function (err) { 28 | console.log(err) 29 | reject(err) 30 | }, 31 | success: async function () { 32 | await sleep(250) // add delay to avoid flash of system bg 33 | wallpaper.set(outfile, { screen: opts.screen || 'main', scale: opts.scale || 'fit' }) 34 | console.log('Complete!') 35 | resolve() 36 | } 37 | }) 38 | }) 39 | } 40 | 41 | function createProgressBar (total) { 42 | return new ProgressBar('Downloading satellite images [:bar] :percent :etas', { 43 | complete: '=', 44 | incomplete: ' ', 45 | width: 20, 46 | total 47 | }) 48 | } 49 | 50 | // shh 51 | function sleep (ms) { 52 | return new Promise(resolve => setTimeout(resolve, ms)) 53 | } 54 | 55 | module.exports = himawariBG 56 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "himawari-bg", 3 | "description": "Set the latest image from Himawari 8 as your desktop background.", 4 | "version": "2.0.2", 5 | "author": "Nate Goldman ", 6 | "bin": { 7 | "himawari-bg": "./cli.js" 8 | }, 9 | "bugs": { 10 | "url": "https://github.com/ungoldman/himawari-bg/issues" 11 | }, 12 | "dependencies": { 13 | "@ungoldman/himawari": "^2.0.0", 14 | "cliclopts": "^1.1.1", 15 | "minimist": "^1.2.0", 16 | "mkdirp": "^3.0.0", 17 | "progress": "^2.0.3", 18 | "untildify": "^4.0.0", 19 | "wallpaper": "^5.0.1" 20 | }, 21 | "devDependencies": { 22 | "gh-pages": "^6.0.0", 23 | "npm-run-all": "^4.1.5", 24 | "serve": "^14.1.2", 25 | "sitedown": "^5.1.3", 26 | "snazzy": "^9.0.0", 27 | "standard": "^17.0.0", 28 | "tap-arc": "^1.0.1", 29 | "tape": "^5.5.3" 30 | }, 31 | "engines": { 32 | "node": ">=12" 33 | }, 34 | "homepage": "https://github.com/ungoldman/himawari-bg", 35 | "keywords": [ 36 | "background", 37 | "desktop", 38 | "earth", 39 | "himawari", 40 | "himawari-8", 41 | "satellite", 42 | "wallpaper" 43 | ], 44 | "license": "ISC", 45 | "main": "index.js", 46 | "repository": { 47 | "type": "git", 48 | "url": "https://github.com/ungoldman/himawari-bg.git" 49 | }, 50 | "scripts": { 51 | "gh-pages": "npm run site && gh-pages -d site", 52 | "pretest": "standard | snazzy", 53 | "release": "git fetch --all --prune && git push && git push --tags && npx gh-release && npm publish", 54 | "serve:site": "serve site", 55 | "serve:watch": "npm run site:html -- -w", 56 | "site": "run-s site:*", 57 | "site:clean": "rm -rf site", 58 | "site:html": "sitedown -b site -l docs/layout.html", 59 | "site:img": "cp screenshot.jpg site/", 60 | "start": "npm-run-all site --parallel serve:*", 61 | "test": "tape test.js | tap-arc" 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const bg = require('./') 4 | const cliclopts = require('cliclopts') 5 | const minimist = require('minimist') 6 | const pkg = require('./package.json') 7 | 8 | const allowedOptions = [ 9 | { 10 | name: 'outfile', 11 | abbr: 'o', 12 | help: 'Location to save image. (default: ~/Pictures/himawari-images/$TIMESTAMP.jpg)' 13 | }, 14 | { 15 | name: 'zoom', 16 | abbr: 'z', 17 | help: 'The zoom level of the image. Can be 1-5.', 18 | default: 2 19 | }, 20 | { 21 | name: 'date', 22 | abbr: 'd', 23 | help: 'Time of the picture desired. Can also be "latest".', 24 | default: 'latest' 25 | }, 26 | { 27 | name: 'infrared', 28 | abbr: 'i', 29 | help: 'Capture picture on the infrared spectrum.', 30 | boolean: true, 31 | default: false 32 | }, 33 | { 34 | name: 'parallel', 35 | abbr: 'p', 36 | help: 'Parallelize downloads for increased speeds (can be CPU intensive).', 37 | boolean: true, 38 | default: true 39 | }, 40 | { 41 | name: 'screen', 42 | abbr: 's', 43 | help: 'Screen to set the wallpaper on (macOS only). Options: "all", "main", screen index.', 44 | default: 'main' 45 | }, 46 | { 47 | name: 'scale', 48 | help: 'Scaling method (macOS only). Options: "auto", "fill", "fit", "stretch", "center".', 49 | default: 'fit' 50 | }, 51 | { 52 | name: 'version', 53 | abbr: 'v', 54 | help: 'Show version information.', 55 | boolean: true 56 | }, 57 | { 58 | name: 'help', 59 | abbr: 'h', 60 | help: 'Show help.', 61 | boolean: true 62 | } 63 | ] 64 | 65 | const opts = cliclopts(allowedOptions) 66 | const argv = minimist(process.argv.slice(2), opts.options()) 67 | 68 | if (argv.version) { 69 | console.log(pkg.version) 70 | process.exit() 71 | } 72 | 73 | if (argv.help) { 74 | console.log() 75 | console.log('Usage: himawari-bg [options]') 76 | console.log() 77 | opts.print() 78 | console.log() 79 | console.log('report an issue: ' + pkg.bugs.url) 80 | console.log() 81 | console.log('himawari-bg@%s %s', pkg.version, __dirname) 82 | process.exit() 83 | } 84 | 85 | bg(argv) 86 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guidelines 2 | 3 | Contributions welcome! 4 | 5 | **Before spending lots of time on something, ask for feedback on your idea first!** 6 | 7 | Please search issues and pull requests before adding something new to avoid duplicating efforts and conversations. 8 | 9 | In addition to improving the project by refactoring code and implementing relevant features, this project welcomes the following types of contributions: 10 | 11 | - **Ideas**: participate in an issue thread or start your own to have your voice heard. 12 | - **Writing**: contribute your expertise in an area by helping expand the included content. 13 | - **Copy editing**: fix typos, clarify language, and generally improve the quality of the content. 14 | - **Formatting**: help keep content easy to read with consistent formatting. 15 | 16 | ## Testing 17 | 18 | Tests are run with `npm test`. Unless you're creating a failing test to increase test coverage or show a problem, please make sure all tests are passing before submitting a pull request. 19 | 20 | ## Code Style 21 | 22 | [![standard][standard-image]][standard-url] 23 | 24 | This repository uses [`standard`][standard-url] to maintain code style and consistency, and to avoid style arguments. `npm test` runs `standard` so you don't have to! 25 | 26 | [standard-image]: https://cdn.rawgit.com/feross/standard/master/badge.svg 27 | [standard-url]: https://github.com/feross/standard 28 | 29 | --- 30 | 31 | # Collaborating Guidelines 32 | 33 | **This is an OPEN Open Source Project.** 34 | 35 | ## What? 36 | 37 | Individuals making significant and valuable contributions are given commit access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project. 38 | 39 | ## Rules 40 | 41 | There are a few basic ground rules for collaborators: 42 | 43 | 1. **No `--force` pushes** or modifying the Git history in any way. 44 | 1. **Non-master branches** ought to be used for ongoing work. 45 | 1. **External API changes and significant modifications** ought to be subject to an **internal pull request** to solicit feedback from other collaborators. 46 | 1. Internal pull requests to solicit feedback are *encouraged* for any other non-trivial contribution but left to the discretion of the contributor. 47 | 1. Contributors should attempt to adhere to the prevailing code style. 48 | 49 | ## Releases 50 | 51 | Declaring formal releases remains the prerogative of the project maintainer. 52 | 53 | ## Changes to this arrangement 54 | 55 | This is an experiment and feedback is welcome! This document may also be subject to pull requests or changes by collaborators where you believe you have something valuable to add or change. 56 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # himawari-bg change log 2 | - All notable changes to this project will be documented in this file. 3 | - The format is based on [Keep a Changelog](https://keepachangelog.com). 4 | - This project adheres to [Semantic Versioning](https://semver.org). 5 | 6 | ## [2.0.2](https://github.com/ungoldman/himawari-bg/releases/tag/v2.0.2) - 2023-01-20 7 | [view diff](https://github.com/ungoldman/himawari-bg/compare/v2.0.1...v2.0.2) 8 | 9 | Maintenance update. Updates usage of mkdirp dependency (upstream breaking change). 10 | 11 | ### Misc 12 | - deps: mkdirp@^2.1.3 13 | 14 | ## [2.0.1](https://github.com/ungoldman/himawari-bg/releases/tag/v2.0.1) - 2023-01-20 15 | [view diff](https://github.com/ungoldman/himawari-bg/compare/v2.0.0...v2.0.1) 16 | 17 | Maintenance update. Replaces `@ungoldman/serve` (unmaintained) with latest `serve`. 18 | 19 | ### Misc 20 | - deps(dev): @ungoldman/serve -> serve@^14.1.2 (security update) 21 | - deps(dev): sitedown@^5.1.3 22 | - deps(dev): gh-pages@^4.0.0 23 | - misc doc & site updates 24 | 25 | ## [2.0.0](https://github.com/ungoldman/himawari-bg/releases/tag/v2.0.0) - 2022-04-18 26 | 27 | [view diff](https://github.com/ungoldman/himawari-bg/compare/v1.0.2...v2.0.0) 28 | 29 | ### Breaking 30 | - breaking: convert to async function (#15) 31 | - breaking: pkg(engines): set min node to 12 32 | 33 | ### Features 34 | - feat: add screen & scale options 35 | 36 | ### Misc 37 | - deps: progress@2 38 | - deps: mkdirp@1 39 | - deps: untildify@4 40 | - ci: add actual test, use gh actions 41 | 42 | ## [1.0.2](https://github.com/ungoldman/himawari-bg/releases/tag/v1.0.2) - 2022-04-14 43 | 44 | [view diff](https://github.com/ungoldman/himawari-bg/compare/v1.0.1...v1.0.2) 45 | 46 | ### Fixes 47 | - fix: switch to @ungoldman/himawari to fix breaking underlying bug 48 | 49 | The source for the image tiles, Japan's NICT (National Institute of Information 50 | and Communications Technology), switched to HTTPS only. The library that fetches 51 | those tiles, [himawari.js](https://github.com/jakiestfu/himawari.js/) hasn't been updated in 6 years. In an effort to get my old himawari 52 | projects working again, I forked himawari.js, fixed it, and republished it as 53 | @ungoldman/himawari. 54 | 55 | This program should now work again! Apologies to anyone who has been 56 | unsuccessfully trying to update their wallpaper for the last 2 or 3 years. 57 | 58 | ## [1.0.1](https://github.com/ungoldman/himawari-bg/releases/tag/v1.0.1) - 2016-10-03 59 | 60 | [view diff](https://github.com/ungoldman/himawari-bg/compare/v1.0.0...v1.0.1) 61 | 62 | ### Fixes 63 | - bugfix: allow omitting options object ([#10](https://github.com/ungoldman/himawari-bg/issues/10)) 64 | 65 | ## [1.0.0](https://github.com/ungoldman/himawari-bg/releases/tag/v1.0.0) - 2016-09-17 66 | 67 | [view diff](https://github.com/ungoldman/himawari-bg/compare/v1.0.0-beta...v1.0.0) 68 | 69 | - lint: bump standard to latest version (^8), use snazzy 70 | - site: add scripts for generating a gh-pages site 71 | - ci: target node 6 only 72 | 73 | ## 1.0.0-beta 74 | * parallelize downloads by default 75 | * add version option 76 | * add resources, contributing sections to readme 77 | * expand contributing guidelines 78 | 79 | ## 1.0.0-alpha.3 80 | * use himawari@^1.2.3 (ETIMEDOUT bug fix for [#5](https://github.com/ungoldman/himawari-bg/issues/5)) 81 | * improve docs, add links 82 | * add example script 83 | 84 | ## 1.0.0-alpha.2 85 | * improve documentation based on feedback 86 | 87 | ## 1.0.0-alpha.1 88 | * add warning about magick 89 | * add install instructions for imagemagick, graphicsmagick 90 | * improve docs 91 | 92 | ## 1.0.0-alpha 93 | * alpha release 94 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # himawari-bg 2 | 3 | Set the latest image from Himawari 8 as your desktop background. 4 | 5 | [![npm][npm-image]][npm-url] 6 | [![build][build-image]][build-url] 7 | [![downloads][downloads-image]][npm-url] 8 | 9 | [npm-image]: https://img.shields.io/npm/v/himawari-bg.svg 10 | [npm-url]: https://www.npmjs.com/package/himawari-bg 11 | [build-image]: https://github.com/ungoldman/himawari-bg/actions/workflows/tests.yml/badge.svg 12 | [build-url]: https://github.com/ungoldman/himawari-bg/actions/workflows/tests.yml 13 | [downloads-image]: https://img.shields.io/npm/dm/himawari-bg.svg 14 | 15 | ## About 16 | 17 | **[Himawari 8](http://himawari8.nict.go.jp/)** is a [geostationary](https://en.wikipedia.org/wiki/Geostationary_orbit) weather satellite deployed by the [Japan Meteorological Agency](http://www.jma.go.jp/jma/indexe.html). It takes photographs of Earth every 10 minutes. 18 | 19 | **himawari-bg** is a command line program that lets you set the latest image from the Himawari 8 geostationary satellite as your desktop background. 20 | 21 | ![](screenshot.jpg) 22 | 23 | ## Install 24 | 25 | Warning: requires :zap: **magick** :zap: 26 | 27 | * [imagemagick](http://www.imagemagick.org/script/index.php) 28 | * [graphicsmagick](http://www.graphicsmagick.org) 29 | * [node.js](https://nodejs.org/en/download/) 30 | 31 | If you have [homebrew](http://brew.sh/) installed, you can use that to quickly install `imagemagick` and `graphicsmagick`. 32 | 33 | ``` 34 | brew install imagemagick 35 | brew install graphicsmagick 36 | ``` 37 | 38 | Once you have magick on your side, you can run himawari-bg anytime: 39 | 40 | ``` 41 | npx himawari-bg 42 | ``` 43 | 44 | ## Usage 45 | 46 | ### Command Line 47 | 48 | You can run `himawari-bg` on the command line with `npx` or via global install (`npm i -g himawari-bg`). 49 | 50 | If you run `himawari-bg` with no arguments, it will download the latest image from Himawari-8 and set it as your desktop background. 51 | 52 | :point_right: You have to set the background color of your desktop to black manually if you want it to look as cool as possible. 53 | 54 | There are some options available if you'd like to go further: 55 | 56 | ``` 57 | Usage: himawari-bg [options] 58 | 59 | --outfile, -o Location to save image. (default: ~/Pictures/himawari-images/$TIMESTAMP.jpg) 60 | --zoom, -z The zoom level of the image. Can be 1-5. (default: 2) 61 | --date, -d Time of the picture desired. Can also be "latest". (default: "latest") 62 | --infrared, -i Capture picture on the infrared spectrum. (default: false) 63 | --parallel, -p Parallelize downloads for increased speeds (can be CPU intensive). (default: true) 64 | --screen, -s Screen to set the wallpaper on (macOS only). Options: "all", "main", screen index. (default: "main") 65 | --scale Scaling method (macOS only). Options: "auto", "fill", "fit", "stretch", "center". (default: "fit") 66 | --version, -v Show version information. 67 | --help, -h Show help. 68 | ``` 69 | 70 | ### Node.js 71 | 72 | `himawari-bg` can also be used programmatically as a node module: 73 | 74 | ``` 75 | npm install himawari-bg 76 | ``` 77 | 78 | Here is an example of how it works in node: 79 | 80 | ```js 81 | const himawariBG = require('himawari-bg') 82 | 83 | himawariBG({ 84 | /** 85 | * The location to save the resulting image. 86 | * Default: `~/Pictures/himawari-images/${Date.now()}.jpg` 87 | * @type {String} 88 | */ 89 | outfile: '/path/to/output/earth.jpg', 90 | 91 | /** 92 | * The time of the picture desired. If you want to get the latest image, use 'latest'. 93 | * Default: 'latest' 94 | * @type {String|Date} 95 | */ 96 | date: 'latest', // Or new Date() or a date string 97 | 98 | /** 99 | * The zoom level of the image. Can be 1-5 (default: 2) 100 | * Each zoom level requires more images to be downloaded and therefore stitched 101 | * together. Higher zoom yields a higher resolution image. 102 | * Default: 2 103 | * @type {Number} 104 | */ 105 | zoom: 2, 106 | 107 | /** 108 | * If set to true, an image on the infrared light spectrum will be generated 109 | * Default: false 110 | * @type {Boolean} 111 | */ 112 | infrared: false, 113 | 114 | /** 115 | * Screen to set the wallpaper on (macOS only) 116 | * Options: 'all', 'main', screen index 117 | * Default: 'main' 118 | * @type {String|Number} 119 | */ 120 | screen: 'main', 121 | 122 | /** 123 | * Scaling method (macOS only) 124 | * Options: 'auto', 'fill', 'fit', 'stretch', 'center' 125 | * Default: 'fit' 126 | * @type {String|Number} 127 | */ 128 | scale: 'fit' 129 | }) 130 | ``` 131 | 132 | All config settings are optional and have default values. 133 | 134 | `himawariBG` returns a promise, so it can be used in an async workflow if needed. 135 | 136 | ```js 137 | const himawariBG = require('himawari-bg') 138 | 139 | async function () { 140 | try { 141 | await himawariBG() 142 | } catch (err) { 143 | console.log(err) 144 | } 145 | } 146 | ``` 147 | 148 | ## Acknowledgements 149 | 150 | Thanks to [celoyd](https://github.com/celoyd) for the inspiring [`glittering.blue`](https://glittering.blue/) and [jakiestfu](https://github.com/jakiestfu) for creating [`himawari.js`](https://github.com/jakiestfu/himawari.js). 151 | 152 | ## Addendum 153 | 154 | It turns out `himawari.js` was inspired by [this gist](https://gist.github.com/MichaelPote/92fa6e65eacf26219022) by [MichaelPote](https://github.com/MichaelPote) which basically does the exact same thing as `himawari-bg` except in a Windows Powershell environment. So I unwittingly made something inspired by something that was inspired by something that does what I did. Internet! `¯\_(ツ)_/¯` 155 | 156 | ## Additional Resources 157 | 158 | Here are some useful links if you're interested in learning more about the Himawari 8 satellite. 159 | 160 | ### Official 161 | 162 | - [Himawari 8 Real-time Web](http://himawari8.nict.go.jp) 163 | - [Himawari Data Guide](http://www.eorc.jaxa.jp/ptree/userguide.html) 164 | - [Himawari 8/9 Standard Data User's Guide](http://www.data.jma.go.jp/mscweb/en/himawari89/space_segment/hsd_sample/HS_D_users_guide_en_v12.pdf) 165 | - [JAXA account registration (for access to more data)](http://www.eorc.jaxa.jp/ptree/registration_top.html) 166 | 167 | ### Related Projects 168 | 169 | - [@ungoldman/himawari](https://github.com/ungoldman/himawari) 170 | - [himawari-urls](https://github.com/ungoldman/himawari-urls) 171 | - [himawari-history](https://github.com/ungoldman/himawari-history) 172 | - [Glittering Blue](http://glittering.blue) 173 | - [celoyd/hi8](https://github.com/celoyd/hi8) 174 | - [Himawari 8 animation tutorial](https://gist.github.com/celoyd/b92d0de6fae1f18791ef) 175 | - [deband python script](https://gist.github.com/celoyd/a4dd9202fe5c7978b114) 176 | - [makeaday bash script](https://gist.github.com/celoyd/c2293929ab3fe97ea597) 177 | - [goes-bg](https://github.com/ungoldman/goes-bg) 178 | 179 | ## History 180 | 181 | Read about updates and changes to this project in the [change log](CHANGELOG.md). 182 | 183 | ## Contributing 184 | 185 | Contributions welcome! Please read the [contributing guidelines](CONTRIBUTING.md) before getting started. 186 | 187 | ## License 188 | 189 | [ISC](LICENSE.md) 190 | --------------------------------------------------------------------------------