61 lines
1 KiB
Go
61 lines
1 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"os"
|
||
|
"git.gitorious.org/go-pkg/epub.git"
|
||
|
"labix.org/v2/mgo"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
IP = "127.0.0.1"
|
||
|
DB_NAME = "trantor"
|
||
|
BOOKS_COLL = "books"
|
||
|
PATH = "./books/"
|
||
|
)
|
||
|
|
||
|
|
||
|
func store(coll *mgo.Collection, path string) {
|
||
|
var book Book
|
||
|
|
||
|
e, err := epub.Open(path, 0)
|
||
|
if err != nil {
|
||
|
fmt.Println(path)
|
||
|
panic(err) // TODO: do something
|
||
|
}
|
||
|
defer e.Close()
|
||
|
|
||
|
// TODO: do it for all metadata
|
||
|
book.Title = e.Metadata(epub.EPUB_TITLE)
|
||
|
book.Creator = e.Metadata(epub.EPUB_CREATOR)
|
||
|
book.Subject = e.Metadata(epub.EPUB_SUBJECT)
|
||
|
book.Lang = e.Metadata(epub.EPUB_LANG)
|
||
|
book.Path = path
|
||
|
|
||
|
coll.Insert(book)
|
||
|
}
|
||
|
|
||
|
|
||
|
func main() {
|
||
|
session, err := mgo.Dial(IP)
|
||
|
if err != nil {
|
||
|
panic(err) // TODO: do something
|
||
|
}
|
||
|
defer session.Close()
|
||
|
coll := session.DB(DB_NAME).C(BOOKS_COLL)
|
||
|
|
||
|
f, err := os.Open(PATH)
|
||
|
if err != nil {
|
||
|
fmt.Println(PATH)
|
||
|
panic(err) // TODO: do something
|
||
|
}
|
||
|
names, err := f.Readdirnames(0)
|
||
|
if err != nil {
|
||
|
panic(err) // TODO: do something
|
||
|
}
|
||
|
|
||
|
for _, name := range names {
|
||
|
store(coll, PATH + name)
|
||
|
}
|
||
|
}
|