|
19 | 19 | package server
|
20 | 20 |
|
21 | 21 | import (
|
| 22 | + "bytes" |
22 | 23 | "fmt"
|
| 24 | + "log" |
23 | 25 | "net/url"
|
24 | 26 | "os"
|
25 | 27 | "strings"
|
@@ -97,23 +99,25 @@ func (c *Config) playlistInitialization() error {
|
97 | 99 | func (c *Config) marshallInto(into *os.File, xtream bool) error {
|
98 | 100 | into.WriteString("#EXTM3U\n") // nolint: errcheck
|
99 | 101 | for _, track := range c.playlist.Tracks {
|
100 |
| - into.WriteString("#EXTINF:") // nolint: errcheck |
101 |
| - into.WriteString(fmt.Sprintf("%d ", track.Length)) // nolint: errcheck |
| 102 | + var buffer bytes.Buffer |
| 103 | + |
| 104 | + buffer.WriteString("#EXTINF:") // nolint: errcheck |
| 105 | + buffer.WriteString(fmt.Sprintf("%d ", track.Length)) // nolint: errcheck |
102 | 106 | for i := range track.Tags {
|
103 | 107 | if i == len(track.Tags)-1 {
|
104 |
| - into.WriteString(fmt.Sprintf("%s=%q", track.Tags[i].Name, track.Tags[i].Value)) // nolint: errcheck |
| 108 | + buffer.WriteString(fmt.Sprintf("%s=%q", track.Tags[i].Name, track.Tags[i].Value)) // nolint: errcheck |
105 | 109 | continue
|
106 | 110 | }
|
107 |
| - into.WriteString(fmt.Sprintf("%s=%q ", track.Tags[i].Name, track.Tags[i].Value)) // nolint: errcheck |
| 111 | + buffer.WriteString(fmt.Sprintf("%s=%q ", track.Tags[i].Name, track.Tags[i].Value)) // nolint: errcheck |
108 | 112 | }
|
109 |
| - into.WriteString(", ") // nolint: errcheck |
110 | 113 |
|
111 | 114 | uri, err := c.replaceURL(track.URI, xtream)
|
112 | 115 | if err != nil {
|
113 |
| - return err |
| 116 | + log.Printf("ERROR: track: %s: %s", track.Name, err) |
| 117 | + continue |
114 | 118 | }
|
115 | 119 |
|
116 |
| - into.WriteString(fmt.Sprintf("%s\n%s\n", track.Name, uri)) // nolint: errcheck |
| 120 | + into.WriteString(fmt.Sprintf("%s, %s\n%s\n", buffer.String(), track.Name, uri)) // nolint: errcheck |
117 | 121 | }
|
118 | 122 |
|
119 | 123 | return into.Sync()
|
|
0 commit comments