예제 #1
0
파일: main.go 프로젝트: crown-hill/goutils
func main() {
	fmt.Println("Hot!")

	if folder == "" {
		folder = "C:\\Users\\David\\HotFolder"
	}

	ctx := context.Background()

	hf := new(fs.HotFolder)
	hf.Path = folder
	hf.PollInterval = time.Second * 5
	hf.MinAge = time.Second * 1
	hf.MonitorErrors = make(chan error)
	hf.ChangeNotifications = make(chan fs.HotfolderChangeNotification)

	hf.Ctx = ctx

	go hf.Monitor()

	log.Println("Listening to notifications from the HotFolder...")

	for {
		select {
		case walkErr := <-hf.MonitorErrors:
			log.Println(walkErr.Error())
			return
		case changes := <-hf.ChangeNotifications:
			log.Printf("Got notification of %d changes.", len(changes))

			for i, f := range changes {
				log.Printf("\t%d %s del: %v", i, f.Path, f.Removed)
			}
		}
	}

}
예제 #2
0
파일: main.go 프로젝트: crown-hill/goutils
func main() {
	fmt.Println("Hot!")

	if hotfolder == "" {
		hotfolder = "P:\\Dropbox\\SidesPartyPhotos" //"C:\\Users\\David\\HotFolder"
	}

	if workfolder == "" {
		workfolder = "C:\\Users\\David\\WorkFolder"
	}

	if thumbFolder == "" {
		thumbFolder = "C:\\Users\\David\\go\\src\\github.com\\crown-hill\\goutils\\partyboard\\websrc\\slideshow"
	}

	thumbSize = 1600

	ctx := context.Background()

	hf := new(fs.HotFolder)
	hf.Path = hotfolder
	hf.PollInterval = time.Second * 5
	hf.MinAge = time.Second * 1
	hf.MonitorErrors = make(chan error)
	hf.ChangeNotifications = make(chan fs.HotfolderChangeNotification)

	hf.Ctx = ctx

	thumbnailQueue := make(chan *fs.HotFolderChange, 100)

	go func() {

		for {
			select {
			case change := <-thumbnailQueue:

				workPath := change.Path

				if moveFiles {
					workPath := filepath.Join(workfolder, change.FileInfo.Name())
					err := os.Rename(change.Path, workPath)
					if err != nil {
						log.Println("Error moving %s %s", change.Path, err.Error())
						break
					}
				}

				thumbName := change.FileInfo.Name() + "-thumb.jpg"
				thumbPath := filepath.Join(thumbFolder, thumbName)

				sizeArg := fmt.Sprintf("%d,%d", thumbSize, thumbSize)

				_, _, err := runCrValidate("-jpg", thumbPath, "-maxImagesize", sizeArg, workPath)
				if err != nil {
					log.Println("Error thumbnailing %s %s", change.Path, err.Error())
					break
				}

			}
		}

	}()

	go hf.Monitor()

	log.Println("Listening to notifications from the HotFolder...")

	for {
		select {
		case walkErr := <-hf.MonitorErrors:
			log.Println(walkErr.Error())
			return
		case changes := <-hf.ChangeNotifications:
			log.Printf("Got notification of %d changes.", len(changes))

			for _, f := range changes {
				//log.Printf("\t%d %s del: %v", i, f.Path, f.Removed)
				if f.Removed == false {
					thumbnailQueue <- f
				}
			}
		}
	}

}