def edit_music(id: int): db = App.getDb().db music = db.query(File).filter(File.id == id).one_or_none() if music: music.meta.title = request.form['title'] music.meta.artist = request.form['artist'] music.meta.album = request.form['album'] music.meta.date = request.form['date'] music.meta.genre = request.form['genre'] db.commit() audio = EasyID3(music.real_path) audio["title"] = request.form['title'] audio["artist"] = request.form['artist'] audio["album"] = request.form['album'] audio["date"] = request.form['date'] audio["genre"] = request.form['genre'] audio.save() flash('Sikeresen átírtad a metaadatokat!', 'success') return redirect(url_for('edit_music_view', id=id)) else: flash('Nem található ilyen file!', 'danger') return redirect(url_for('show_all_musics'))
def saveMusicFileToDb(path): db = App.getDb().db file = db.query(File).where( File.path == re.escape(os.path.abspath(path))).one_or_none() if file is None: meta = Meta() try: audio = EasyID3(path) for key in audio.keys(): setattr(meta, key, audio[key]) if (type(audio[key]) is list): setattr(meta, key, ",".join(audio[key])) except: pass finally: file = File(path=re.escape(os.path.abspath(path)), meta=meta) db.add(file) try: db.commit() except ProgrammingError as e: logger.error( str(type(e)) + " - " + str(e) + " - " + path + " - " + str(e.statement) + " - " + str(e.params)) db.rollback() except OperationalError as e: logger.error( str(type(e)) + " - " + str(e) + " - " + path + " - " + str(e.statement) + " - " + str(e.params)) db.rollback() except SQLAlchemyError as e: logger.error(str(type(e)) + " - " + str(e) + " - " + path) db.rollback()
def on_moved(event): print(f"{event.src_path} has been moved to {event.dest_path}") db = App.getDb().db file = db.query(File).where( File.path == re.escape(os.path.abspath(event.src_path))).one_or_none() if file: file.path = re.escape(os.path.abspath(event.dest_path)) db.commit()
def edit_music_view(id: int): db = App.getDb().db music = db.query(File).filter(File.id == id).one_or_none() if music: return render_template("music-edit.html", music=music) else: flash('Nem található ilyen file!', 'danger') return redirect(url_for('show_all_musics'))
def on_deleted(event): print(f"{event.src_path} has been deleted!") db = App.getDb().db file = db.query(File).where( File.path == re.escape(os.path.abspath(event.src_path))).one_or_none() if file: db.delete(file.meta) db.delete(file) db.commit()
def on_modified(event): print(f"{event.src_path} has been modified") db = App.getDb().db file = db.query(File).filter( File.path == re.escape(os.path.abspath(event.src_path))).one_or_none() if file: try: audio = EasyID3(event.src_path) except: print("No metadatas in this file") else: updateMeta(event.src_path, audio) else: on_created(event)
def updateMeta(path, audio): db = App.getDb().db file = db.query(File).filter( File.path == re.escape(os.path.abspath(path))).one_or_none() meta = file.meta if file: for key in audio.keys(): setattr(meta, key, audio[key]) if (type(audio[key]) is list): setattr(meta, key, ",".join(audio[key])) try: db.commit() except SQLAlchemyError as e: db.rollback() logger.error(str(type(e)) + " - " + str(e) + " - " + path)
def on_created(event): print(f"{event.src_path} has been created!") db = App.getDb().db file_check = db.query(File).where( File.path == re.escape(os.path.abspath(event.src_path))).one_or_none() if not file_check: file = File(path=re.escape(os.path.abspath(event.src_path)), meta=Meta()) db.add(file) db.commit() try: audio = EasyID3(event.src_path) except: print("No metadatas in this file") else: updateMeta(event.src_path, audio)
def get_all_musics(): db = App.getDb().db musics = db.query(File).all() musics_schema = FileSchema(many=True) return {"musics": musics_schema.dump(musics)}