mirror of
https://github.com/nadimkobeissi/mkbsd.git
synced 2025-04-20 15:56:33 -04:00
implemented the script in Go, little practice while bashing these scammy acts by Marques - Win Win :)
This commit is contained in:
parent
82e50c64f0
commit
4b70b30e3a
1 changed files with 142 additions and 0 deletions
142
mkbsd.go
Normal file
142
mkbsd.go
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
// Licensed under the WTFPL License
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Media struct {
|
||||||
|
Data map[string]struct {
|
||||||
|
DHD string `json:"dhd"`
|
||||||
|
} `json:"data"`
|
||||||
|
}
|
||||||
|
|
||||||
|
var baseURL = "https://storage.googleapis.com/panels-api/data/20240916/media-1a-i-p~s"
|
||||||
|
|
||||||
|
func delay(ms int) {
|
||||||
|
time.Sleep(time.Duration(ms) * time.Millisecond)
|
||||||
|
}
|
||||||
|
|
||||||
|
func downloadImage(imageURL, filePath string) error {
|
||||||
|
resp, err := http.Get(imageURL)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to fetch image: %w", err)
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
if resp.StatusCode != http.StatusOK {
|
||||||
|
return fmt.Errorf("failed to download image: %s", resp.Status)
|
||||||
|
}
|
||||||
|
|
||||||
|
out, err := os.Create(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to create file: %w", err)
|
||||||
|
}
|
||||||
|
defer out.Close()
|
||||||
|
|
||||||
|
_, err = io.Copy(out, resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to write image: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("🖼️ Saved image to %s\n", filePath)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func fetchJSON() (*Media, error) {
|
||||||
|
resp, err := http.Get(baseURL)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to fetch JSON: %w", err)
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
if resp.StatusCode != http.StatusOK {
|
||||||
|
return nil, fmt.Errorf("⛔ Failed to fetch JSON file: %s", resp.Status)
|
||||||
|
}
|
||||||
|
|
||||||
|
var media Media
|
||||||
|
err = json.NewDecoder(resp.Body).Decode(&media)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to decode JSON: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &media, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func asciiArt() {
|
||||||
|
fmt.Println(`
|
||||||
|
/$$ /$$ /$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$$
|
||||||
|
| $$$ /$$$| $$ /$$/| $$__ $$ /$$__ $$| $$__ $$
|
||||||
|
| $$$$ /$$$$| $$ /$$/ | $$ \ $$| $$ \__/| $$ \ $$
|
||||||
|
| $$ $$/$$ $$| $$$$$/ | $$$$$$$ | $$$$$$ | $$ | $$
|
||||||
|
| $$ $$$| $$| $$ $$ | $$__ $$ \____ $$| $$ | $$
|
||||||
|
| $$\ $ | $$| $$\ $$ | $$ \ $$ /$$ \ $$| $$ | $$
|
||||||
|
| $$ \/ | $$| $$ \ $$| $$$$$$$/| $$$$$$/| $$$$$$$/
|
||||||
|
|__/ |__/|__/ \__/|_______/ \______/ |_______/
|
||||||
|
`)
|
||||||
|
fmt.Println("")
|
||||||
|
fmt.Println("🤑 Starting downloads from your favorite sellout grifter's wallpaper app...")
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
asciiArt()
|
||||||
|
|
||||||
|
downloadDir := filepath.Join(".", "downloads")
|
||||||
|
if _, err := os.Stat(downloadDir); os.IsNotExist(err) {
|
||||||
|
err = os.Mkdir(downloadDir, 0755)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Failed to create directory: %v\n", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Printf("📁 Created directory: %s\n", downloadDir)
|
||||||
|
}
|
||||||
|
|
||||||
|
media, err := fetchJSON()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Error fetching JSON: %v\n", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(media.Data) == 0 {
|
||||||
|
fmt.Println("⛔ JSON does not have a 'data' property at its root.")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fileIndex := 1
|
||||||
|
for key, subproperty := range media.Data {
|
||||||
|
if subproperty.DHD != "" {
|
||||||
|
imageURL := subproperty.DHD
|
||||||
|
fmt.Printf("🔍 Found image URL for key: %s\n", key)
|
||||||
|
|
||||||
|
parsedURL, err := url.Parse(imageURL)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Error parsing URL: %v\n", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
ext := filepath.Ext(parsedURL.Path)
|
||||||
|
if ext == "" {
|
||||||
|
ext = ".jpg"
|
||||||
|
}
|
||||||
|
|
||||||
|
fileName := fmt.Sprintf("%d%s", fileIndex, ext)
|
||||||
|
filePath := filepath.Join(downloadDir, fileName)
|
||||||
|
|
||||||
|
err = downloadImage(imageURL, filePath)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Error downloading image: %v\n", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
fileIndex++
|
||||||
|
delay(250)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue