Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- import os
- import re
- import time
- from discord_webhook import DiscordWebhook
- from send_discord_files import webhook_urls
- def get_file_info(folder_path, filename):
- name = ''.join(i for i in filename if i not in '\/:*?<>|')
- full_path = os.path.join(folder_path, filename)
- size = os.path.getsize(full_path) / (1024 * 1024)
- return name, full_path, size
- def rate_limit(r):
- if r.status_code == 429:
- error_msg = r.json()
- rate_limit_wait = (roundup(int(error_msg['retry_after']), 1000) + 100) / 1000
- print(f'Sleeping {rate_limit_wait}s because of a hard rate limit')
- time.sleep(rate_limit_wait)
- return True
- elif int(r.headers['x-ratelimit-remaining']) == 0:
- rate_limit_wait = abs(int(r.headers['x-ratelimit-reset']) - time.time() + 0.2)
- print(f'sleeping {round(rate_limit_wait, 4)}s because of a soft rate limit')
- time.sleep(rate_limit_wait)
- return False
- def roundup(x: int or float, base: int):
- return int(math.ceil(x / float(base))) * base
- # Folder Path
- folder = r'path'
- # Change Username:
- username = ''
- # Change default avatar:
- avatar_url = ''
- # Use own Webhook URL here:
- webhook_url = webhook_urls.spam
- (_, _, filenames) = next(os.walk(folder))
- try:
- filenames.sort(key=lambda x: int(re.sub('\D', '', x)))
- except ValueError:
- print('Can not sort files by number.')
- print('Files will not be sorted')
- time.sleep(0)
- discord_files = [get_file_info(folder, i) for i in filenames]
- for file_name, file_path, file_size in discord_files:
- if file_size >= 8:
- print(f'{file_name} is with {round(file_size, 2)}MB to large to send to discord')
- continue
- webhook = DiscordWebhook(url=webhook_url, username=username, avatar_url=avatar_url)
- with open(file_path, "rb") as f:
- webhook.add_file(file=f.read(), filename=file_name)
- response = webhook.execute()
- if rate_limit(response):
- # repeat the failed request
- failed_file = [(i, file_info) for i, file_info in enumerate(discord_files) if file_info[0] == file_name][0]
- discord_files.insert(failed_file[0] + 1, failed_file[1])
- webhook = DiscordWebhook(url=webhook_url, username=username, avatar_url=avatar_url, content='Done')
- webhook.execute()
Add Comment
Please, Sign In to add comment