Compare commits
2 Commits
v1.0.5
..
d6b133a8e0
| Author | SHA1 | Date | |
|---|---|---|---|
|
d6b133a8e0
|
|||
|
c9486c54b2
|
+1
-1
@@ -14,7 +14,7 @@ import (
|
|||||||
"github.com/redis/go-redis/v9"
|
"github.com/redis/go-redis/v9"
|
||||||
)
|
)
|
||||||
|
|
||||||
const VERSION = "1.0.5"
|
const VERSION = "1.0.6"
|
||||||
|
|
||||||
// Arguments описывает аргументы командной строки
|
// Arguments описывает аргументы командной строки
|
||||||
type Arguments struct {
|
type Arguments struct {
|
||||||
|
|||||||
+21
-10
@@ -106,17 +106,28 @@ func parseAttributes(line string) map[string]string {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseName парсит название канала из строки тега #EXTINF
|
// parseTitle парсит название канала из строки тега #EXTINF
|
||||||
func parseName(line string) string {
|
func parseTitle(line string) string {
|
||||||
//TODO https://git.axenov.dev/IPTV/iptvc/issues/7
|
// сначала пытаемся по-доброму: в строке есть тег, могут быть атрибуты,
|
||||||
parts := strings.Split(line, ",")
|
// есть запятая-разделитель, после неё -- название канала (с запятыми или без)
|
||||||
if len(parts) == 2 {
|
|
||||||
return strings.Trim(parts[1], " ")
|
|
||||||
}
|
|
||||||
|
|
||||||
regex := regexp.MustCompile(`['"]?\s*,\s*(.+)`)
|
regex := regexp.MustCompile(`['"]?\s*,\s*(.+)`)
|
||||||
regexMatches := regex.FindAllStringSubmatch(line, -1)
|
regexMatches := regex.FindAllStringSubmatch(line, -1)
|
||||||
return regexMatches[0][1]
|
if len(regexMatches) > 0 && len(regexMatches[0]) >= 2 {
|
||||||
|
return strings.TrimSpace(regexMatches[0][1])
|
||||||
|
}
|
||||||
|
|
||||||
|
// теперь пытаемся хоть как-то: в строке есть тег, могут быть атрибуты,
|
||||||
|
// НЕТ запятой-разделителя и название канала (с запятыми или без)
|
||||||
|
lastQuotePos := strings.LastIndexAny(line, `,"'`)
|
||||||
|
if lastQuotePos != -1 && lastQuotePos < len(line)-1 {
|
||||||
|
afterLastQuote := line[lastQuotePos+1:]
|
||||||
|
name := strings.TrimSpace(afterLastQuote)
|
||||||
|
if name != "" {
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return line // ну штош
|
||||||
}
|
}
|
||||||
|
|
||||||
// Download загружает плейлист по URL-адресу
|
// Download загружает плейлист по URL-адресу
|
||||||
@@ -170,7 +181,7 @@ func (pls *Playlist) Parse() Playlist {
|
|||||||
if strings.HasPrefix(line, "#EXTINF") {
|
if strings.HasPrefix(line, "#EXTINF") {
|
||||||
isChannel = true
|
isChannel = true
|
||||||
tmpChannel.Attributes = parseAttributes(line)
|
tmpChannel.Attributes = parseAttributes(line)
|
||||||
tmpChannel.Title = parseName(line)
|
tmpChannel.Title = parseTitle(line)
|
||||||
|
|
||||||
if tmpChannel.Title == "" {
|
if tmpChannel.Title == "" {
|
||||||
if tvgid, ok := tmpChannel.Attributes["tvg-id"]; ok {
|
if tvgid, ok := tmpChannel.Attributes["tvg-id"]; ok {
|
||||||
|
|||||||
Reference in New Issue
Block a user