Init
This commit is contained in:
commit
bcb6c0f388
102
main.go
Normal file
102
main.go
Normal file
|
@ -0,0 +1,102 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
absBasePath = "/opt/synapse/download"
|
||||
seriesPath = absBasePath + "/series"
|
||||
filmPath = absBasePath + "/film"
|
||||
musicPath = absBasePath + "/music"
|
||||
programsPath = absBasePath + "/programs"
|
||||
)
|
||||
const (
|
||||
series = iota
|
||||
film
|
||||
music
|
||||
program
|
||||
)
|
||||
|
||||
var maybeSeries, maybeFilm, maybeMusic, maybeProgram *regexp.Regexp
|
||||
var errYetPresent = errors.New("element yet present")
|
||||
|
||||
type classification map[string]int
|
||||
|
||||
func (c classification) add(element string, kind int) error {
|
||||
if _, ok := c[element]; ok {
|
||||
return errYetPresent
|
||||
}
|
||||
c[element] = kind
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c classification) get(element string) (string, bool) {
|
||||
kind, ok := c[element]
|
||||
if !ok {
|
||||
return "", false
|
||||
}
|
||||
switch kind {
|
||||
case series:
|
||||
return "series", true
|
||||
case film:
|
||||
return "film", true
|
||||
case music:
|
||||
return "music", true
|
||||
case program:
|
||||
return "program", true
|
||||
default:
|
||||
panic(fmt.Sprintf("kind value now allowed: %d\n", kind))
|
||||
}
|
||||
}
|
||||
|
||||
var cls classification
|
||||
|
||||
func init() {
|
||||
maybeSeries = regexp.MustCompile(`(?i)^.*(((s|S)(\d+)((e|E)(\d+))?)|((season)(\ )?(\d+)?)).*\.(mkv|mp4|avi)$`)
|
||||
maybeFilm = regexp.MustCompile(`(?i)^.*\.(mkv|mp4|avi)$`)
|
||||
maybeMusic = regexp.MustCompile(`(?i)^.*\.(mp3|ogg|flac)$`)
|
||||
maybeProgram = regexp.MustCompile(`(?i)^.*\.(zip|tar|tar\.gz|exe|msi|rar)$`)
|
||||
cls = make(classification)
|
||||
}
|
||||
|
||||
func isInSpecialDir(dir string) bool {
|
||||
if strings.Contains(dir, seriesPath) {
|
||||
return true
|
||||
}
|
||||
if strings.Contains(dir, filmPath) {
|
||||
return true
|
||||
}
|
||||
if strings.Contains(dir, musicPath) {
|
||||
return true
|
||||
}
|
||||
if strings.Contains(dir, programsPath) {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func find(name string, info fs.FileInfo, err error) error {
|
||||
// skip directories
|
||||
if info.IsDir() {
|
||||
return nil
|
||||
}
|
||||
// skip special directories
|
||||
if isInSpecialDir(name) {
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
fmt.Println("vim-go")
|
||||
}
|
Loading…
Reference in New Issue
Block a user