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
38 lines
1.2 KiB
Python
import json
|
|
import datetime
|
|
from config import youtube_prefix
|
|
|
|
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]
|
|
for entry in self.data:
|
|
if entry['id'] == idx or (title is not None and entry['title'] == title):
|
|
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
|