This commit is contained in:
Aholicknight 2024-09-28 03:07:56 -06:00 committed by GitHub
commit 6745f1c59d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 108 additions and 59 deletions

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
.DS_Store .DS_Store
downloads downloads
.venv

View file

@ -1,10 +1,11 @@
// Copyright 2024 Nadim Kobeissi // Copyright 2024 Nadim Kobeissi
// Licensed under the WTFPL License // Licensed under the WTFPL License
const fs = require(`fs`); const fs = require('fs');
const path = require(`path`); const path = require('path');
const readline = require('readline');
async function main() { async function main(replaceExisting) {
const url = 'https://storage.googleapis.com/panels-api/data/20240916/media-1a-i-p~s'; const url = 'https://storage.googleapis.com/panels-api/data/20240916/media-1a-i-p~s';
const delay = (ms) => { const delay = (ms) => {
return new Promise(resolve => setTimeout(resolve, ms)); return new Promise(resolve => setTimeout(resolve, ms));
@ -34,7 +35,7 @@ async function main() {
const ext = path.extname(new URL(imageUrl).pathname) || '.jpg'; const ext = path.extname(new URL(imageUrl).pathname) || '.jpg';
const filename = `${fileIndex}${ext}`; const filename = `${fileIndex}${ext}`;
const filePath = path.join(downloadDir, filename); const filePath = path.join(downloadDir, filename);
await downloadImage(imageUrl, filePath); await downloadImage(imageUrl, filePath, replaceExisting);
console.info(`🖼️ Saved image to ${filePath}`); console.info(`🖼️ Saved image to ${filePath}`);
fileIndex++; fileIndex++;
await delay(250); await delay(250);
@ -45,7 +46,11 @@ async function main() {
} }
} }
async function downloadImage(url, filePath) { async function downloadImage(url, filePath, replaceExisting) {
if (!replaceExisting && fs.existsSync(filePath)) {
console.info(`⚠️ File ${filePath} already exists. Skipping download.`);
return;
}
const response = await fetch(url); const response = await fetch(url);
if (!response.ok) { if (!response.ok) {
throw new Error(`Failed to download image: ${response.statusText}`); throw new Error(`Failed to download image: ${response.statusText}`);
@ -69,7 +74,28 @@ function asciiArt() {
console.info(`🤑 Starting downloads from your favorite sellout grifter's wallpaper app...`); console.info(`🤑 Starting downloads from your favorite sellout grifter's wallpaper app...`);
} }
(() => { function promptUser() {
return new Promise((resolve) => {
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Files already exist in the 'downloads' directory.\n1. Skip existing files and download new ones.\n2. Replace existing files and download all.\nEnter your choice (1 or 2): ", (answer) => {
rl.close();
resolve(answer === '2');
});
});
}
(async () => {
asciiArt(); asciiArt();
setTimeout(main, 5000); await new Promise(resolve => setTimeout(resolve, 5000));
const downloadDir = path.join(__dirname, 'downloads');
let replaceExisting = true;
if (fs.existsSync(downloadDir) && fs.readdirSync(downloadDir).length > 0) {
replaceExisting = await promptUser();
}
await main(replaceExisting);
})(); })();

View file

@ -5,13 +5,18 @@ import time
import aiohttp import aiohttp
import asyncio import asyncio
from urllib.parse import urlparse from urllib.parse import urlparse
url = 'https://storage.googleapis.com/panels-api/data/20240916/media-1a-i-p~s' url = 'https://storage.googleapis.com/panels-api/data/20240916/media-1a-i-p~s'
async def delay(ms): async def delay(ms):
await asyncio.sleep(ms / 1000) await asyncio.sleep(ms / 1000)
async def download_image(session, image_url, file_path): async def download_image(session, image_url, file_path, replace_existing):
try: try:
if not replace_existing and os.path.exists(file_path):
print(f"⚠️ File {file_path} already exists. Skipping download.")
return
async with session.get(image_url) as response: async with session.get(image_url) as response:
if response.status != 200: if response.status != 200:
raise Exception(f"Failed to download image: {response.status}") raise Exception(f"Failed to download image: {response.status}")
@ -21,7 +26,7 @@ async def download_image(session, image_url, file_path):
except Exception as e: except Exception as e:
print(f"Error downloading image: {str(e)}") print(f"Error downloading image: {str(e)}")
async def main(): async def main(replace_existing):
try: try:
async with aiohttp.ClientSession() as session: async with aiohttp.ClientSession() as session:
async with session.get(url) as response: async with session.get(url) as response:
@ -48,7 +53,7 @@ async def main():
filename = f"{file_index}{ext}" filename = f"{file_index}{ext}"
file_path = os.path.join(download_dir, filename) file_path = os.path.join(download_dir, filename)
await download_image(session, image_url, file_path) await download_image(session, image_url, file_path, replace_existing)
print(f"🖼️ Saved image to {file_path}") print(f"🖼️ Saved image to {file_path}")
file_index += 1 file_index += 1
@ -70,7 +75,24 @@ def ascii_art():
print("") print("")
print("🤑 Starting downloads from your favorite sellout grifter's wallpaper app...") print("🤑 Starting downloads from your favorite sellout grifter's wallpaper app...")
def prompt_user():
while True:
print("Files already exist in the 'downloads' directory.")
print("1. Skip existing files and download new ones.")
print("2. Replace existing files and download all.")
choice = input("Enter your choice (1 or 2): ")
if choice in ['1', '2']:
return choice == '2'
print("Invalid choice. Please enter 1 or 2.")
if __name__ == "__main__": if __name__ == "__main__":
ascii_art() ascii_art()
time.sleep(5) time.sleep(5)
asyncio.run(main())
download_dir = os.path.join(os.getcwd(), 'downloads')
if os.path.exists(download_dir) and os.listdir(download_dir):
replace_existing = prompt_user()
else:
replace_existing = True
asyncio.run(main(replace_existing))