From d61fb6011fb55a51f749384995203e8f93910ec2 Mon Sep 17 00:00:00 2001 From: itouakirai <85016486+itouakirai@users.noreply.github.com> Date: Wed, 1 May 2024 19:03:30 +0800 Subject: [PATCH] add m3u8txtfile support --- main.go | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 7333ffd..43ec8c1 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "bufio" "bytes" "encoding/binary" "encoding/json" @@ -47,6 +48,7 @@ type Config struct { } var config Config +var txtpath string var oktrackNum int = 0 var trackTotalnum int = 0 @@ -1174,6 +1176,27 @@ func rip(albumId string, token string, storefront string, userToken string) erro oktrackNum += 1 continue } + if txtpath != "" { + file, err := os.Open(txtpath) + if err != nil { + fmt.Println("cant open txt:", err) + } + defer file.Close() + scanner := bufio.NewScanner(file) + for scanner.Scan() { + line := scanner.Text() + if strings.HasPrefix(line, track.ID) { + parts := strings.SplitN(line, ",", 2) + if len(parts) == 2 { + manifest.Attributes.ExtendedAssetUrls.EnhancedHls=parts[1] + fmt.Println("Found m3u8 from txt") + } + } + } + if err := scanner.Err(); err != nil { + fmt.Println(err) + } + } trackUrl, keys, err := extractMedia(manifest.Attributes.ExtendedAssetUrls.EnhancedHls) if err != nil { fmt.Println("Failed to extract info from manifest.\n", err) @@ -1234,10 +1257,20 @@ func main() { for albumNum, url := range os.Args[1:] { fmt.Printf("Album %d of %d:\n", albumNum+1, albumTotal) var storefront, albumId string - if strings.Contains(url, "/playlist/") { - storefront, albumId = checkUrlPlaylist(url) + if strings.Contains(url, ".txt") { + txtpath = url + fileName := filepath.Base(url) + parts := strings.SplitN(fileName, "_", 3) + storefront = parts[0] + albumId = parts[1] } else { - storefront, albumId = checkUrl(url) + if strings.Contains(url, "/playlist/") { + storefront, albumId = checkUrlPlaylist(url) + txtpath = "" + } else { + storefront, albumId = checkUrl(url) + txtpath = "" + } } if albumId == "" {