subsonic: Move ReadSong method to SubsonicService.
This commit is contained in:
parent
5efcae398e
commit
ddba21a46f
@ -151,7 +151,7 @@ PlaylistItemList SubsonicDynamicPlaylist::GenerateMoreSongs(int count) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Song song = ReadSong(reader);
|
||||
Song song = service_->ReadSong(reader);
|
||||
|
||||
items << std::shared_ptr<PlaylistItem>(
|
||||
new InternetPlaylistItem(service_, song));
|
||||
@ -279,7 +279,7 @@ void SubsonicDynamicPlaylist::GetAlbum(PlaylistItemList& list, QString id,
|
||||
continue;
|
||||
}
|
||||
|
||||
Song song = ReadSong(reader);
|
||||
Song song = service_->ReadSong(reader);
|
||||
song.set_albumartist(album_artist);
|
||||
|
||||
list << std::shared_ptr<PlaylistItem>(
|
||||
@ -289,46 +289,6 @@ void SubsonicDynamicPlaylist::GetAlbum(PlaylistItemList& list, QString id,
|
||||
}
|
||||
}
|
||||
|
||||
Song SubsonicDynamicPlaylist::ReadSong(QXmlStreamReader &reader) {
|
||||
Song song;
|
||||
QString id = reader.attributes().value("id").toString();
|
||||
song.set_title(reader.attributes().value("title").toString());
|
||||
song.set_album(reader.attributes().value("album").toString());
|
||||
song.set_track(reader.attributes().value("track").toString().toInt());
|
||||
song.set_disc(reader.attributes().value("discNumber").toString().toInt());
|
||||
song.set_artist(reader.attributes().value("artist").toString());
|
||||
song.set_bitrate(reader.attributes().value("bitRate").toString().toInt());
|
||||
song.set_year(reader.attributes().value("year").toString().toInt());
|
||||
song.set_genre(reader.attributes().value("genre").toString());
|
||||
qint64 length = reader.attributes().value("duration").toString().toInt();
|
||||
length *= kNsecPerSec;
|
||||
song.set_length_nanosec(length);
|
||||
QUrl url = QUrl(QString("subsonic://"));
|
||||
QUrlQuery song_query(url.query());
|
||||
song_query.addQueryItem("id", id);
|
||||
url.setQuery(song_query);
|
||||
QUrl cover_url = service_->BuildRequestUrl("getCoverArt");
|
||||
QUrlQuery cover_url_query(cover_url.query());
|
||||
cover_url_query.addQueryItem("id", id);
|
||||
cover_url.setQuery(cover_url_query);
|
||||
song.set_art_automatic(cover_url.toEncoded());
|
||||
song.set_url(url);
|
||||
song.set_filesize(reader.attributes().value("size").toString().toInt());
|
||||
QFileInfo fi(reader.attributes().value("path").toString());
|
||||
song.set_basefilename(fi.fileName());
|
||||
// We need to set these to satisfy the database constraints
|
||||
song.set_directory_id(0);
|
||||
song.set_mtime(0);
|
||||
song.set_ctime(0);
|
||||
|
||||
if (reader.attributes().hasAttribute("playCount")) {
|
||||
song.set_playcount(
|
||||
reader.attributes().value("playCount").toString().toInt());
|
||||
}
|
||||
|
||||
return song;
|
||||
}
|
||||
|
||||
QDataStream& operator<<(QDataStream& s, const SubsonicDynamicPlaylist& p) {
|
||||
s << quint8(p.stat_) << quint8(p.type_);
|
||||
return s;
|
||||
|
@ -62,8 +62,6 @@ class SubsonicDynamicPlaylist : public smart_playlists::Generator {
|
||||
PlaylistItemList GenerateMoreAlbums(int count);
|
||||
PlaylistItemList GenerateMoreSongs(int count);
|
||||
|
||||
Song ReadSong(QXmlStreamReader& reader);
|
||||
|
||||
static const int kMaxCount;
|
||||
static const int kDefaultAlbumCount;
|
||||
static const int kDefaultSongCount;
|
||||
|
@ -623,3 +623,45 @@ void SubsonicLibraryScanner::ParsingError(const QString& message) {
|
||||
scanning_ = false;
|
||||
emit ScanFinished();
|
||||
}
|
||||
|
||||
Song SubsonicService::ReadSong(QXmlStreamReader& reader) {
|
||||
Song song;
|
||||
QString id = reader.attributes().value("id").toString();
|
||||
song.set_title(reader.attributes().value("title").toString());
|
||||
song.set_album(reader.attributes().value("album").toString());
|
||||
song.set_track(reader.attributes().value("track").toString().toInt());
|
||||
song.set_disc(reader.attributes().value("discNumber").toString().toInt());
|
||||
song.set_artist(reader.attributes().value("artist").toString());
|
||||
song.set_bitrate(reader.attributes().value("bitRate").toString().toInt());
|
||||
song.set_year(reader.attributes().value("year").toString().toInt());
|
||||
song.set_genre(reader.attributes().value("genre").toString());
|
||||
qint64 length = reader.attributes().value("duration").toString().toInt();
|
||||
length *= kNsecPerSec;
|
||||
song.set_length_nanosec(length);
|
||||
QUrl url = QUrl(QString("subsonic://"));
|
||||
QUrlQuery song_query(url.query());
|
||||
song_query.addQueryItem("id", id);
|
||||
url.setQuery(song_query);
|
||||
|
||||
QUrl cover_url = BuildRequestUrl("getCoverArt");
|
||||
QUrlQuery cover_url_query(cover_url.query());
|
||||
cover_url_query.addQueryItem("id", id);
|
||||
cover_url.setQuery(cover_url_query);
|
||||
song.set_art_automatic(cover_url.toEncoded());
|
||||
|
||||
song.set_url(url);
|
||||
song.set_filesize(reader.attributes().value("size").toString().toInt());
|
||||
QFileInfo fi(reader.attributes().value("path").toString());
|
||||
song.set_basefilename(fi.fileName());
|
||||
// We need to set these to satisfy the database constraints
|
||||
song.set_directory_id(0);
|
||||
song.set_mtime(0);
|
||||
song.set_ctime(0);
|
||||
|
||||
if (reader.attributes().hasAttribute("playCount")) {
|
||||
song.set_playcount(
|
||||
reader.attributes().value("playCount").toString().toInt());
|
||||
}
|
||||
|
||||
return song;
|
||||
}
|
||||
|
@ -114,6 +114,8 @@ class SubsonicService : public InternetService {
|
||||
// boilerplate.
|
||||
QNetworkReply* Send(const QUrl& url);
|
||||
|
||||
Song ReadSong(QXmlStreamReader& reader);
|
||||
|
||||
friend PlaylistItemList SubsonicDynamicPlaylist::GenerateMoreAlbums(int);
|
||||
friend PlaylistItemList SubsonicDynamicPlaylist::GenerateMoreSongs(int);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user