c "github.com/qydysky/bili_danmu/CV"
comp "github.com/qydysky/part/component"
file "github.com/qydysky/part/file"
+ phash "github.com/qydysky/part/hash"
log "github.com/qydysky/part/log"
- ppool "github.com/qydysky/part/pool"
reqf "github.com/qydysky/part/reqf"
- pslice "github.com/qydysky/part/slice"
)
// path
Hashr = comp.NewComp(func(ctx context.Context, s string) (r string, e error) {
return hashr(s), nil
})
- danmuPool = ppool.New(ppool.PoolFunc[pslice.Buf[byte]]{
- New: func() *pslice.Buf[byte] {
- return pslice.New[byte]()
- },
- InUse: func(b *pslice.Buf[byte]) bool {
- return !b.IsEmpty()
- },
- Reuse: func(b *pslice.Buf[byte]) *pslice.Buf[byte] {
- return b
- },
- Pool: func(b *pslice.Buf[byte]) *pslice.Buf[byte] {
- b.Reset()
- return b
- },
- }, 100)
+ // danmuPool = ppool.New(ppool.PoolFunc[pslice.Buf[byte]]{
+ // New: func() *pslice.Buf[byte] {
+ // return pslice.New[byte]()
+ // },
+ // InUse: func(b *pslice.Buf[byte]) bool {
+ // return !b.IsEmpty()
+ // },
+ // Reuse: func(b *pslice.Buf[byte]) *pslice.Buf[byte] {
+ // return b
+ // },
+ // Pool: func(b *pslice.Buf[byte]) *pslice.Buf[byte] {
+ // b.Reset()
+ // return b
+ // },
+ // }, 100)
)
type Danmu struct {
*ptr.Msg = "[" + *ptr.Msg + emoticon_unique + "]"
}
}
- *ptr.Msg = hashr(*ptr.Msg)
- savePath := "emots/" + *ptr.Msg + ".png"
+ savePath := "emots/" + hashr(*ptr.Msg) + ".png"
if !file.New(savePath, 0, true).IsExist() {
go func() {
req := c.C.ReqPool.Get()
if e := json.Unmarshal([]byte(extrab), &E); e != nil {
return nil, e
} else {
- *ptr.Msg = hashr(*ptr.Msg)
for k, v := range E.Emots {
m, ok := v.(map[string]any)
if !ok {
}
func hashr(s string) (r string) {
- buf := danmuPool.Get()
- defer danmuPool.Put(buf)
+ return phash.Md5String(s)
- emoteB := false
- for i := 0; i < len(s); i++ {
- if !emoteB {
- _ = buf.Append([]byte{s[i]})
- emoteB = s[i] == '['
- continue
- } else if s[i] == ']' {
- _ = buf.Append([]byte{s[i]})
- emoteB = false
- continue
- }
- switch s[i] {
- case '\\':
- _ = buf.Append([]byte("_1"))
- case '/':
- _ = buf.Append([]byte("_2"))
- case '*':
- _ = buf.Append([]byte("_3"))
- case '<':
- _ = buf.Append([]byte("_4"))
- case '>':
- _ = buf.Append([]byte("_5"))
- case '|':
- _ = buf.Append([]byte("_6"))
- case ':':
- _ = buf.Append([]byte(":"))
- case '?':
- _ = buf.Append([]byte("?"))
- case '"':
- _ = buf.Append([]byte("“"))
- default:
- _ = buf.Append([]byte{s[i]})
- }
- }
- return string(buf.GetCopyBuf())
+ // buf := danmuPool.Get()
+ // defer danmuPool.Put(buf)
+
+ // emoteB := false
+ // for i := 0; i < len(s); i++ {
+ // if !emoteB {
+ // _ = buf.Append([]byte{s[i]})
+ // emoteB = s[i] == '['
+ // continue
+ // } else if s[i] == ']' {
+ // _ = buf.Append([]byte{s[i]})
+ // emoteB = false
+ // continue
+ // }
+ // switch s[i] {
+ // case '\\':
+ // _ = buf.Append([]byte("_1"))
+ // case '/':
+ // _ = buf.Append([]byte("_2"))
+ // case '*':
+ // _ = buf.Append([]byte("_3"))
+ // case '<':
+ // _ = buf.Append([]byte("_4"))
+ // case '>':
+ // _ = buf.Append([]byte("_5"))
+ // case '|':
+ // _ = buf.Append([]byte("_6"))
+ // case ':':
+ // _ = buf.Append([]byte(":"))
+ // case '?':
+ // _ = buf.Append([]byte("?"))
+ // case '"':
+ // _ = buf.Append([]byte("“"))
+ // default:
+ // _ = buf.Append([]byte{s[i]})
+ // }
+ // }
+ // return string(buf.GetCopyBuf())
}