gokenall

package module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2018 License: Apache-2.0 Imports: 17 Imported by: 0

README

gokenall

Build Status GoDoc apache license

日本郵便の郵便番号データ(ken_all.csv)をGoから扱うためのライブラリ及びコマンドラインツールです。

以下のような機能があります。

  • 最新のken_all.csvを日本郵便のサイトからダウンロード・解凍する。(コマンド名: Download)
  • 前回ダウンロード時から更新があるか確認する。(コマンド名: Updated)
  • データの使いづらい部分を加工する。(コマンド名: Normalize)
    • sjis→utf8
    • 半角カナ→全角カナ。ASCII文字→半角
    • 複数行に分割された行をマージ
    • 地名項目の運用上邪魔になる文字を修正
      • 「以下に掲載がない場合」は除去
      • 「~の次に番地がくる場合」は除去
      • 「~一円」は除去(但し地名が「一円」の場合は除く)
      • ()で囲まれている部分は除去。但し、可能なものは残すようにする。
        • (除去) その他
        • (除去) 地階・階層不明
        • (除去) *を除く
        • (残す) ○階
        • (分割) ○~○(丁目|番地|番)
        • (分割) ○、○、○(丁目|番地|番)
        • (分割) 地名、地名、地名

Usage

ライブラリ利用

import "github.com/oirik/gokenall"

GoDoc

コマンド利用

install
$ go get github.com/oirik/gokenall/cmd/kenall

Or download binaries from github releases

usage
$ kenall <command> [arguments]

(例)日本郵便のデータが更新された時だけダウンロードする。

  1. UPDATEDという名前でファイルを作り、中身を以下のようにします。
00010101
  1. 下記のようなコマンドを叩けば、更新されたときだけカレントディレクトリのken_all.csvが上書きされます。
$ kenall updated -p `cat UPDATED` > UPDATED && kenall download -x | kenall normalize -o ken_all.csv

詳しくはヘルプを参考にしてください。

$ kenall help
kenall is a tool for managing ken_all.csv

Usage:

  kenall <command> [arguments]

The commands are:

  download   Download ken_all.zip from japanpost website
  help       Show help information
  normalize  Normalize -make easy to use- input (file or standard input if no argument)
  updated    Read updated date of data from japanpost website. Exit status 0 if later than [argument](yyyyMMdd) or exit status 1.
  version    Show version information

Use "kenall help <command>" for more information about a command.

Todo

  • 単一JSONファイルへの変換
  • 郵便番号ごとのJSONファイルへの変換
  • READMEをもっと親切にする。

Documentation

Index

Constants

View Source
const (
	// NormalizeWidth is set if you want to align the letter format.
	NormalizeWidth NormalizeOption = 1 << iota
	// NormalizeUTF8 is set if you want to convert from sjis to UTF8.
	NormalizeUTF8
	// NormalizeTrim is set if you want to trim the text.
	NormalizeTrim

	// NoNormalizeOption represents no flag is set for normalize.
	NoNormalizeOption = NormalizeOption(0)
	// AllNormalizeOption represents all flags are set for normalize.
	AllNormalizeOption = NormalizeOption(1<<bitsNormalizeOption - 1)
	// DefaultNormalizeOption represents default flags are set for normalize.
	DefaultNormalizeOption = AllNormalizeOption
)

Variables

This section is empty.

Functions

func Download

func Download(w io.Writer, extract bool) error

Download downloads ken_all file from japanpost website. The file on website is zip archived. If extract flag sets true, the file is decompressed to csv file.

func Normalize

func Normalize(r io.Reader, w io.Writer, option NormalizeOption) error

Normalize make original ken_all texts easy to use. See detail information in https://github.com/oirik/gokenall. Optionaly change width / encoding / trim. (default true for all)

func Updated

func Updated(compareDate time.Time) (result bool, updatedDate time.Time, retErr error)

Updated checks whether the file on japanpost website is updated or not by comparing with the date text in website.

Types

type JapanZipCode

type JapanZipCode struct {
	JISCode                   string `json:"jis_code"`      // 全国地方公共団体コード(JIS X0401、X0402)……… 半角数字
	OldZipCode                string `json:"old_zip_code"`  // (旧)郵便番号(5桁)……………………………………… 半角数字
	ZipCode                   string `json:"zip_code"`      // 郵便番号(7桁)……………………………………… 半角数字
	PrefKana                  string `json:"pref_kana"`     // 都道府県名 ………… 半角カタカナ(コード順に掲載) (注1)
	CityKana                  string `json:"city_kana"`     // 市区町村名 ………… 半角カタカナ(コード順に掲載) (注1)
	StreetKana                string `json:"street_kana"`   // 町域名 ……………… 半角カタカナ(五十音順に掲載) (注1)
	Pref                      string `json:"pref"`          // 都道府県名 ………… 漢字(コード順に掲載) (注1,2)
	City                      string `json:"city"`          // 市区町村名 ………… 漢字(コード順に掲載) (注1,2)
	Street                    string `json:"street"`        // 町域名 ……………… 漢字(五十音順に掲載) (注1,2)
	StreetDuplicateZipCodeFlg string `json:"-"`             // 一町域が二以上の郵便番号で表される場合の表示 (注3) (「1」は該当、「0」は該当せず)
	NumberedSmallStreetFlg    string `json:"-"`             // 小字毎に番地が起番されている町域の表示 (注4) (「1」は該当、「0」は該当せず)
	NumberedStreetFlg         string `json:"-"`             // 丁目を有する町域の場合の表示 (「1」は該当、「0」は該当せず)
	ZipCodeDuplicateStreetFlg string `json:"-"`             // 一つの郵便番号で二以上の町域を表す場合の表示 (注5) (「1」は該当、「0」は該当せず)
	UpdateFlg                 string `json:"update_flg"`    // 更新の表示(注6)(「0」は変更なし、「1」は変更あり、「2」廃止(廃止データのみ使用))
	UpdateReason              string `json:"update_reason"` // 変更理由 (「0」は変更なし、「1」市政・区政・町政・分区・政令指定都市施行、「2」住居表示の実施、「3」区画整理、「4」郵便区調整等、「5」訂正、「6」廃止(廃止データのみ使用))
	PrefCode                  string `json:"pref_code"`     // <ken_allにはない追加項目> 都道府県コード(JIS X0401)
}

JapanZipCode is a parsed line from ken_all.csv.

func Parse

func Parse(r io.Reader) ([]*JapanZipCode, error)

Parse parses input csv texts to JapanZipCode data structure.

type NormalizeOption

type NormalizeOption uint

NormalizeOption is the condition flags at normalize.

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL