コード例 #1
0
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'))
コード例 #2
0
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()
コード例 #3
0
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()
コード例 #4
0
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'))
コード例 #5
0
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()
コード例 #6
0
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)
コード例 #7
0
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)
コード例 #8
0
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)
コード例 #9
0
def get_all_musics():
    db = App.getDb().db
    musics = db.query(File).all()
    musics_schema = FileSchema(many=True)
    return {"musics": musics_schema.dump(musics)}