def addPlaylistAction(self): playlistName, response = QInputDialog.getText(self, 'Pysawndz', 'Playlist name:') if response: sql = "SELECT * FROM playlists WHERE name = '%s'" % (playlistName) query = Db.execute(sql) if query.size() == 0: Db.insert("playlists", {"name": playlistName}) self.loadAllPlaylists() self.playlist.setCurrentRow(self.playlist.count() - 1) self.loadContextMenu() else: QMessageBox.warning(self, "Pysawndz", "Another playlist with the same name already exist.", QMessageBox.Ok);
def addToPlaylistAction(self): action = self.sender() playlist_id = action.data().toInt()[0] to_add = self.musicTable.selectedItems() songs_to_add = [] for i in to_add: song_id = i.data(Qt.UserRole).toInt()[0] if not song_id == 0: songs_to_add.append(song_id) if len(songs_to_add) > 0: for song_id in songs_to_add: sql = "SELECT * FROM playlist_songs WHERE song_id = %d AND playlist_id = %d" % (song_id, playlist_id) query = Db.execute(sql) if query.size() == 0: Db.insert("playlist_songs", {"playlist_id": playlist_id, "song_id": song_id}) self.playlist.setCurrentRow(self.getRowByData(playlist_id))
def __getSongAlbum(self, artist_id): if not self.__album == None: query = Db.select("albums", ["id"], {"name": self.__album, "artist_id": artist_id}) if query and query.size() > 0 and query.next(): return query.value(0).toInt()[0] else: return Db.insert("albums", {"name": self.__album, "artist_id": artist_id}) else: query = Db.execute("SELECT a.id FROM albums as a, songs as s WHERE s.album_id = a.id AND s.id = %d" % (self.__id)) if query and query.next(): return query.value(0).toInt()[0]
def __getSongGenre(self): if not self.__genre == None: query = Db.select("genres", ["id"], {"name": self.__genre}) if query and query.size() > 0 and query.next(): return query.value(0).toInt()[0] else: return Db.insert("genres", {"name": self.__genre}) else: query = Db.execute("SELECT g.id FROM genres as g, songs as s WHERE s.genre_id = g.id AND s.id = %d" % (self.__id)) if query and query.next(): return query.value(0).toInt()[0]
def restorePlaylist(self): filename = QFileDialog.getOpenFileName(self, "Select playlist to restore", QDesktopServices.storageLocation(QDesktopServices.DesktopLocation), "*.songs") handle = open(filename, "rb") self.sources = pickle.load(handle) playlistName = self.phelper.getFileName(filename) sql = "SELECT * FROM playlists WHERE name = '%s'" % (playlistName) query = Db.execute(sql) if query.size() == 0: Db.insert("playlists", {"name": playlistName}) #TODO: I forgot :) self.loadAllPlaylists() self.playlist.setCurrentRow(self.playlist.count() - 1) self.loadContextMenu() else: QMessageBox.warning(self, "Pysawndz", "Another playlist with the same name already exist.", QMessageBox.Ok);
def saveSong(self): artist_id = self.__getSongArtist() param = { "title": self.__title, "duration": self.__duration, "artist_id": artist_id, "genre_id": self.__getSongGenre(), "album_id": self.__getSongAlbum(artist_id), "path": self.__path } self.__id = Db.insert("songs", param)