diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/service/RESTMusicService.java b/ultrasonic/src/main/java/org/moire/ultrasonic/service/RESTMusicService.java index ac80e738..3faf06ed 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/service/RESTMusicService.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/service/RESTMusicService.java @@ -86,6 +86,7 @@ import org.moire.ultrasonic.api.subsonic.response.SearchTwoResponse; import org.moire.ultrasonic.api.subsonic.response.SharesResponse; import org.moire.ultrasonic.api.subsonic.response.StreamResponse; import org.moire.ultrasonic.api.subsonic.response.SubsonicResponse; +import org.moire.ultrasonic.api.subsonic.response.VideosResponse; import org.moire.ultrasonic.data.APIAlbumConverter; import org.moire.ultrasonic.data.APIArtistConverter; import org.moire.ultrasonic.data.APIBookmarkConverter; @@ -117,7 +118,6 @@ import org.moire.ultrasonic.domain.Share; import org.moire.ultrasonic.domain.UserInfo; import org.moire.ultrasonic.domain.Version; import org.moire.ultrasonic.service.parser.ErrorParser; -import org.moire.ultrasonic.service.parser.MusicDirectoryParser; import org.moire.ultrasonic.service.parser.SubsonicRESTException; import org.moire.ultrasonic.service.ssl.SSLSocketFactory; import org.moire.ultrasonic.service.ssl.TrustSelfSignedStrategy; @@ -1314,22 +1314,20 @@ public class RESTMusicService implements MusicService checkResponseSuccessful(response); } - @Override - public MusicDirectory getVideos(boolean refresh, Context context, ProgressListener progressListener) throws Exception - { - checkServerVersion(context, "1.8", "Videos not supported."); + @Override + public MusicDirectory getVideos(boolean refresh, + Context context, + ProgressListener progressListener) throws Exception { + updateProgressListener(progressListener, R.string.parser_reading); + Response response = subsonicAPIClient.getApi() + .getVideos().execute(); + checkResponseSuccessful(response); - Reader reader = getReader(context, progressListener, "getVideos", null); - - try - { - return new MusicDirectoryParser(context).parse("", reader, progressListener, false); - } - finally - { - Util.close(reader); - } - } + MusicDirectory musicDirectory = new MusicDirectory(); + musicDirectory.addAll(APIMusicDirectoryConverter + .toDomainEntityList(response.body().getVideosList())); + return musicDirectory; + } @Override public List createShare(List ids, diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/service/parser/MusicDirectoryEntryParser.java b/ultrasonic/src/main/java/org/moire/ultrasonic/service/parser/MusicDirectoryEntryParser.java deleted file mode 100644 index 43f645ab..00000000 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/service/parser/MusicDirectoryEntryParser.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - This file is part of Subsonic. - - Subsonic is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Subsonic is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Subsonic. If not, see . - - Copyright 2009 (C) Sindre Mehus - */ -package org.moire.ultrasonic.service.parser; - -import android.content.Context; - -import org.moire.ultrasonic.domain.MusicDirectory; -import org.moire.ultrasonic.util.Constants; - -/** - * @author Sindre Mehus - */ -public class MusicDirectoryEntryParser extends AbstractParser -{ - - public MusicDirectoryEntryParser(Context context) - { - super(context); - } - - protected MusicDirectory.Entry parseEntry(String artist, boolean isAlbum, int bookmarkPosition) - { - MusicDirectory.Entry entry = new MusicDirectory.Entry(); - entry.setId(get("id")); - entry.setParent(get("parent")); - entry.setTitle(isAlbum ? get("name") : get("title")); - entry.setIsDirectory(getBoolean("isDir") || isAlbum); - entry.setCoverArt(get("coverArt")); - entry.setArtist(get("artist")); - entry.setArtistId(get("artistId")); - entry.setYear(getInteger("year")); - entry.setCreated(get("created")); - entry.setStarred(getValueExists(Constants.STARRED)); - - if (!entry.isDirectory()) - { - entry.setAlbum(get("album")); - entry.setAlbumId(get("albumId")); - entry.setTrack(getInteger("track")); - entry.setGenre(get("genre")); - entry.setContentType(get("contentType")); - entry.setSuffix(get("suffix")); - entry.setTranscodedContentType(get("transcodedContentType")); - entry.setTranscodedSuffix(get("transcodedSuffix")); - entry.setSize(getLong("size")); - entry.setDuration(getInteger("duration")); - entry.setBitRate(getInteger("bitRate")); - entry.setPath(get("path")); - entry.setIsVideo(getBoolean("isVideo")); - entry.setDiscNumber(getInteger("discNumber")); - entry.setType(get("type")); - entry.setBookmarkPosition(bookmarkPosition); - } - else if (!"".equals(artist)) - { - entry.setPath(String.format("%s/%s", artist, entry.getTitle())); - } - - return entry; - } -} \ No newline at end of file diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/service/parser/MusicDirectoryParser.java b/ultrasonic/src/main/java/org/moire/ultrasonic/service/parser/MusicDirectoryParser.java deleted file mode 100644 index cdc6f1b1..00000000 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/service/parser/MusicDirectoryParser.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - This file is part of Subsonic. - - Subsonic is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Subsonic is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Subsonic. If not, see . - - Copyright 2009 (C) Sindre Mehus - */ -package org.moire.ultrasonic.service.parser; - -import android.content.Context; -import android.util.Log; - -import org.moire.ultrasonic.R; -import org.moire.ultrasonic.domain.MusicDirectory; -import org.moire.ultrasonic.util.ProgressListener; - -import org.xmlpull.v1.XmlPullParser; - -import java.io.Reader; - -/** - * @author Sindre Mehus - */ -public class MusicDirectoryParser extends MusicDirectoryEntryParser -{ - - private static final String TAG = MusicDirectoryParser.class.getSimpleName(); - - public MusicDirectoryParser(Context context) - { - super(context); - } - - public MusicDirectory parse(String artist, Reader reader, ProgressListener progressListener, boolean isAlbum) throws Exception - { - - long t0 = System.currentTimeMillis(); - updateProgress(progressListener, R.string.parser_reading); - init(reader); - - MusicDirectory dir = new MusicDirectory(); - int eventType; - do - { - eventType = nextParseEvent(); - if (eventType == XmlPullParser.START_TAG) - { - String name = getElementName(); - - if ("child".equals(name) || "song".equals(name) || "video".equals(name)) - { - dir.addChild(parseEntry(artist, false, 0)); - } - else if ("album".equals(name) && !isAlbum) - { - dir.addChild(parseEntry(artist, true, 0)); - } - else if ("directory".equals(name) || "artist".equals(name)) - { - dir.setName(get("name")); - } - else if ("error".equals(name)) - { - handleError(); - } - } - } while (eventType != XmlPullParser.END_DOCUMENT); - - validate(); - updateProgress(progressListener, R.string.parser_reading_done); - - long t1 = System.currentTimeMillis(); - Log.d(TAG, "Got music directory in " + (t1 - t0) + "ms."); - - return dir; - } -} \ No newline at end of file