mirror of
https://github.com/FloatTech/zbpdata.git
synced 2024-11-17 09:37:14 +09:00
update Heisi
This commit is contained in:
parent
aa8f7eb30a
commit
c066abebe7
BIN
Heisi/baisi.bin
Normal file
BIN
Heisi/baisi.bin
Normal file
Binary file not shown.
6314
Heisi/baisi.txt
6314
Heisi/baisi.txt
File diff suppressed because it is too large
Load Diff
BIN
Heisi/heisi.bin
Normal file
BIN
Heisi/heisi.bin
Normal file
Binary file not shown.
19448
Heisi/heisi.txt
19448
Heisi/heisi.txt
File diff suppressed because it is too large
Load Diff
BIN
Heisi/jk.bin
Normal file
BIN
Heisi/jk.bin
Normal file
Binary file not shown.
1939
Heisi/jk.txt
1939
Heisi/jk.txt
File diff suppressed because it is too large
Load Diff
BIN
Heisi/jur.bin
Normal file
BIN
Heisi/jur.bin
Normal file
Binary file not shown.
2972
Heisi/jur.txt
2972
Heisi/jur.txt
File diff suppressed because it is too large
Load Diff
BIN
Heisi/mcn.bin
Normal file
BIN
Heisi/mcn.bin
Normal file
Binary file not shown.
11139
Heisi/mcn.txt
11139
Heisi/mcn.txt
File diff suppressed because it is too large
Load Diff
113
Heisi/migrate/migrate.go
Normal file
113
Heisi/migrate/migrate.go
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"encoding/binary"
|
||||||
|
"encoding/hex"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type item [10]byte
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
if len(os.Args) != 3 {
|
||||||
|
fmt.Println("Usage: heisi.txt heisi.bin")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
inf, err := os.Open(os.Args[1])
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer inf.Close()
|
||||||
|
ouf, err := os.Create(os.Args[2])
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer ouf.Close()
|
||||||
|
s := bufio.NewScanner(inf)
|
||||||
|
i := 0
|
||||||
|
for s.Scan() {
|
||||||
|
i++
|
||||||
|
t := s.Text()
|
||||||
|
if !strings.HasPrefix(t, "http://hs.heisiwu.com/wp-content/uploads/") {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": invalid url prefix")
|
||||||
|
}
|
||||||
|
t = t[41:]
|
||||||
|
if len(t) < 27 {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": invalid url suffix")
|
||||||
|
}
|
||||||
|
year, err := strconv.Atoi(t[:4]) // 4bits
|
||||||
|
if err != nil {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": " + err.Error())
|
||||||
|
}
|
||||||
|
if year < 2021 {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": invalid year")
|
||||||
|
}
|
||||||
|
mounth, err := strconv.Atoi(t[5:7]) // 4bits
|
||||||
|
if err != nil {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": " + err.Error())
|
||||||
|
}
|
||||||
|
if mounth == 0 || mounth > 12 {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": invalid mounth")
|
||||||
|
}
|
||||||
|
var it item
|
||||||
|
it[0] = byte((year-2021)<<4) | byte(mounth&0x0f) // 1byte
|
||||||
|
if year == 2021 {
|
||||||
|
num, err := strconv.Atoi(t[16 : 16+6]) // 4bytes
|
||||||
|
if err != nil {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": " + err.Error())
|
||||||
|
}
|
||||||
|
d, err := hex.DecodeString(t[28 : 28+8]) // 4bytes
|
||||||
|
if err != nil {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": " + err.Error())
|
||||||
|
}
|
||||||
|
if len(d) != 4 {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": invalid data")
|
||||||
|
}
|
||||||
|
binary.BigEndian.PutUint32(it[1:], uint32(num))
|
||||||
|
copy(it[5:], d)
|
||||||
|
} else {
|
||||||
|
head := "0"
|
||||||
|
if strings.Contains(t[23:], ".png") {
|
||||||
|
head = "1"
|
||||||
|
} else if strings.Contains(t[23:], ".webp") {
|
||||||
|
head = "2"
|
||||||
|
}
|
||||||
|
d, err := hex.DecodeString(head + t[8:8+15]) // 8bytes
|
||||||
|
if err != nil {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": " + err.Error())
|
||||||
|
}
|
||||||
|
if len(d) != 8 {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": invalid data")
|
||||||
|
}
|
||||||
|
copy(it[1:], d)
|
||||||
|
if strings.Contains(t[23:], "scaled") {
|
||||||
|
it[9] = 0x80
|
||||||
|
}
|
||||||
|
if t[23] == '-' && t[24] != 's' {
|
||||||
|
switch {
|
||||||
|
case t[25] == '-' || t[25] == '.':
|
||||||
|
it[9] |= (t[24] - '0') & 0x7f
|
||||||
|
case t[26] == '-' || t[26] == '.':
|
||||||
|
num, err := strconv.Atoi(t[24:26]) // 1byte
|
||||||
|
if err != nil {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": " + err.Error())
|
||||||
|
}
|
||||||
|
it[9] |= byte(num) & 0x7f
|
||||||
|
case t[27] == '-' || t[27] == '.':
|
||||||
|
num, err := strconv.Atoi(t[24:27]) // 1byte
|
||||||
|
if err != nil {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": " + err.Error())
|
||||||
|
}
|
||||||
|
it[9] |= byte(num) & 0x7f
|
||||||
|
default:
|
||||||
|
panic("line " + strconv.Itoa(i) + ": invalid num")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ouf.Write(it[:])
|
||||||
|
}
|
||||||
|
}
|
78
Heisi/validate/validate.go
Normal file
78
Heisi/validate/validate.go
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"encoding/binary"
|
||||||
|
"encoding/hex"
|
||||||
|
"fmt"
|
||||||
|
"math/bits"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
type item [10]byte
|
||||||
|
|
||||||
|
const (
|
||||||
|
template2021 = "http://hs.heisiwu.com/wp-content/uploads/%4d/%02d/%4d%02d16%06d-611a3%8s.jpg"
|
||||||
|
templategeneral = "http://hs.heisiwu.com/wp-content/uploads/%4d/%02d/%015x"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
if len(os.Args) != 3 {
|
||||||
|
fmt.Println("Usage: heisi.txt heisi.bin")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
inf, err := os.Open(os.Args[1])
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer inf.Close()
|
||||||
|
ouf, err := os.Open(os.Args[2])
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer ouf.Close()
|
||||||
|
s := bufio.NewScanner(inf)
|
||||||
|
i := 0
|
||||||
|
for s.Scan() {
|
||||||
|
i++
|
||||||
|
t := s.Text()
|
||||||
|
var it item
|
||||||
|
ouf.Read(it[:])
|
||||||
|
year, month := int((it[0]>>4)&0x0f), int(it[0]&0x0f)
|
||||||
|
year += 2021
|
||||||
|
if year == 2021 {
|
||||||
|
num := binary.BigEndian.Uint32(it[1:5])
|
||||||
|
dstr := hex.EncodeToString(it[5:9])
|
||||||
|
trestore := fmt.Sprintf(template2021, year, month, year, month, num, dstr)
|
||||||
|
if trestore != t {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": mismatched content " + trestore)
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
d := binary.BigEndian.Uint64(it[1:9])
|
||||||
|
isscaled := it[9]&0x80 > 0
|
||||||
|
num := int(it[9] & 0x7f)
|
||||||
|
trestore := fmt.Sprintf(templategeneral, year, month, d&0x0fffffff_ffffffff)
|
||||||
|
if num > 0 {
|
||||||
|
trestore += fmt.Sprintf("-%d", num)
|
||||||
|
}
|
||||||
|
if isscaled {
|
||||||
|
trestore += "-scaled"
|
||||||
|
}
|
||||||
|
d = bits.RotateLeft64(d, 4) & 0x0f
|
||||||
|
switch d {
|
||||||
|
case 0:
|
||||||
|
trestore += ".jpg"
|
||||||
|
case 1:
|
||||||
|
trestore += ".png"
|
||||||
|
case 2:
|
||||||
|
trestore += ".webp"
|
||||||
|
default:
|
||||||
|
panic("line " + strconv.Itoa(i) + ": invalid ext")
|
||||||
|
}
|
||||||
|
if trestore != t {
|
||||||
|
panic("line " + strconv.Itoa(i) + ": mismatched content " + trestore)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
Heisi/zuk.bin
Normal file
BIN
Heisi/zuk.bin
Normal file
Binary file not shown.
3621
Heisi/zuk.txt
3621
Heisi/zuk.txt
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user