|
@@ -1,45 +1,64 @@
|
|
|
'use strict'
|
|
|
|
|
|
-const fs = require('fs')
|
|
|
-const path = require('path')
|
|
|
+var fs = require('fs')
|
|
|
+var path = require('path')
|
|
|
|
|
|
-const division = require('./data/division.json')
|
|
|
-const street = require('./data/street.json')
|
|
|
+var spider = require('./spider')
|
|
|
|
|
|
/**
|
|
|
- * 获取省份数据
|
|
|
+ * 输出 JSON 数据
|
|
|
* @Author https://github.com/modood
|
|
|
- * @DateTime 2016-10-08 15:50
|
|
|
- */
|
|
|
-function getProvinces () {
|
|
|
- return division.filter(a => a[4] === '000000').map(a => { return { code: a[0], name: a[1] } })
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 获取城市数据
|
|
|
- * @Author https://github.com/modood
|
|
|
- * @DateTime 2016-10-08 17:58
|
|
|
- */
|
|
|
-function getCities () {
|
|
|
- return division.filter(a => a[2]).map(a => { return { code: a[0], name: a[2], parent_code: a[4] } })
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 获取区县数据
|
|
|
- * @Author https://github.com/modood
|
|
|
- * @DateTime 2016-10-08 18:10
|
|
|
+ * @DateTime 2016-10-08 17:16
|
|
|
*/
|
|
|
-function getAreas () {
|
|
|
- return division.filter(a => a[3]).map(a => { return { code: a[0], name: a[3], parent_code: a[4] } })
|
|
|
+module.exports = {
|
|
|
+ outputJSON: outputJSON,
|
|
|
+ provinces: require(path.resolve(__dirname, 'dist/provinces.json')),
|
|
|
+ cities: require(path.resolve(__dirname, 'dist/cities.json')),
|
|
|
+ areas: require(path.resolve(__dirname, 'dist/areas.json')),
|
|
|
+ streets: require(path.resolve(__dirname, 'dist/streets.json')),
|
|
|
+ address2: require(path.resolve(__dirname, 'dist/address2.json')),
|
|
|
+ address3: require(path.resolve(__dirname, 'dist/address3.json')),
|
|
|
+ address4: require(path.resolve(__dirname, 'dist/address4.json'))
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取乡镇(街道)数据
|
|
|
- * @Author https://github.com/modood
|
|
|
- * @DateTime 2016-10-09 15:08
|
|
|
+ * 输出 JSON 数据到 dist 目录下
|
|
|
+ * @author modood <https://github.com/modood>
|
|
|
+ * @datetime 2016-12-19 16:45
|
|
|
*/
|
|
|
-function getStreets () {
|
|
|
- return street.map(a => { return { code: a[0], name: a[1], pinyin: a[3], parent_code: a[2]} })
|
|
|
+function outputJSON () {
|
|
|
+ spider.getData(function (err, result) {
|
|
|
+ if (err) return console.log(err)
|
|
|
+
|
|
|
+ var provinces = result.provinces
|
|
|
+ var cities = result.cities
|
|
|
+ var areas = result.areas
|
|
|
+ var streets = result.streets
|
|
|
+
|
|
|
+ console.log('[1/3] 正在生成 “省份、城市” 二级联动数据...')
|
|
|
+ var pc = getAddressPC(provinces, cities)
|
|
|
+ console.log('[2/3] 正在生成 “省份、城市、区县” 三级联动数据...')
|
|
|
+ var pca = getAddressPCA(provinces, cities, areas)
|
|
|
+ console.log('[3/3] 正在生成 “省份、城市、区县、乡镇” 四级联动数据...')
|
|
|
+ var pcas = getAddressPCAS(provinces, cities, areas, streets)
|
|
|
+
|
|
|
+ console.log('[1/7] 正在导出 “省份” JSON 数据...')
|
|
|
+ outputFile('provinces', provinces)
|
|
|
+ console.log('[2/7] 正在导出 “城市” JSON 数据...')
|
|
|
+ outputFile('cities', cities)
|
|
|
+ console.log('[3/7] 正在导出 “区县” JSON 数据...')
|
|
|
+ outputFile('areas', areas)
|
|
|
+ console.log('[4/7] 正在导出 “乡镇” JSON 数据...')
|
|
|
+ outputFile('streets', streets)
|
|
|
+ console.log('[5/7] 正在导出 “省份、城市”二级联动 JSON 数据...')
|
|
|
+ outputFile('address2', pc)
|
|
|
+ console.log('[6/7] 正在导出 “省份、城市、区县”三级联动 JSON 数据...')
|
|
|
+ outputFile('address3', pca)
|
|
|
+ console.log('[7/7] 正在导出 “省份、城市、区县、乡镇” 四级联动 JSON 数据...')
|
|
|
+ outputFile('address4', pcas)
|
|
|
+
|
|
|
+ console.log('数据更新完成!')
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -47,12 +66,16 @@ function getStreets () {
|
|
|
* @Author https://github.com/modood
|
|
|
* @DateTime 2016-10-09 15:25
|
|
|
*/
|
|
|
-function getAddressPC () {
|
|
|
- const doc = {}
|
|
|
- const provinces = getProvinces()
|
|
|
- const cities = getCities()
|
|
|
-
|
|
|
- provinces.forEach(p => doc[p.name] = cities.filter(c => p.code === c.parent_code).map(c => c.name))
|
|
|
+function getAddressPC (provinces, cities) {
|
|
|
+ var doc = {}
|
|
|
+
|
|
|
+ provinces.forEach(function (p) {
|
|
|
+ doc[p.name] = cities.filter(function (c) {
|
|
|
+ return p.code === c.parent_code
|
|
|
+ }).map(function (c) {
|
|
|
+ return c.name
|
|
|
+ })
|
|
|
+ })
|
|
|
|
|
|
return doc
|
|
|
}
|
|
@@ -62,18 +85,23 @@ function getAddressPC () {
|
|
|
* @Author https://github.com/modood
|
|
|
* @DateTime 2016-10-09 16:00
|
|
|
*/
|
|
|
-function getAddressPCA () {
|
|
|
- const doc = {}
|
|
|
- const provinces = getProvinces()
|
|
|
- const cities = getCities()
|
|
|
- const areas = getAreas()
|
|
|
+function getAddressPCA (provinces, cities, areas) {
|
|
|
+ var doc = {}
|
|
|
|
|
|
- provinces.forEach(p => {
|
|
|
+ provinces.forEach(function (p) {
|
|
|
doc[p.name] = {}
|
|
|
- cities.filter(c => p.code === c.parent_code).forEach(c => {
|
|
|
- doc[p.name][c.name] = areas.filter(a => c.code === a.parent_code).map(a => a.name)
|
|
|
+
|
|
|
+ cities.filter(function (c) {
|
|
|
+ return p.code === c.parent_code
|
|
|
+ }).forEach(function (c) {
|
|
|
+ doc[p.name][c.name] = areas.filter(function (a) {
|
|
|
+ return c.code === a.parent_code
|
|
|
+ }).map(function (a) {
|
|
|
+ return a.name
|
|
|
+ })
|
|
|
})
|
|
|
})
|
|
|
+
|
|
|
return doc
|
|
|
}
|
|
|
|
|
@@ -82,22 +110,29 @@ function getAddressPCA () {
|
|
|
* @Author https://github.com/modood
|
|
|
* @DateTime 2016-10-09 16:09
|
|
|
*/
|
|
|
-function getAddressPCAS () {
|
|
|
- const doc = {}
|
|
|
- const provinces = getProvinces()
|
|
|
- const cities = getCities()
|
|
|
- const areas = getAreas()
|
|
|
- const streets = getStreets()
|
|
|
-
|
|
|
- provinces.forEach(p => {
|
|
|
+function getAddressPCAS (provinces, cities, areas, streets) {
|
|
|
+ var doc = {}
|
|
|
+
|
|
|
+ provinces.forEach(function (p) {
|
|
|
doc[p.name] = {}
|
|
|
- cities.filter(c => p.code === c.parent_code).forEach(c => {
|
|
|
+
|
|
|
+ cities.filter(function (c) {
|
|
|
+ return p.code === c.parent_code
|
|
|
+ }).forEach(function (c) {
|
|
|
doc[p.name][c.name] = {}
|
|
|
- areas.filter(a => c.code === a.parent_code).forEach(a => {
|
|
|
- doc[p.name][c.name][a.name] = streets.filter(s => a.code === s.parent_code).map(s => s.name)
|
|
|
+
|
|
|
+ areas.filter(function (a) {
|
|
|
+ return c.code === a.parent_code
|
|
|
+ }).forEach(function (a) {
|
|
|
+ doc[p.name][c.name][a.name] = streets.filter(function (s) {
|
|
|
+ return a.code === s.parent_code
|
|
|
+ }).map(function (s) {
|
|
|
+ return s.name
|
|
|
+ })
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
+
|
|
|
return doc
|
|
|
}
|
|
|
|
|
@@ -106,25 +141,8 @@ function getAddressPCAS () {
|
|
|
* @Author https://github.com/modood
|
|
|
* @DateTime 2016-10-08 17:16
|
|
|
*/
|
|
|
-function outputJSON () {
|
|
|
- fs.writeFileSync(path.resolve(__dirname, 'dist/provinces.min.json'), JSON.stringify(getProvinces()))
|
|
|
- fs.writeFileSync(path.resolve(__dirname, 'dist/cities.min.json'), JSON.stringify(getCities()))
|
|
|
- fs.writeFileSync(path.resolve(__dirname, 'dist/areas.min.json'), JSON.stringify(getAreas()))
|
|
|
- fs.writeFileSync(path.resolve(__dirname, 'dist/streets.min.json'), JSON.stringify(getStreets()))
|
|
|
- fs.writeFileSync(path.resolve(__dirname, 'dist/address2.min.json'), JSON.stringify(getAddressPC()))
|
|
|
- fs.writeFileSync(path.resolve(__dirname, 'dist/address3.min.json'), JSON.stringify(getAddressPCA()))
|
|
|
- fs.writeFileSync(path.resolve(__dirname, 'dist/address4.min.json'), JSON.stringify(getAddressPCAS()))
|
|
|
- console.log('It\'s saved!')
|
|
|
-}
|
|
|
+function outputFile (name, data) {
|
|
|
+ var fileName = 'dist/' + name + '.json'
|
|
|
|
|
|
-module.exports = {
|
|
|
- outputJSON,
|
|
|
- provinces: require(path.resolve(__dirname, 'dist/provinces.min.json')),
|
|
|
- cities: require(path.resolve(__dirname, 'dist/cities.min.json')),
|
|
|
- areas: require(path.resolve(__dirname, 'dist/areas.min.json')),
|
|
|
- streets: require(path.resolve(__dirname, 'dist/streets.min.json')),
|
|
|
- address2: require(path.resolve(__dirname, 'dist/address2.min.json')),
|
|
|
- address3: require(path.resolve(__dirname, 'dist/address3.min.json')),
|
|
|
- address4: require(path.resolve(__dirname, 'dist/address4.min.json')),
|
|
|
+ fs.writeFileSync(path.resolve(__dirname, fileName), JSON.stringify(data))
|
|
|
}
|
|
|
-
|