diff --git a/ZiniGo/main.go b/ZiniGo/main.go index 00bb944..bb4a44f 100644 --- a/ZiniGo/main.go +++ b/ZiniGo/main.go @@ -10,12 +10,14 @@ import ( "github.com/pdfcpu/pdfcpu/pkg/api" "github.com/playwright-community/playwright-go" "github.com/tidwall/gjson" + "github.com/tidwall/sjson" "io/ioutil" "log" "math/rand" "net/http" "os" "os/exec" + "path/filepath" "regexp" "strconv" "strings" @@ -40,6 +42,7 @@ func main() { zinioHostPtr := flag.String("e", "api-sec.ziniopro.com", "Zinio Host (Excluding port and URI Scheme). Known: `api-sec`, `api-sec-2`") exportUsingWKHTML := flag.String("wkhtml", "false", "Use WKHTML instead of Chrome to generate PDF (false by default)") exportUsingPlaywright := flag.String("playwright", "false", "Use Playwright Chromium instead of local Chrome to generate PDF (false by default)") + deviceFingerprintPtr := flag.String("fingerprint", "abcd123", "This devices fingerprint - presented to Zinio API") flag.Parse() @@ -69,6 +72,20 @@ func main() { fmt.Println("chromepath taken from config file") } + fingerprint := gjson.GetBytes(byteValue, "fingerprint") + if fingerprint.Exists() { + *deviceFingerprintPtr = fingerprint.String() + fmt.Println("Fingerprint taken from config file") + } else { + fmt.Println("No fingerprint found in text file, generating and writing") + newJson, _ := sjson.Set(string(byteValue), "fingerprint", randSeq(15)) + + err := ioutil.WriteFile("config.json", []byte(newJson), 0644) + if err != nil { + log.Fatalf("unable to write file: %v", err) + } + } + } //fmt.Println("Starting the application...") @@ -76,7 +93,7 @@ func main() { //if err != nil { // os.Exit(1) //} - loginToken := GetLoginToken(*usernamePtr, *passwordPtr) + loginToken := GetLoginToken(*usernamePtr, *passwordPtr, *deviceFingerprintPtr) issues := GetLibrary(loginToken, *zinioHostPtr) for i := range issues { issueList := issues[i] @@ -93,17 +110,19 @@ func main() { fmt.Println("Resolved working directory to: " + mydir) //fmt.Println("Grabbing list of pages...") - if _, err := os.Stat(mydir + "/issue/"); os.IsNotExist(err) { - os.Mkdir(mydir+"/issue/", 0600) + issueDirectory := filepath.Join(mydir, "issue") + if _, err := os.Stat(issueDirectory); os.IsNotExist(err) { + os.Mkdir(issueDirectory, 0600) } for _, issue := range issueList.Data { - issuePath := mydir + "/issue/" + strconv.Itoa(issue.Id) + fmt.Println(issue) + issuePath := filepath.Join(issueDirectory, strconv.Itoa(issue.Id)) publicationName := RemoveBadCharacters(issue.Publication.Name) issueName := RemoveBadCharacters(issue.Name) - completeName := mydir + "/issue/" + publicationName + " - " + issueName + ".pdf" + completeName := filepath.Join(issueDirectory, publicationName+" - "+issueName+".pdf") fmt.Println("Checking if issue exists: " + completeName) if fileExists(completeName) { fmt.Println("Issue already found: " + completeName) @@ -273,13 +292,13 @@ func GetInitialToken() (token string, err error) { return string(found[2]), nil } -func GetLoginToken(username string, password string) LoginResponse { +func GetLoginToken(username string, password string, fingerprint string) LoginResponse { fmt.Println("GettingLogin") client := &http.Client{} - var jsonStr = []byte(`{"username":"` + username + `","password":"` + password + `","device":{"name":"Windows Chrome","fingerprint":"` + randSeq(32) + `","device_type":"Desktop","client_type":"Web"},"newsstand":{"currency":"ZAR","id":134,"country":"ZA","name":"South Africa","cc":"za","localeCode":"en_ZA","userLang":"en_ZA","userCountry":"ZA","userCurrency":"ZAR","requiresCookies":true,"requiresExplicitConsent":true,"requiresAdultConfirmation":true,"adWords":{"id":1,"label":""},"isDefaultNewsstand":false}}`) - //fmt.Println(string(jsonStr)) + var jsonStr = []byte(`{"email":"` + username + `","password":"` + password + `","device":{"name":"Windows Chrome","fingerprint":"` + fingerprint + `","device_type":"Desktop","client_type":"Web"},"newsstand":{"currency":"ZAR","id":134,"country":"ZA","name":"South Africa","cc":"za","localeCode":"en_ZA","userLang":"en_ZA","userCountry":"ZA","userCurrency":"ZAR","requiresCookies":true,"requiresExplicitConsent":true,"requiresAdultConfirmation":true,"adWords":{"id":1,"label":""},"isDefaultNewsstand":false}}`) + fmt.Println(string(jsonStr)) req, _ := http.NewRequest("POST", "https://www.zinio.com/api/login?project=99&logger=null", bytes.NewBuffer(jsonStr)) diff --git a/buildscripts/darwin.sh b/buildscripts/darwin.sh index 1f940f4..0953e8c 100644 --- a/buildscripts/darwin.sh +++ b/buildscripts/darwin.sh @@ -3,18 +3,27 @@ set GOARCH=amd64 cd .. go build -v -o built/Zinigo_Windows_x64.exe Zinigo/main.go cd buildscripts + +set GOOS=windows +set GOARCH=386 +cd .. +go build -o built/Zinigo_Windows_x86.exe Zinigo/main.go +cd buildscripts + set GOOS=linux set GOARCH=amd64 cd .. go build -o built/Zinigo_Linux_AMD64 Zinigo/main.go cd buildscripts + set GOOS=darwin set GOARCH=amd64 cd .. -go build -o built/Zinigo_Macos_AMD64 Zinigo/main.go +go build -o built/Zinigo_Macos_Intel Zinigo/main.go cd buildscripts -set GOOS=windows -set GOARCH=386 + +set GOOS=darwin +set GOARCH=arm64 cd .. -go build -o built/Zinigo_Windows.exe Zinigo/main.go +go build -o built/Zinigo_Macos_AppleSilicon Zinigo/main.go cd buildscripts diff --git a/built/Zinigo_Linux_AMD64 b/built/Zinigo_Linux_AMD64 index 8d7b056..0b7490f 100755 Binary files a/built/Zinigo_Linux_AMD64 and b/built/Zinigo_Linux_AMD64 differ diff --git a/built/Zinigo_Macos_AMD64 b/built/Zinigo_Macos_AMD64 deleted file mode 100755 index 5b72abb..0000000 Binary files a/built/Zinigo_Macos_AMD64 and /dev/null differ diff --git a/built/Zinigo_Macos_AppleSilicon b/built/Zinigo_Macos_AppleSilicon old mode 100644 new mode 100755 index 04a3725..0b7490f Binary files a/built/Zinigo_Macos_AppleSilicon and b/built/Zinigo_Macos_AppleSilicon differ diff --git a/built/Zinigo_Macos_Intel b/built/Zinigo_Macos_Intel old mode 100644 new mode 100755 index 7950a76..0b7490f Binary files a/built/Zinigo_Macos_Intel and b/built/Zinigo_Macos_Intel differ diff --git a/built/Zinigo_Windows_x64.exe b/built/Zinigo_Windows_x64.exe index 3602ee2..0b7490f 100755 Binary files a/built/Zinigo_Windows_x64.exe and b/built/Zinigo_Windows_x64.exe differ diff --git a/built/Zinigo_Windows_x86.exe b/built/Zinigo_Windows_x86.exe old mode 100644 new mode 100755 index 364ccee..0b7490f Binary files a/built/Zinigo_Windows_x86.exe and b/built/Zinigo_Windows_x86.exe differ diff --git a/go.mod b/go.mod index 2d9dde4..8cb9e2b 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,8 @@ require ( github.com/icza/gox v0.0.0-20220921190100-610a6663952b github.com/pdfcpu/pdfcpu v0.3.13 github.com/playwright-community/playwright-go v0.2000.1 - github.com/tidwall/gjson v1.14.3 + github.com/tidwall/gjson v1.16.0 + github.com/tidwall/sjson v1.2.5 ) require ( @@ -18,7 +19,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb // indirect golang.org/x/text v0.3.6 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect diff --git a/go.sum b/go.sum index 9fcb505..4d1232e 100644 --- a/go.sum +++ b/go.sum @@ -32,12 +32,16 @@ github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUA github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/tidwall/gjson v1.14.3 h1:9jvXn7olKEHU1S9vwoMGliaT8jq1vJ7IH/n9zD9Dnlw= -github.com/tidwall/gjson v1.14.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.16.0 h1:SyXa+dsSPpUlcwEDuKuEBJEz5vzTvOea+9rjyYodQFg= +github.com/tidwall/gjson v1.16.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= golang.org/x/image v0.0.0-20190823064033-3a9bac650e44/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb h1:fqpd0EBDzlHRCjiphRR5Zo/RSWWQlWv34418dnEixWk= golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=