Newer
Older
MusicDownloader / src / patch.py
import psycopg2

class MusicPatcher:
    connection = False
    def __init__(self):
        self.connection = psycopg2.connect(user="postgres",
                                        port="5432",
                                        database="mediaserver")
        self.connection.set_client_encoding('UTF8')

    def __update(self, sql, params=()):
        cur = self.connection.cursor()
        cur.execute(sql, params)
        updated_rows = cur.rowcount
        print("{} row changed for {}".format(updated_rows , sql))
        self.connection.commit()
        cur.close()

    def __select(self, sql, params=()):
        cur = self.connection.cursor()
        cur.execute(sql, params)
        rows = cur.fetchall()
        cur.close()
        return rows
    def __update_music_metadata(self, id, title, artist, album,album_artist, orginal_info):
        sql = """ UPDATE MUSIC
                        SET title = %s, artist= %s, album= %s, album_artist= %s, comment= %s
                        WHERE id = %s"""
        # execute the UPDATE  statement
        self.__update(self,sql,(title, artist, album, album_artist, orginal_info, id))
    def close(self):
        if self.connection:
            self.connection.close()

    def process_music(self):
        postgreSQL_select_Query = "SELECT ID,path FROM track"
        track_records = self.__select(postgreSQL_select_Query)
        for track_record in track_records:
            path_tokens = track_record[1].split("/")
            tokens =path_tokens[len(path_tokens)-1].replace(".mp3","").replace(".MP3","").split("_")
            if len(tokens) != 4:
                continue
            artist_tracks = self.__select("SELECT track from artist_track where track = {}".format(track_record[0]))
            if(len(artist_tracks) ==0):
                sql_query = "INSERT INTO artist_track (track, artist, artist_sort, artist_search, has_album_artist) values ({},'{}','{}','{}','f')".format(track_record[0],tokens[1],tokens[1],tokens[1])
                self.__update(sql_query)
            else:
                sql_query = "UPDATE artist_track set artist='{}', artist_sort='{}', artist_search='{}' where track = {}".format(tokens[1],tokens[1],tokens[1],track_record[0])
                self.__update(sql_query)

            album_tracks = self.__select("SELECT * from album_track where track = {}".format(track_record[0]))
            if(len(album_tracks) ==0):
                sql_query = "INSERT INTO album_track (track, album, album_sort, album_search, album_artist, album_artist_sort, album_artist_search,from_album_artist) values ({},'{}','{}','{}','{}','{}','{}','t')".format(track_record[0],tokens[2],tokens[2],tokens[2],tokens[1],tokens[1],tokens[1])
                self.__update(sql_query)
            else:
                sql_query = "UPDATE album_track set album='{}', album_sort='{}', album_search='{}', album_artist='{}',album_artist_sort='{}', album_artist_search='{}'  where track = {}".format(tokens[2],tokens[2],tokens[2],tokens[1],tokens[1],tokens[1],track_record[0])
                self.__update(sql_query)

            sql_query = "UPDATE track set title='{}' , title_search='{}', comment={} where id={}".format(tokens[0],tokens[0],tokens[3],track_record[0])
            self.__update(sql_query)

MusicPatcher().process_music()