From 7ea90844e79c916f67d252ab8ebde58ffb91138d Mon Sep 17 00:00:00 2001 From: Something122 <69728554+Something122@users.noreply.github.com> Date: Tue, 24 Sep 2024 22:47:21 -0400 Subject: [PATCH] Create mkbsd.rb --- mkbsd.rb | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 mkbsd.rb diff --git a/mkbsd.rb b/mkbsd.rb new file mode 100644 index 0000000..a819ab3 --- /dev/null +++ b/mkbsd.rb @@ -0,0 +1,107 @@ +require 'net/http' +require 'json' +require 'fileutils' +require 'uri' + +# Delay function to pause for a given time in milliseconds +def delay(ms) + sleep(ms / 1000.0) +end + +# Function to fetch the JSON data from a given URL +def fetch_json_data(url) + uri = URI(url) + response = Net::HTTP.get_response(uri) + + unless response.is_a?(Net::HTTPSuccess) + raise "⛔ Failed to fetch JSON file: #{response.message}" + end + + json_data = JSON.parse(response.body) + data = json_data['data'] + + raise '⛔ JSON does not have a "data" property at its root.' unless data + + data +end + +# Function to download images from the JSON data +def download_images(data, download_dir) + FileUtils.mkdir_p(download_dir) + puts "📁 Created directory: #{download_dir}" + + file_index = 1 + data.each do |key, subproperty| + next unless subproperty && subproperty['dhd'] + + image_url = subproperty['dhd'] + puts "🔍 Found image URL: #{image_url}" + + delay(100) # Short delay before downloading + + uri = URI(image_url) + + # Ensure a valid extension is used, and fallback to .jpg if no extension is found + ext = File.extname(uri.path) + ext = '.jpg' if ext.empty? + + file_name = "#{file_index}#{ext}" + file_path = File.join(download_dir, file_name) + + download_image(image_url, file_path) + + puts "🖼️ Saved image to #{file_path}" + file_index += 1 + + delay(250) # Delay after saving the image + end +end + +# Function to download an image from a URL and save it to a file +def download_image(url, file_path) + uri = URI(url) + response = Net::HTTP.get_response(uri) + + unless response.is_a?(Net::HTTPSuccess) + raise "Failed to download image: #{response.message}" + end + + # Write the file in binary mode to avoid corruption + File.open(file_path, 'wb') do |file| + file.write(response.body) + end +end + +# ASCII art function for fun +def ascii_art + puts <<~ART + /$$ /$$ /$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$$ + | $$$ /$$$| $$ /$$/| $$__ $$ /$$__ $$| $$__ $$ + | $$$$ /$$$$| $$ /$$/ | $$ \\ $$| $$ \\__/| $$ \\ $$ + | $$ $$/$$ $$| $$$$$/ | $$$$$$$ | $$$$$$ | $$ | $$ + | $$ $$$| $$| $$ $$ | $$__ $$ \\____ $$| $$ | $$ + | $$\\ $ | $$| $$\\ $$ | $$ \\ $$ /$$ \\ $$| $$ | $$ + | $$ \\/ | $$| $$ \\ $$| $$$$$$$/| $$$$$$/| $$$$$$$/ + |__/ |__/|__/ \\__/|_______/ \\______/ |_______/ + ART + + puts "🤑 Starting downloads from your favorite sellout grifter's wallpaper app..." +end + +# Main function that starts the image download process +def main + url = 'https://storage.googleapis.com/panels-api/data/20240916/media-1a-i-p~s' + download_dir = File.join(Dir.pwd, 'downloads') + + begin + data = fetch_json_data(url) + download_images(data, download_dir) + rescue StandardError => e + puts "Error: #{e.message}" + end +end + +# Call the ASCII art function and wait 5 seconds before starting the main process +ascii_art +delay(5000) +main