package main

import (
	"fmt"
	"git.gitorious.org/go-pkg/epubgo.git"
	"labix.org/v2/mgo/bson"
)

func main() {
	db = initDB()
	defer db.Close()
	books, _, _ := db.GetBooks(bson.M{})

	for _, book := range books {
		fmt.Println(book.Title)
		e, err := OpenBook(book.File)
		if err != nil {
			fmt.Println("================", err)
			continue
		}

		updateISBN(e, book)
		updateDescription(e, book)
		e.Close()
	}
}

func updateISBN(e *epubgo.Epub, book Book) {
	attr, err := e.MetadataAttr("identifier")
	if err != nil {
		fmt.Println("isbn ================", err)
		return
	}
	data, err := e.Metadata("identifier")
	if err != nil {
		fmt.Println("isbn ================", err)
		return
	}
	var isbn string
	for i, d := range data {
		if attr[i]["scheme"] == "ISBN" {
			isbn = d
		}
	}

	if isbn != "" {
		db.UpdateBook(bson.ObjectIdHex(book.Id), bson.M{"isbn": isbn})
	}
}

func updateDescription(e *epubgo.Epub, book Book) {
	descList, err := e.Metadata("description")
	if err != nil {
		fmt.Println("desc ================", err)
		return
	}
	description := parseDescription(descList)
	if len(description) < 10 {
		return
	}

	if len(book.Description) < 10 || book.Description[:10] == description[:10] {
		db.UpdateBook(bson.ObjectIdHex(book.Id), bson.M{"description": description})
	}
}