Compare commits
No commits in common. "f014b06f887b8b53720a410466809fd923937682" and "6b24eb7e07c3e23a516f99f99ddb68b1d1dcd912" have entirely different histories.
f014b06f88
...
6b24eb7e07
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
config.toml
|
|
8
go.mod
8
go.mod
@ -3,11 +3,3 @@ module DRMDTool
|
|||||||
go 1.23.0
|
go 1.23.0
|
||||||
|
|
||||||
require github.com/BurntSushi/toml v1.4.0
|
require github.com/BurntSushi/toml v1.4.0
|
||||||
|
|
||||||
require (
|
|
||||||
github.com/asticode/go-astikit v0.20.0 // indirect
|
|
||||||
github.com/asticode/go-astisub v0.26.2 // indirect
|
|
||||||
github.com/asticode/go-astits v1.8.0 // indirect
|
|
||||||
golang.org/x/net v0.0.0-20200904194848-62affa334b73 // indirect
|
|
||||||
golang.org/x/text v0.3.2 // indirect
|
|
||||||
)
|
|
||||||
|
25
go.sum
25
go.sum
@ -1,27 +1,2 @@
|
|||||||
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
|
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
|
||||||
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||||
github.com/asticode/go-astikit v0.20.0 h1:+7N+J4E4lWx2QOkRdOf6DafWJMv6O4RRfgClwQokrH8=
|
|
||||||
github.com/asticode/go-astikit v0.20.0/go.mod h1:h4ly7idim1tNhaVkdVBeXQZEE3L0xblP7fCWbgwipF0=
|
|
||||||
github.com/asticode/go-astisub v0.26.2 h1:cdEXcm+SUSmYCEPTQYbbfCECnmQoIFfH6pF8wDJhfVo=
|
|
||||||
github.com/asticode/go-astisub v0.26.2/go.mod h1:WTkuSzFB+Bp7wezuSf2Oxulj5A8zu2zLRVFf6bIFQK8=
|
|
||||||
github.com/asticode/go-astits v1.8.0 h1:rf6aiiGn/QhlFjNON1n5plqF3Fs025XLUwiQ0NB6oZg=
|
|
||||||
github.com/asticode/go-astits v1.8.0/go.mod h1:DkOWmBNQpnr9mv24KfZjq4JawCFX1FCqjLVGvO0DygQ=
|
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
||||||
github.com/pkg/profile v1.4.0/go.mod h1:NWz/XGvpEW1FyYQ7fCx4dqYBLlfTcE+A9FLAkNKqjFE=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
|
||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
||||||
golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA=
|
|
||||||
golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
|
||||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
||||||
|
63
main.go
63
main.go
@ -19,7 +19,6 @@ import (
|
|||||||
"embed"
|
"embed"
|
||||||
|
|
||||||
"github.com/BurntSushi/toml"
|
"github.com/BurntSushi/toml"
|
||||||
"github.com/asticode/go-astisub"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Item struct {
|
type Item struct {
|
||||||
@ -63,7 +62,6 @@ type ProgressInfo struct {
|
|||||||
|
|
||||||
var templates *template.Template
|
var templates *template.Template
|
||||||
|
|
||||||
//go:embed templates
|
|
||||||
var templateFS embed.FS
|
var templateFS embed.FS
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -321,22 +319,12 @@ func downloadFile(item Item) error {
|
|||||||
|
|
||||||
command := getDownloadCommand(item, mpdPath)
|
command := getDownloadCommand(item, mpdPath)
|
||||||
|
|
||||||
subtitlePaths, err := downloadAndConvertSubtitles(item.Subtitles)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Printf("Error processing subtitles: %v\n", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, path := range subtitlePaths {
|
|
||||||
fmt.Println("Adding subtitle:", path)
|
|
||||||
command += fmt.Sprintf(" --mux-import \"path=%s:lang=nl:name=Nederlands\"", path)
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd := exec.Command("bash", "-c", command)
|
cmd := exec.Command("bash", "-c", command)
|
||||||
|
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
|
|
||||||
err = cmd.Run()
|
err := cmd.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error executing download command: %v", err)
|
return fmt.Errorf("error executing download command: %v", err)
|
||||||
}
|
}
|
||||||
@ -345,55 +333,6 @@ func downloadFile(item Item) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func downloadAndConvertSubtitles(subtitlesURLs string) ([]string, error) {
|
|
||||||
var subtitlePaths []string
|
|
||||||
urls := strings.Split(subtitlesURLs, ",")
|
|
||||||
|
|
||||||
for _, url := range urls {
|
|
||||||
vttPath, err := downloadSubtitle(url)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("error downloading subtitle: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
srtPath, err := convertVTTtoSRT(vttPath)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("error converting subtitle: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
subtitlePaths = append(subtitlePaths, srtPath)
|
|
||||||
}
|
|
||||||
|
|
||||||
return subtitlePaths, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func downloadSubtitle(url string) (string, error) {
|
|
||||||
resp, err := http.Get(url)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
|
|
||||||
tempFile, err := os.CreateTemp("", "subtitle_*.vtt")
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
defer tempFile.Close()
|
|
||||||
|
|
||||||
_, err = io.Copy(tempFile, resp.Body)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
return tempFile.Name(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func convertVTTtoSRT(vttPath string) (string, error) {
|
|
||||||
srtPath := strings.TrimSuffix(vttPath, ".vtt") + ".srt"
|
|
||||||
s1, _ := astisub.OpenFile(vttPath)
|
|
||||||
s1.Write(srtPath)
|
|
||||||
return srtPath, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func isValidURL(toTest string) bool {
|
func isValidURL(toTest string) bool {
|
||||||
_, err := url.ParseRequestURI(toTest)
|
_, err := url.ParseRequestURI(toTest)
|
||||||
return err == nil
|
return err == nil
|
||||||
|
Loading…
Reference in New Issue
Block a user