You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.2 KiB
Python

11 months ago
import json
import datetime
from config import youtube_prefix
11 months ago
class Database:
def __init__(self, base_path):
self.base_path = base_path
self.file_path = f'{base_path}/index.json'
try:
with open(self.file_path, 'r') as file:
self.data = json.load(file)
except FileNotFoundError:
self.data = []
def add_entry(self, entry):
entry['timestamp'] = datetime.datetime.now().strftime('%d/%m/%Y')
self.data.append(entry)
with open(self.file_path, 'w') as file:
json.dump(self.data, file, indent=4)
def downloadable(self, url, title=None):
idx = url.split(youtube_prefix)[-1]
11 months ago
for entry in self.data:
if entry['id'] == idx or (title is not None and entry['title'] == title):
11 months ago
return False
return True
def get_all_entries(self):
return self.data
def update_entry(self, entry_id, new_data):
for entry in self.data:
if entry['id'] == entry_id:
entry.update(new_data)
with open(self.file_path, 'w') as file:
json.dump(self.data, file, indent=4)
return