func TestScraper(t *testing.T) { // look for mediagui.conf at the following places // $HOME/.mediagui/mediagui.conf // /usr/local/etc/mediagui.conf // <current dir>/mediagui.conf home := os.Getenv("HOME") cwd, err := os.Getwd() if err != nil { log.Printf("Unable to get current directory: %s", err.Error()) os.Exit(1) } locations := []string{ filepath.Join(home, ".mediagui/mediagui.conf"), "/usr/local/etc/mediagui.conf", filepath.Join(cwd, "mediagui.conf"), } settings, err := lib.NewSettings(Version, home, locations) if err != nil { log.Printf("Unable to start the app: %s", err.Error()) os.Exit(2) } mlog.Start(mlog.LevelInfo, "") mlog.Info("mediagui v%s starting ...", Version) bus := pubsub.New(623) dal := services.NewDal(bus, settings) // socket.Start() dal.Start() movie := &model.Movie{ Location: "wopr:/mnt/user/films/xvid/Visitor Q (2001)/ils-visitorq.avi", } check := &pubsub.Message{Payload: movie, Reply: make(chan interface{}, 3)} bus.Pub(check, "/command/movie/exists") reply := <-check.Reply exists := reply.(bool) if exists { mlog.Info("SKIPPED: exists [%s] (%s)", movie.Title, movie.Location) } else { mlog.Info("NEW: [%s] (%s)", movie.Title, movie.Location) // c.bus.Pub(msg, "/command/movie/scrape") } // mlog.Info("Press Ctrl+C to stop ...") // c := make(chan os.Signal, 1) // signal.Notify(c, os.Interrupt) // for _ = range c { // mlog.Info("Received an interrupt, shutting the app down ...") dal.Stop() // break // } }
func main() { // look for mediagui.conf at the following places // $HOME/.mediagui/mediagui.conf // /usr/local/etc/mediagui.conf // <current dir>/mediagui.conf home := os.Getenv("HOME") cwd, err := os.Getwd() if err != nil { log.Printf("Unable to get current directory: %s", err.Error()) os.Exit(1) } locations := []string{ filepath.Join(home, ".mediagui/mediagui.conf"), "/usr/local/etc/mediagui.conf", filepath.Join(cwd, "mediagui.conf"), } settings, err := lib.NewSettings(Version, home, locations) if err != nil { log.Printf("Unable to start the app: %s", err.Error()) os.Exit(2) } if settings.CpuProfile != "" { f, err := os.Create(settings.CpuProfile) if err != nil { log.Printf("Unable to set up profiling: %s", err) os.Exit(3) } pprof.StartCPUProfile(f) defer pprof.StopCPUProfile() } if settings.LogDir != "" { mlog.Start(mlog.LevelInfo, filepath.Join(settings.LogDir, "mediagui.log")) } else { mlog.Start(mlog.LevelInfo, "") } mlog.Info("mediagui v%s starting ...", Version) mlog.Info("using config file located at %s", settings.Location) bus := pubsub.New(8623) dal := services.NewDal(bus, settings) socket := services.NewSocket(bus, settings) server := services.NewServer(bus, settings) scanner := services.NewScanner(bus, settings) scraper := services.NewScraper(bus, settings) cache := services.NewCache(bus, settings) core := services.NewCore(bus, settings) dal.Start() socket.Start() server.Start() scanner.Start() scraper.Start() cache.Start() core.Start() mlog.Info("Press Ctrl+C to stop ...") c := make(chan os.Signal, 1) signal.Notify(c, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL) mlog.Info("Received signal: (%s) ... shutting down the app now ...", <-c) core.Stop() cache.Stop() scraper.Stop() scanner.Stop() server.Stop() socket.Stop() dal.Stop() mlog.Stop() }