forked from x/icebergs
add favor.save
This commit is contained in:
parent
330613b736
commit
9af43bc745
@ -112,6 +112,7 @@ var Index = &ice.Context{Name: "mdb", Help: "数据模块",
|
||||
r = csv.NewReader(f)
|
||||
}
|
||||
}
|
||||
|
||||
head, _ := r.Read()
|
||||
|
||||
for {
|
||||
@ -122,8 +123,12 @@ var Index = &ice.Context{Name: "mdb", Help: "数据模块",
|
||||
|
||||
data := kit.Dict()
|
||||
for i, k := range head {
|
||||
if k == kit.MDB_EXTRA {
|
||||
data[k] = kit.UnMarshal(line[i])
|
||||
} else {
|
||||
data[k] = line[i]
|
||||
}
|
||||
}
|
||||
// 导入数据
|
||||
n := m.Grow(arg[0], arg[1], data)
|
||||
m.Log(ice.LOG_INSERT, "index: %d value: %v", n, data)
|
||||
@ -145,8 +150,10 @@ var Index = &ice.Context{Name: "mdb", Help: "数据模块",
|
||||
case kit.MDB_DICT:
|
||||
case kit.MDB_META:
|
||||
case kit.MDB_LIST:
|
||||
buf := bytes.NewBuffer(make([]byte, 0, 1024))
|
||||
w := csv.NewWriter(buf)
|
||||
f, p, e := kit.Create("var/temp/" + kit.Keys(name, "csv"))
|
||||
m.Assert(e)
|
||||
w := csv.NewWriter(f)
|
||||
|
||||
head := []string{}
|
||||
m.Grows(arg[0], arg[1], "", "", func(index int, value map[string]interface{}) {
|
||||
if index == 0 {
|
||||
@ -167,7 +174,7 @@ var Index = &ice.Context{Name: "mdb", Help: "数据模块",
|
||||
})
|
||||
w.Flush()
|
||||
|
||||
m.Cmdy(ice.WEB_STORY, "add", "csv", name, string(buf.Bytes()))
|
||||
m.Cmdy(ice.WEB_STORY, "catch", "csv", p)
|
||||
|
||||
case kit.MDB_HASH:
|
||||
m.Cmdy(ice.WEB_STORY, "add", "json", name, kit.Formats(m.Confv(arg[0], arg[1])))
|
||||
|
@ -11,6 +11,13 @@ var Index = &ice.Context{Name: "tcp", Help: "通信模块",
|
||||
Caches: map[string]*ice.Cache{},
|
||||
Configs: map[string]*ice.Config{},
|
||||
Commands: map[string]*ice.Command{
|
||||
"ip": {Name: "ifconfig [name]", Help: "网络配置", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if addr, e := net.InterfaceAddrs(); m.Assert(e) {
|
||||
for _, v := range addr {
|
||||
m.Info("%v", v)
|
||||
}
|
||||
}
|
||||
}},
|
||||
"ifconfig": {Name: "ifconfig [name]", Help: "网络配置", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if ifs, e := net.Interfaces(); m.Assert(e) {
|
||||
for _, v := range ifs {
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"github.com/skip2/go-qrcode"
|
||||
|
||||
"bytes"
|
||||
"encoding/csv"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
@ -1028,6 +1029,46 @@ var Index = &ice.Context{Name: "web", Help: "网络模块",
|
||||
}
|
||||
|
||||
switch arg[0] {
|
||||
case "save":
|
||||
f, p, e := kit.Create(arg[1])
|
||||
m.Assert(e)
|
||||
defer f.Close()
|
||||
w := csv.NewWriter(f)
|
||||
|
||||
w.Write([]string{"favor", "type", "name", "text", "extra"})
|
||||
|
||||
n := 0
|
||||
m.Option("cache.offend", 0)
|
||||
m.Option("cache.limit", -2)
|
||||
for _, favor := range arg[2:] {
|
||||
m.Richs(ice.WEB_FAVOR, nil, favor, func(key string, val map[string]interface{}) {
|
||||
m.Grows(ice.WEB_FAVOR, kit.Keys(kit.MDB_HASH, key), "", "", func(index int, value map[string]interface{}) {
|
||||
w.Write(kit.Simple(kit.Value(val, "meta.name"), value["type"], value["name"], value["text"], kit.Format(value["extra"])))
|
||||
n++
|
||||
})
|
||||
})
|
||||
}
|
||||
w.Flush()
|
||||
m.Echo("%s: %d", p, n)
|
||||
|
||||
case "load":
|
||||
f, e := os.Open(arg[1])
|
||||
m.Assert(e)
|
||||
defer f.Close()
|
||||
r := csv.NewReader(f)
|
||||
|
||||
head, e := r.Read()
|
||||
m.Assert(e)
|
||||
m.Info("head: %v", head)
|
||||
|
||||
for {
|
||||
line, e := r.Read()
|
||||
if e != nil {
|
||||
break
|
||||
}
|
||||
m.Cmd(ice.WEB_FAVOR, line)
|
||||
}
|
||||
|
||||
case "sync":
|
||||
m.Richs(ice.WEB_FAVOR, nil, arg[1], func(key string, val map[string]interface{}) {
|
||||
remote := kit.Keys("meta.remote", arg[2], arg[3])
|
||||
@ -1090,6 +1131,8 @@ var Index = &ice.Context{Name: "web", Help: "网络模块",
|
||||
arg = append(arg, "")
|
||||
}
|
||||
|
||||
m.Info("what %v", arg[4:])
|
||||
m.Info("what %v", kit.Dict(arg[4:]))
|
||||
// 添加收藏
|
||||
index := m.Grow(ice.WEB_FAVOR, kit.Keys(kit.MDB_HASH, favor), kit.Dict(
|
||||
kit.MDB_TYPE, arg[1], kit.MDB_NAME, arg[2], kit.MDB_TEXT, arg[3],
|
||||
|
@ -15,7 +15,9 @@ var Index = &ice.Context{Name: "alpha", Help: "英汉词典",
|
||||
Caches: map[string]*ice.Cache{},
|
||||
Configs: map[string]*ice.Config{
|
||||
"alpha": {Name: "alpha", Help: "英汉词典", Value: kit.Data(
|
||||
"store", "var/alpha/", "limit", "2000", "least", "1000",
|
||||
"store", "var/data/alpha", "fsize", "200000", "limit", "5000", "least", "1000",
|
||||
"repos", "word-dict", "local", "some",
|
||||
"field", []interface{}{"audio", "bnc", "collins", "definition", "detail", "exchange", "frq", "id", "oxford", "phonetic", "pos", "tag", "time", "translation", "word"},
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
@ -25,31 +27,67 @@ var Index = &ice.Context{Name: "alpha", Help: "英汉词典",
|
||||
ice.ICE_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Save("alpha")
|
||||
}},
|
||||
|
||||
"alpha": {Name: "alpha [load|list]", Help: "英汉词典", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
count := kit.Int(m.Conf("alpha", "meta.count"))
|
||||
"load": {Name: "load file [name]", Help: "加载词库", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
arg = append(arg, "list", kit.Format(count-rand.Intn(count)))
|
||||
// 下载词库
|
||||
if m.Cmd("web.code.git.repos", m.Conf("alpha", "meta.repos"), "usr/"+m.Conf("alpha", "meta.repos")); m.Confs("alpha", "ecdict") {
|
||||
m.Echo("ecdict: %v", m.Conf("alpha", "ecdict.meta.count"))
|
||||
return
|
||||
}
|
||||
arg = append(arg, path.Join("usr", m.Conf("alpha", "meta.repos"), "ecdict"))
|
||||
}
|
||||
|
||||
switch arg[0] {
|
||||
case "load":
|
||||
// 加载词库
|
||||
m.Cmd(ice.MDB_IMPORT, "alpha", "", "list",
|
||||
m.Cmd(ice.WEB_CACHE, "catch", "csv", arg[1]).Append("data"))
|
||||
case "list":
|
||||
// 词汇列表
|
||||
// 清空数据
|
||||
lib := kit.Select(path.Base(arg[0]), arg, 1)
|
||||
m.Assert(os.RemoveAll(path.Join(m.Conf("alpha", "meta.store"), lib)))
|
||||
m.Conf("alpha", lib, "")
|
||||
|
||||
// 缓存配置
|
||||
m.Conf("alpha", kit.Keys(lib, "meta.store"), path.Join(m.Conf("alpha", "meta.store"), lib))
|
||||
m.Conf("alpha", kit.Keys(lib, "meta.fsize"), m.Conf("alpha", "meta.fsize"))
|
||||
m.Conf("alpha", kit.Keys(lib, "meta.limit"), m.Conf("alpha", "meta.limit"))
|
||||
m.Conf("alpha", kit.Keys(lib, "meta.least"), m.Conf("alpha", "meta.least"))
|
||||
|
||||
m.Cmd(ice.MDB_IMPORT, "alpha", lib, "list",
|
||||
m.Cmd(ice.WEB_CACHE, "catch", "csv", arg[0]+".csv").Append("data"))
|
||||
|
||||
// 保存词库
|
||||
m.Conf("alpha", kit.Keys(lib, "meta.limit"), 0)
|
||||
m.Conf("alpha", kit.Keys(lib, "meta.least"), 0)
|
||||
m.Echo("%s: %d", lib, m.Grow("alpha", lib, kit.Dict("word", " ")))
|
||||
}},
|
||||
"push": {Name: "push lib word text", Help: "添加词汇", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Conf("alpha", kit.Keys(arg[0], "meta.limit"), 0)
|
||||
m.Conf("alpha", kit.Keys(arg[0], "meta.least"), 0)
|
||||
m.Echo("%s: %d", arg[0], m.Grow("alpha", arg[0], kit.Dict("word", arg[1], "translation", arg[2])))
|
||||
}},
|
||||
"list": {Name: "list [lib [offend [limit]]]", Help: "查看词汇", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
kit.Fetch(m.Confv("alpha"), func(key string, value map[string]interface{}) {
|
||||
if key != "meta" {
|
||||
m.Push(key, value["meta"], []string{"key", "count"})
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
lib := kit.Select("ecdict", arg, 0)
|
||||
m.Option("cache.offend", kit.Select("0", arg, 1))
|
||||
m.Option("cache.limit", kit.Select("10", arg, 2))
|
||||
m.Grows("alpha", nil, "", "", func(index int, value map[string]interface{}) {
|
||||
m.Push("", value, []string{"id", "word", "translation", "definition"})
|
||||
m.Grows("alpha", lib, "", "", func(index int, value map[string]interface{}) {
|
||||
m.Push("", value, []string{"id", "word", "translation"})
|
||||
})
|
||||
}
|
||||
}},
|
||||
"save": {Name: "save lib [filename]", Help: "导出词库", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Option("cache.offend", 0)
|
||||
m.Option("cache.limit", -2)
|
||||
m.Cmdy(ice.WEB_STORY, "watch", m.Cmdx(ice.MDB_EXPORT, "alpha", arg[0], "list"), arg[1:])
|
||||
}},
|
||||
|
||||
"random": {Name: "random [count]", Help: "随机词汇", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
count := kit.Int(m.Conf("alpha", "meta.count"))
|
||||
count := kit.Int(m.Conf("alpha", "ecdict.meta.count")) + 1
|
||||
for i := 0; i < kit.Int(kit.Select("10", arg, 0)); i++ {
|
||||
m.Cmdy("alpha", "list", count-rand.Intn(count), 1)
|
||||
m.Cmdy("list", "ecdict", count-rand.Intn(count), 1)
|
||||
}
|
||||
}},
|
||||
"search": {Name: "search [word [method]]", Help: "查找词汇", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
@ -70,23 +108,11 @@ var Index = &ice.Context{Name: "alpha", Help: "英汉词典",
|
||||
arg[0] = "," + arg[0] + "$"
|
||||
}
|
||||
|
||||
// 字段列表
|
||||
field := m.Confm("alpha", "meta.field")
|
||||
if field == nil {
|
||||
field = map[string]interface{}{}
|
||||
head := []string{}
|
||||
if f, e := os.Open(path.Join(m.Conf("alpha", "meta.store"), "web.wiki.alpha.alpha.csv")); m.Assert(e) {
|
||||
defer f.Close()
|
||||
bio := csv.NewReader(f)
|
||||
head, e = bio.Read()
|
||||
}
|
||||
for i, k := range head {
|
||||
// 搜索词汇
|
||||
field := map[string]int{}
|
||||
for i, k := range kit.Simple(m.Confv("alpha", "meta.field")) {
|
||||
field[k] = i
|
||||
}
|
||||
m.Conf("alpha", "meta.field", field)
|
||||
}
|
||||
|
||||
// 搜索词汇
|
||||
bio := csv.NewReader(bytes.NewBufferString(m.Cmdx(ice.CLI_SYSTEM, "grep", "-rh", arg[0], m.Conf("alpha", "meta.store"))))
|
||||
for i := 0; i < 100; i++ {
|
||||
if line, e := bio.Read(); e != nil {
|
||||
|
@ -32,7 +32,7 @@ var Index = &ice.Context{Name: "input", Help: "输入法",
|
||||
|
||||
"load": {Name: "load file [name]", Help: "加载词库", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
// 默认词库
|
||||
// 下载词库
|
||||
if m.Cmd("web.code.git.repos", m.Conf("input", "meta.repos"), "usr/"+m.Conf("input", "meta.repos")); m.Confs("input", "wubi86") {
|
||||
m.Echo("wubi86: %v", m.Conf("input", "wubi86.meta.count"))
|
||||
return
|
||||
|
Loading…
x
Reference in New Issue
Block a user