4
4
"encoding/json"
5
5
"errors"
6
6
"fmt"
7
+ "net/url"
7
8
"os"
8
9
"reflect"
9
10
"strings"
@@ -345,20 +346,41 @@ func setDeviceID() {
345
346
}
346
347
347
348
// Provider Streaming-URL zu Threadfin Streaming-URL konvertieren
348
- func createStreamingURL (playlistID , channelNumber , channelName , url string , backup_url_1 string , backup_url_2 string , backup_url_3 string ) (streamingURL string , err error ) {
349
+ func createStreamingURL (playlistID , channelNumber , channelName , url_string string , backup_url_1 string , backup_url_2 string , backup_url_3 string ) (streamingURL string , err error ) {
349
350
350
- var streamInfo StreamInfo
351
+ var streamInfo = & StreamInfo {}
351
352
352
353
if len (Data .Cache .StreamingURLS ) == 0 {
353
- Data .Cache .StreamingURLS = make (map [string ]StreamInfo )
354
+ Data .Cache .StreamingURLS = make (map [string ]* StreamInfo )
354
355
}
355
356
356
- var urlID = getMD5 (fmt .Sprintf ("%s-%s" , playlistID , url ))
357
+ var urlID = getMD5 (fmt .Sprintf ("%s-%s" , playlistID , url_string ))
357
358
358
359
if s , ok := Data .Cache .StreamingURLS [urlID ]; ok {
359
360
streamInfo = s
360
361
} else {
361
- streamInfo .URL = url
362
+ streamInfo .HTTP_HEADER = make (map [string ]string )
363
+ u , err := url .Parse (url_string )
364
+ if err != nil {
365
+ return "" , err
366
+ }
367
+ if u .Path == "" {
368
+ return "" , fmt .Errorf ("no path in the url" )
369
+ }
370
+ splittedPath := strings .Split (u .Path , "|" )
371
+ if len (splittedPath ) > 1 {
372
+ headers := strings .Split (splittedPath [1 ], "&" )
373
+ for _ , value := range headers {
374
+ pair := strings .Split (value , "=" )
375
+ if len (pair ) < 2 {
376
+ break
377
+ }
378
+ streamInfo .HTTP_HEADER [pair [0 ]] = pair [1 ]
379
+ }
380
+ streamInfo .URL = strings .Join ([]string {u .Scheme + "://" , u .Host , splittedPath [0 ]}, "" )
381
+ } else {
382
+ streamInfo .URL = url_string
383
+ }
362
384
streamInfo .BackupChannel1URL = backup_url_1
363
385
streamInfo .BackupChannel2URL = backup_url_2
364
386
streamInfo .BackupChannel3URL = backup_url_3
@@ -375,7 +397,7 @@ func createStreamingURL(playlistID, channelNumber, channelName, url string, back
375
397
return
376
398
}
377
399
378
- func getStreamInfo (urlID string ) (streamInfo StreamInfo , err error ) {
400
+ func getStreamInfo (urlID string ) (streamInfo * StreamInfo , err error ) {
379
401
380
402
if len (Data .Cache .StreamingURLS ) == 0 {
381
403
0 commit comments