Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "archive/zip"
  5. "fmt"
  6. "io/ioutil"
  7. "os"
  8. "path/filepath"
  9. "regexp"
  10. "strings"
  11. )
  12.  
  13. func main() {
  14. rc, err := zip.OpenReader(os.Args[1])
  15. if err != nil {
  16. panic(err)
  17. }
  18. var isbn []string
  19. seen := map[string]bool{}
  20. for _, f := range rc.File {
  21. if e := findISBN13(f.Name); len(e) == 1 {
  22. isbn = append(isbn, e[0])
  23. seen[e[0]] = true
  24. }
  25. if ext := filepath.Ext(f.Name); ext != ".html" && ext != ".xhtml" {
  26. continue
  27. }
  28. r, err := f.Open()
  29. if err != nil {
  30. panic(err)
  31. }
  32. buf, err := ioutil.ReadAll(r)
  33. if err != nil {
  34. panic(err)
  35. }
  36. for _, v := range findISBN13(string(buf)) {
  37. if !seen[v] {
  38. isbn = append(isbn, v)
  39. seen[v] = true
  40. }
  41. }
  42. }
  43. fmt.Println(isbn)
  44. }
  45.  
  46. var isbnRe = regexp.MustCompile(`9(?:[ -]?)(?:78|79)(?:[ -]?[0-9]){10}`)
  47.  
  48. func findISBN13(txt string) []string {
  49. isbn := isbnRe.FindAllString(txt, -1)
  50. r := strings.NewReplacer(" ", "", "-", "")
  51. for i := range isbn {
  52. isbn[i] = r.Replace(isbn[i])
  53. }
  54. return isbn
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement