Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "archive/zip"
- "fmt"
- "io/ioutil"
- "os"
- "path/filepath"
- "regexp"
- "strings"
- )
- func main() {
- rc, err := zip.OpenReader(os.Args[1])
- if err != nil {
- panic(err)
- }
- var isbn []string
- seen := map[string]bool{}
- for _, f := range rc.File {
- if e := findISBN13(f.Name); len(e) == 1 {
- isbn = append(isbn, e[0])
- seen[e[0]] = true
- }
- if ext := filepath.Ext(f.Name); ext != ".html" && ext != ".xhtml" {
- continue
- }
- r, err := f.Open()
- if err != nil {
- panic(err)
- }
- buf, err := ioutil.ReadAll(r)
- if err != nil {
- panic(err)
- }
- for _, v := range findISBN13(string(buf)) {
- if !seen[v] {
- isbn = append(isbn, v)
- seen[v] = true
- }
- }
- }
- fmt.Println(isbn)
- }
- var isbnRe = regexp.MustCompile(`9(?:[ -]?)(?:78|79)(?:[ -]?[0-9]){10}`)
- func findISBN13(txt string) []string {
- isbn := isbnRe.FindAllString(txt, -1)
- r := strings.NewReplacer(" ", "", "-", "")
- for i := range isbn {
- isbn[i] = r.Replace(isbn[i])
- }
- return isbn
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement