modood 8 жил өмнө
parent
commit
05a39dc0eb
2 өөрчлөгдсөн 95 нэмэгдсэн , 78 устгасан
  1. 94 76
      index.js
  2. 1 2
      output.js

+ 94 - 76
index.js

@@ -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))
 }
-

+ 1 - 2
output.js

@@ -1,4 +1,3 @@
 'use strict'
 
-require('.').outputJSON()
-
+require('./index').outputJSON()