dl-rename/media.go
2017-09-16 18:03:32 +02:00

83 lines
1.6 KiB
Go

package main
import (
"fmt"
"path/filepath"
"strings"
)
type mediaElement struct {
Directory string
Name string
Episode string
Title string
Tags []string
Extension string
}
func newMediaElement(p string) *mediaElement {
dir := filepath.Dir(p)
name := filepath.Base(p)
ext := filepath.Ext(name)
name = trimSuffix(name, ext)
dash := strings.Index(name, " - ")
episode := ""
if dash != -1 {
episode = name[dash+3:]
name = name[:dash]
}
dash = strings.Index(episode, " - ")
title := ""
if dash != -1 {
title = episode[dash+3:]
episode = episode[:dash]
}
element := &mediaElement{
Directory: dir,
Extension: ext,
Name: name,
Episode: episode,
Title: title,
}
words := strings.Split(title, " ")
titleWords := []string{}
for i := len(words) - 1; i >= 0; i-- {
word := words[i]
switch word {
case "EN":
fallthrough
case "DE":
fallthrough
case "FORCED":
fallthrough
case "3D":
fallthrough
case "UNCUT":
element.Tags = append(element.Tags, word)
default:
titleWords = append(titleWords, word)
}
}
fmt.Printf("%v\n", titleWords)
return element
}
func (element *mediaElement) String() string {
result := ""
result += fmt.Sprintf("Directory: %s\n", element.Directory)
result += fmt.Sprintf("Name: %s\n", element.Name)
result += fmt.Sprintf("Episode: %s\n", element.Episode)
result += fmt.Sprintf("Title: %s\n", element.Title)
result += fmt.Sprintf("Extension: %s\n", element.Extension)
result += "Tags:"
for _, tag := range element.Tags {
result += " " + tag
}
return result
}