![PyPI Now Supports iOS and Android Wheels for Mobile Python Development](https://cdn.sanity.io/images/cgdhsj6q/production/96416c872705517a6a65ad9646ce3e7caef623a0-1024x1024.webp?w=400&fit=max&auto=format)
Security News
PyPI Now Supports iOS and Android Wheels for Mobile Python Development
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
geonames-stream
Advanced tools
$ npm install geonames-stream
Note: you will need node
and npm
installed first.
The easiest way to install node.js
is with nave.sh by executing [sudo] ./nave.sh usemain stable
You can extract the geonames on-the-fly while you're still downloading the file:
var geonames = require('geonames-stream'),
request = require('request');
request.get( 'http://download.geonames.org/export/dump/NZ.zip' )
.pipe( geonames.pipeline )
.pipe( geonames.stringify )
.pipe( process.stdout );
Or you can go old-school and work with files on disk:
var geonames = require('geonames-stream'),
fs = require('fs');
// wget http://download.geonames.org/export/dump/NZ.zip
fs.createReadStream( 'NZ.zip' )
.pipe( geonames.pipeline )
.pipe( geonames.stringify )
.pipe( process.stdout );
The easiest way to get started writing your own pipes is to use through2
; just make sure you call next()
.
var geonames = require('geonames-stream'),
request = require('request'),
through = require('through2');
request.get( 'http://download.geonames.org/export/dump/NZ.zip' )
.pipe( geonames.pipeline )
.pipe( through.obj( function( data, enc, next ){
console.log( data._id, data.name, data.population );
next();
}));
2189529 Invercargill 47287
2189530 Invercargill 0
2189531 Inveagh Bay 0
2189532 Inumia Stream 0
The streams output objects which look like this:
{
"_id": "2179348",
"name": "Whananaki",
"asciiname": "Whananaki",
"alternatenames": [],
"latitude": "-35.5",
"longitude": "174.45",
"feature_class": "P",
"feature_code": "PPL",
"country_code": "NZ",
"cc2": "",
"admin1_code": "F6",
"admin2_code": "002",
"admin3_code": "",
"admin4_code": "",
"population": "0",
"elevation": "",
"dem": "59",
"timezone": "Pacific/Auckland",
"modification_date": "2011-08-01"
}
The module comes with a prebuild processing pipeline to make life easier:
var pipeline = bun([ unzip(), split(), parser(), modifiers() ]);
If you need more control, you can re-wire things as you wish; say.. maybe you didn't want the unzip step?
var geonames = require('geonames-stream'),
request = require('request'),
split = require('split');
request.get( 'http://example.com/example.tsv' )
// .pipe( geonames.unzip() ) I don't want the unzip step
.pipe( split() )
.pipe( geonames.parser() )
.pipe( geonames.modifiers() )
.pipe( geonames.stringify )
.pipe( process.stdout );
The geonames-stream
npm module can be found here:
https://npmjs.org/package/geonames-stream
Please fork and pull request against upstream master on a feature branch.
Pretty please; provide unit tests and script fixtures in the test
directory.
$ npm test
Travis tests every release against Node.js versions 4
and 6
.
FAQs
Streaming geonames parser
The npm package geonames-stream receives a total of 44 weekly downloads. As such, geonames-stream popularity was classified as not popular.
We found that geonames-stream demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.