public static void createArtistPlayQueue( Connection connection, PlexDirectory artist, final PlexPlayQueueHandler responseHandler) { Map qs = new HashMap<>(); qs.put("type", "audio"); qs.put("shuffle", "1"); String uri = String.format( "library://%s/item/%%2flibrary%%2fmetadata%%2f%s", artist.server.machineIdentifier, artist.ratingKey); Logger.d("URI: %s", uri); qs.put("uri", uri); if (artist.server.accessToken != null) qs.put(PlexHeaders.XPlexToken, artist.server.accessToken); qs.put("continuous", "0"); qs.put("includeRelated", "1"); PlexHttpService service = getService(String.format("http://%s:%s", connection.address, connection.port)); Call<MediaContainer> call = service.createPlayQueue(qs, VoiceControlForPlexApplication.getUUID()); call.enqueue( new Callback<MediaContainer>() { @Override public void onResponse(Response<MediaContainer> response) { if (responseHandler != null) responseHandler.onSuccess(response.body()); } @Override public void onFailure(Throwable t) { Logger.d("createPlayQueue failure."); t.printStackTrace(); } }); }
public static void createPlayQueue( Connection connection, final PlexMedia media, final String key, String transientToken, final PlexPlayQueueHandler responseHandler) { Map qs = new HashMap<>(); qs.put("type", media.getType()); qs.put("next", "0"); boolean hasOffset = media.viewOffset != null && Integer.parseInt(media.viewOffset) > 0; if (media.isMovie() && !hasOffset) { qs.put( "extrasPrefixCount", Integer.toString( VoiceControlForPlexApplication.getInstance() .prefs .get(Preferences.NUM_CINEMA_TRAILERS, 0))); } String uri = String.format( "library://%s/item/%%2flibrary%%2fmetadata%%2f%s", media.server.machineIdentifier, key); qs.put("uri", uri); qs.put("window", "50"); // no idea what this is for if (transientToken != null) qs.put("token", transientToken); if (media.server.accessToken != null) qs.put(PlexHeaders.XPlexToken, media.server.accessToken); Logger.d("Qs: ", qs); PlexHttpService service = getService(String.format("http://%s:%s", connection.address, connection.port)); Call<MediaContainer> call = service.createPlayQueue(qs, VoiceControlForPlexApplication.getUUID()); call.enqueue( new Callback<MediaContainer>() { @Override public void onResponse(Response<MediaContainer> response) { if (responseHandler != null) { MediaContainer mc = response.body(); for (int i = 0; i < mc.tracks.size(); i++) { mc.tracks.get(i).server = media.server; } for (int i = 0; i < mc.videos.size(); i++) { mc.videos.get(i).server = media.server; if (mc.videos.get(i).isClip()) mc.videos.get(i).setClipDuration(); } responseHandler.onSuccess(mc); } } @Override public void onFailure(Throwable t) { Logger.d("createPlayQueue failure."); t.printStackTrace(); } }); }