コード例 #1
0
ファイル: LecteurScripts.go プロジェクト: Canop/braldop
// implémentation de filepath.Visitor
func (ls *LecteurScripts) VisitFile(path string, f os.FileInfo) {
	pathToken := strings.Split(path, "/")
	if strings.HasSuffix(path, ".csv") {
		f, err := os.Open(path)
		if err != nil {
			return
		}
		defer f.Close()
		r := bufio.NewReader(f)
		switch pathToken[len(pathToken)-1] {
		case "bralduns.csv":
			bra.ParseFichierCsvStatique(r, ls.MemMap, func() bra.Visible { return new(bra.Braldun) })
		case "communautes.csv":
			bra.ParseFichierCsvStatique(r, ls.MemMap, func() bra.Visible { return new(bra.Communauté) })
		case "lieux_villes.csv":
			bra.ParseFichierCsvStatique(r, ls.MemMap, func() bra.Visible { return new(bra.LieuVille) })
		case "regions.csv":
			bra.ParseFichierCsvStatique(r, ls.MemMap, func() bra.Visible { return new(bra.Région) })
		case "villes.csv":
			bra.ParseFichierCsvStatique(r, ls.MemMap, func() bra.Visible { return new(bra.Ville) })
		default:
			vue, _ := bra.ParseFichierCsvDynamique(r, ls.readTimeFromFilePath(pathToken), ls.MemMap, ls.verbose)
			ls.NbReadFiles++
			if vue != nil {
				//~ fmt.Printf("    -> vue : %+v\n", vue)
				if vue.Voyeur > 0 && vue.Time > 0 {
					if ls.MemMap.DernièresVues[vue.Voyeur] == nil || vue.Time > ls.MemMap.DernièresVues[vue.Voyeur].Time {
						ls.MemMap.DernièresVues[vue.Voyeur] = vue
					}
				}
			}
		}
	}
}
コード例 #2
0
ファイル: scan.go プロジェクト: etaws/go_exif_statistics
func visit(path string, f os.FileInfo, err error) error {
	if f.IsDir() {
		fmt.Printf("dir: %s\n", path)
	} else {
		file_size := f.Size()

		f, err := os.Open(path)
		if err != nil {
			log.Fatal(err)
		}
		x, err := exif.Decode(f)
		f.Close()
		if err != nil {
			log.Fatal(err)
		}

		date, _ := x.Get("DateTimeOriginal")
		fmt.Printf("%s\t", date.StringVal())

		expo, _ := x.Get("ExposureTime")
		n0, d0 := expo.Rat2(0)
		fmt.Printf("%v/%v\t", n0, d0)

		fnumber, _ := x.Get("FNumber")
		n1, d1 := fnumber.Rat2(0)
		fmt.Printf("%v/%v\t", n1, d1)

		focal, _ := x.Get("FocalLength")
		n2, d2 := focal.Rat2(0)
		fmt.Printf("%v/%v\t", n2, d2)

		iso, _ := x.Get("ISOSpeedRatings")
		if iso != nil {
			fmt.Printf("%v\t", iso.Int(0))
		} else {
			fmt.Printf("noiso\t")
		}

		fmt.Printf("%s\t%d\n", path, file_size)
	}
	return nil
}