Add hash checking of files
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing

This commit is contained in:
Tyler Perkins 2022-12-17 21:49:01 -05:00
parent ddcace0abb
commit bb9b21c8f5

View File

@ -93,14 +93,15 @@ def getCurrentMemeList(force=False):
if (now - last_checked_all_memes).seconds > 300 or force: if (now - last_checked_all_memes).seconds > 300 or force:
print("Enough time has elapsed, refreshing meme cache...") print("Enough time has elapsed, refreshing meme cache...")
last_checked_all_memes = now last_checked_all_memes = now
all_memes.clear() all_memes.clear()
memes_to_md5.clear()
myClient = getClient() myClient = getClient()
for obj in myClient.list_objects(S3_BUCKET): for obj in myClient.list_objects(S3_BUCKET):
if not obj.is_dir: if not obj.is_dir:
#print(f'{obj.object_name}') #print(f'{obj.object_name}')
all_memes.append(obj.object_name) all_memes.append(obj.object_name)
if obj.object_name == 'combat_shotgun_my_beloved1.png':
print("Found! " + obj.etag)
memes_to_md5[obj.etag] = obj.object_name memes_to_md5[obj.etag] = obj.object_name
print(f"Got {len(all_memes)} memes") print(f"Got {len(all_memes)} memes")
return all_memes return all_memes
@ -275,7 +276,6 @@ async def uploadMeme(command, message, client):
uploader_tags = Tags.new_object_tags() uploader_tags = Tags.new_object_tags()
uploader_tags["uploader"] = message.author.name uploader_tags["uploader"] = message.author.name
print(uploader_tags)
all_memes = getCurrentMemeList() all_memes = getCurrentMemeList()
client = getClient() client = getClient()
@ -287,20 +287,24 @@ async def uploadMeme(command, message, client):
await file.save("/tmp/" + file.filename) await file.save("/tmp/" + file.filename)
#upload the file to S3 result = client.fput_object(bucket_name=S3_BUCKET,
file_hash = md5(open("/tmp/" + file.filename, 'rb').read())
print("Uploaded file has md5 hash of " + file_hash.hexdigest())
if file_hash not in memes_to_md5:
client.fput_object(bucket_name=S3_BUCKET,
object_name=file.filename, object_name=file.filename,
file_path="/tmp/" + file.filename, file_path="/tmp/" + file.filename,
tags=uploader_tags, tags=uploader_tags,
content_type=None) content_type=None)
else:
return "Found that meme already! (aka " + memes_to_md5[file_hash] + ")" if result.etag in memes_to_md5:
print("Already have that meme, etag is (" + result.etag + ")")
client.remove_object(bucket_name=S3_BUCKET,
object_name=file.filename)
return "That meme is already in the cache (it's called " + memes_to_md5[result.etag] + ")"
os.remove("/tmp/" + file.filename) os.remove("/tmp/" + file.filename)
getCurrentMemeList(force=True) getCurrentMemeList(force=True)
return "Thanks got your memes!" return "Thanks got your memes!"