Files
iptv/main.go
Michael Lehmann 236970f477 Init
2024-12-20 21:56:58 +01:00

59 lines
1.2 KiB
Go

package main
import (
"flag"
"fmt"
"regexp"
"os"
)
func main() {
providerUrl := os.Getenv("IPTV_URL")
userHome, err := GetCurrentUserHomeDir()
if err != nil {
panic("failed to findout user home.")
}
filePath := fmt.Sprintf("%s/.local/iptv/channels.m3u", userHome)
searchPattern := flag.String("s", "", "channel search pattern")
updateChannels := flag.Bool("d", false, "update channel file")
flag.Parse()
if *updateChannels {
fmt.Println("updating channels...")
err := download(providerUrl, filePath)
if err != nil {
fmt.Println(err)
return
}
}
channels, err := parseChannels(filePath)
if err != nil {
fmt.Println(err)
return
}
regexPattern := regexp.MustCompile(fmt.Sprintf("(?i)%s", *searchPattern))
searchResults := make([]Channel, 0)
for _, channel := range channels {
if regexPattern.MatchString(channel.Name) {
searchResults = append(searchResults, channel)
}
}
for i, channel := range searchResults {
fmt.Println(i, "->", channel.Name)
}
var channelNumber int
fmt.Print("Channel Number: ")
_, err = fmt.Scanf("%d", &channelNumber)
fmt.Printf("Selected Channel: %s\n", searchResults[channelNumber].Name)
copyToClipboard(searchResults[channelNumber].Url)
}