Handle utf characters properly
If the title of the book start with a non-ascii character create the folder with the first character properly.
This commit is contained in:
parent
93bd567f8d
commit
6af9db50a4
1 changed files with 11 additions and 4 deletions
15
store.go
15
store.go
|
@ -8,6 +8,7 @@ import (
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"unicode/utf8"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ParseFile(path string) (string, error) {
|
func ParseFile(path string) (string, error) {
|
||||||
|
@ -68,7 +69,9 @@ func StoreBook(book Book) (path string, err error) {
|
||||||
path = validFileName(BOOKS_PATH, title, ".epub")
|
path = validFileName(BOOKS_PATH, title, ".epub")
|
||||||
|
|
||||||
oldPath := NEW_PATH+book.Path
|
oldPath := NEW_PATH+book.Path
|
||||||
err = os.Mkdir(BOOKS_PATH+title[:1], os.ModePerm)
|
r,_ := utf8.DecodeRuneInString(title)
|
||||||
|
folder := string(r)
|
||||||
|
err = os.Mkdir(BOOKS_PATH+folder, os.ModePerm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -91,10 +94,12 @@ func validFileName(path string, title string, extension string) string {
|
||||||
title = strings.Replace(title, "/", "_", -1)
|
title = strings.Replace(title, "/", "_", -1)
|
||||||
title = strings.Replace(title, "?", "_", -1)
|
title = strings.Replace(title, "?", "_", -1)
|
||||||
title = strings.Replace(title, "#", "_", -1)
|
title = strings.Replace(title, "#", "_", -1)
|
||||||
file := title[:1] + "/" + title + extension
|
r,_ := utf8.DecodeRuneInString(title)
|
||||||
|
folder := string(r)
|
||||||
|
file := folder + "/" + title + extension
|
||||||
_, err := os.Stat(path + file)
|
_, err := os.Stat(path + file)
|
||||||
for i := 0; err == nil; i++ {
|
for i := 0; err == nil; i++ {
|
||||||
file = title[:1] + "/" + title + "_" + strconv.Itoa(i) + extension
|
file = folder + "/" + title + "_" + strconv.Itoa(i) + extension
|
||||||
_, err = os.Stat(path + file)
|
_, err = os.Stat(path + file)
|
||||||
}
|
}
|
||||||
return file
|
return file
|
||||||
|
@ -120,7 +125,9 @@ func cleanStr(str string) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func storeImg(img []byte, title, extension string) (string, string) {
|
func storeImg(img []byte, title, extension string) (string, string) {
|
||||||
os.Mkdir(COVER_PATH + title[:1], os.ModePerm)
|
r,_ := utf8.DecodeRuneInString(title)
|
||||||
|
folder := string(r)
|
||||||
|
err := os.Mkdir(COVER_PATH + folder, os.ModePerm)
|
||||||
imgPath := validFileName(COVER_PATH, title, extension)
|
imgPath := validFileName(COVER_PATH, title, extension)
|
||||||
|
|
||||||
/* store img on disk */
|
/* store img on disk */
|
||||||
|
|
Reference in a new issue