diff --git a/sparkytron3000.py b/sparkytron3000.py index 838a80b..2808750 100644 --- a/sparkytron3000.py +++ b/sparkytron3000.py @@ -592,72 +592,80 @@ async def meme(ctx): async def update_meme_webpage(filename): server_folder = os.getenv('ftp_ai_memes') client = aioftp.Client() - await client.connect(ftp_server) - await client.login(ftp_username, ftp_password) - await client.change_directory(server_folder) - server_files = await client.list() + try: - file_count = len(server_files) - except: - file_count = 0 - new_file_name = str(file_count) + ".png" - await client.upload(filename, new_file_name, write_into=True) - print("Uploaded", new_file_name) - with open("phixxy.com/ai-memes/index.html", 'r') as f: - html_data = f.read() - html_insert = '\n ' - html_data = html_data.replace('',html_insert) - with open("phixxy.com/ai-memes/index.html", "w") as f: - f.writelines(html_data) - await client.upload("phixxy.com/ai-memes/index.html", "index.html", write_into=True) - #ftp.storbinary("STOR " + "index.html", open("phixxy.com/ai-memes/index.html", "rb")) + await client.connect(ftp_server) + await client.login(ftp_username, ftp_password) + await client.change_directory(server_folder) + + async with client: + server_files = await client.list() + + file_count = len(server_files) if server_files else 0 + new_file_name = str(file_count) + ".png" + await client.upload(filename, new_file_name, write_into=True) + print("Uploaded", new_file_name) + + async with aiofiles.open("phixxy.com/ai-memes/index.html", 'r') as f: + html_data = await f.read() + + html_insert = '\n ' + html_data = html_data.replace('', html_insert) + + async with aiofiles.open("phixxy.com/ai-memes/index.html", "w") as f: + await f.write(html_data) + + await client.upload("phixxy.com/ai-memes/index.html", "index.html", write_into=True) + except Exception as error: + print("An error occurred:", error) + await handle_error(error) + await client.quit() async def generate_random_meme(topic): - userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \ - AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 \ - Safari/537.36' - damn_data = requests.get('https://api.imgflip.com/get_memes').json()['data']['memes'] - memepics = [{'name':image['name'],'url':image['url'],'id':image['id']} for image in damn_data] + async with aiohttp.ClientSession() as session: + async with session.get('https://api.imgflip.com/get_memes') as resp: + response_data = await resp.json() + response = response_data['data']['memes'] + memepics = [{'name':image['name'],'url':image['url'],'id':image['id']} for image in response] - #Pick a meme format with 2 panels - choosing_meme = True - while choosing_meme: - memenumber = random.randint(1,99) - meme_name = damn_data[memenumber-1]['name'] - panel_count = damn_data[memenumber-1]['box_count'] - if panel_count == 2: - print("Success") - choosing_meme = False - print("Trying to find a meme!") - - response = await answer_question("Create text for a meme. The meme is " + meme_name + ". Only create one meme. Do not use emojis or hashtags! Use the topic: " + topic + ". Use the output format (DO NOT USE EXTRA NEWLINES AND DO NOT DESCRIBE THE PICTURE IN YOUR OUTPUT): \n1: [panel 1 text]\n2: [panel 2 text]") + #Pick a meme format + memenumber = random.randint(1,99) + meme_name = response[memenumber-1]['name'] + panel_count = response[memenumber-1]['box_count'] + print("panel_count ",panel_count) + panel_text = await answer_question("Create text for a meme. The meme is " + meme_name + ". It has " + str(panel_count) + " panels. Only create one meme. Do not use emojis or hashtags! Use the topic: " + topic + ". Use the output format (DO NOT USE EXTRA NEWLINES AND DO NOT DESCRIBE THE PICTURE IN YOUR OUTPUT): \n1: [panel 1 text]\n2: [panel 2 text]") - text = response.split('\n') - text_boxes = [] - for item in text: - item = item[3:] - text_boxes.append(item) - id = memenumber - txt1 = text_boxes[0] - txt2 = text_boxes[1] - - URL = 'https://api.imgflip.com/caption_image' + params = { - 'username':imgflip_username, - 'password':imgflip_password, - 'template_id':memepics[id-1]['id'], - 'text0':txt1, - 'text1':txt2 + 'username':"Bottlec4p", + 'password':'Cookies@22', + 'template_id':memepics[id-1]['id'] } + boxes = [] + text = panel_text.split('\n') + for x in range(len(text)): + if text[x].strip() != "": + item = text[x][3:] + if len(params)-3 < panel_count: + dictionary = {"text":item, "color": "#ffffff", "outline_color": "#000000"} + boxes.append(dictionary) + + for i, box in enumerate(boxes): + params[f"boxes[{i}][text]"] = box["text"] + params[f"boxes[{i}][color]"] = box["color"] + params[f"boxes[{i}][outline_color]"] = box["outline_color"] + + URL = 'https://api.imgflip.com/caption_image' + try: - response = requests.request('POST',URL,params=params).json() - #Printing Whether Creating A meme was A success + async with aiohttp.ClientSession() as session: + async with session.post(URL, params=params) as resp: + response = await resp.json() print(f"Generated Meme = {response['success']}\nImage Link = {response['data']['url']}\nPage Link = {response['data']['page_url']}") image_link = response['data']['url'] except Exception as error: - print("\nAaaaah An error occured when requesting Data..") await handle_error(error) try: #------------------------------------Saving Image Using Requests---------------------------------#