Kore/app/src/main/java/org/xbmc/kore/jsonrpc/type/PVRType.java

321 lines
13 KiB
Java

package org.xbmc.kore.jsonrpc.type;
import com.fasterxml.jackson.databind.JsonNode;
import org.xbmc.kore.utils.JsonUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
/**
* Types from PVR.*
*/
public class PVRType {
/**
* Enums for File.Media
*/
public interface ChannelType {
String TV = "tv";
String RADIO = "radio";
String[] allValues = new String[] {
TV, RADIO
};
}
/**
* PVR.Details.ChannelGroup
*/
public static class DetailsChannelGroup extends ItemType.DetailsBase {
public static final String CHANNELGROUPID = "channelgroupid";
public static final String CHANNELTYPE = "channeltype";
public final int channelgroupid;
public final String channeltype;
/**
* Constructor
* @param node JSON object representing a Detail object
*/
public DetailsChannelGroup(JsonNode node) {
super(node);
channelgroupid = JsonUtils.intFromJsonNode(node, CHANNELGROUPID);
channeltype = JsonUtils.stringFromJsonNode(node, CHANNELTYPE, ChannelType.TV);
}
}
/**
* Enums for PVR.Fields.Broadcast
*/
public interface FieldsBroadcast {
String TITLE = "title";
String PLOT = "plot";
String PLOTOUTLINE = "plotoutline";
String STARTTIME = "starttime";
String ENDTIME = "endtime";
String RUNTIME = "runtime";
String PROGRESS = "progress";
String PROGRESSPERCENTAGE = "progresspercentage";
String GENRE = "genre";
String EPISODENAME = "episodename";
String EPISODENUM = "episodenum";
String EPISODEPART = "episodepart";
String FIRSTAIRED = "firstaired";
String HASTIMER = "hastimer";
String ISACTIVE = "isactive";
String PARENTALRATING = "parentalrating";
String WASACTIVE = "wasactive";
String THUMBNAIL = "thumbnail";
String RATING = "rating";
public final static String[] allValues = new String[] {
TITLE, PLOT, PLOTOUTLINE, STARTTIME, ENDTIME, RUNTIME, PROGRESS, PROGRESSPERCENTAGE, GENRE,
EPISODENAME, EPISODENUM, EPISODEPART, FIRSTAIRED, HASTIMER, ISACTIVE, PARENTALRATING,
WASACTIVE, THUMBNAIL, RATING
};
}
/**
* PVR.Details.Broadcast type
*/
public static class DetailsBroadcast extends ItemType.DetailsBase {
public static final String BROADCASTID = "broadcastid";
public static final String ENDTIME = "endtime";
public static final String EPISODENAME = "episodename";
public static final String EPISODENUM = "episodenum";
public static final String EPISODEPART = "episodepart";
public static final String FIRSTAIRED = "firstaired";
public static final String GENRE = "genre";
public static final String HASTIMER = "hastimer";
public static final String ISACTIVE = "isactive";
public static final String PARENTALRATING = "parentalrating";
public static final String PLOT = "plot";
public static final String PLOTOUTLINE = "plotoutline";
public static final String PROGRESS = "progress";
public static final String PROGRESSPERCENTAGE = "progresspercentage";
public static final String RATING = "rating";
public static final String RUNTIME = "runtime";
public static final String STARTTIME = "starttime";
public static final String THUMBNAIL = "thumbnail";
public static final String TITLE = "title";
public static final String WASACTIVE = "wasactive";
public final int broadcastid;
public final String episodename;
public final int episodenum;
public final int episodepart;
public final String firstaired;
public final String genre;
public final boolean hastimer;
public final boolean isactive;
public final int parentalrating;
public final String plot;
public final String plotoutline;
public final int progress;
public final double progresspercentage;
public final int rating;
public final int runtime;
public final String thumbnail;
public final String title;
public final boolean wasactive;
public Date starttime;
public Date endtime;
/**
* Constructor
* @param node JSON object representing a DetailsBroadcast object
*/
public DetailsBroadcast(JsonNode node) {
super(node);
broadcastid = JsonUtils.intFromJsonNode(node, BROADCASTID);
episodename = JsonUtils.stringFromJsonNode(node, EPISODENAME);
episodenum = JsonUtils.intFromJsonNode(node, EPISODENUM, 0);
episodepart = JsonUtils.intFromJsonNode(node, EPISODEPART, 0);
firstaired = JsonUtils.stringFromJsonNode(node, FIRSTAIRED);
genre = JsonUtils.stringFromJsonNode(node, GENRE);
hastimer = JsonUtils.booleanFromJsonNode(node, HASTIMER, false);
isactive = JsonUtils.booleanFromJsonNode(node, ISACTIVE, false);
parentalrating = JsonUtils.intFromJsonNode(node, PARENTALRATING, 0);
plot = JsonUtils.stringFromJsonNode(node, PLOT);
plotoutline = JsonUtils.stringFromJsonNode(node, PLOTOUTLINE);
progress = JsonUtils.intFromJsonNode(node, PROGRESS, 0);
progresspercentage = JsonUtils.doubleFromJsonNode(node, PROGRESSPERCENTAGE, 0);
rating = JsonUtils.intFromJsonNode(node, RATING, 0);
runtime = JsonUtils.intFromJsonNode(node, RUNTIME, 0);
thumbnail = JsonUtils.stringFromJsonNode(node, THUMBNAIL);
title = JsonUtils.stringFromJsonNode(node, TITLE);
wasactive = JsonUtils.booleanFromJsonNode(node, WASACTIVE, false);
// Get times. All in UTC
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
try {
endtime = sdf.parse(JsonUtils.stringFromJsonNode(node, ENDTIME));
starttime = sdf.parse(JsonUtils.stringFromJsonNode(node, STARTTIME));
} catch (ParseException exc) {
starttime = new Date();
endtime = new Date();
}
}
}
/**
* Enums for PVR.Fields.Channel
*/
public interface FieldsChannel {
String THUMBNAIL = "thumbnail";
String CHANNELTYPE = "channeltype";
String HIDDEN = "hidden";
String LOCKED = "locked";
String CHANNEL = "channel";
String LASTPLAYED = "lastplayed";
String BROADCASTNOW = "broadcastnow";
String BROADCASTNEXT = "broadcastnext";
public final static String[] allValues = new String[] {
THUMBNAIL, CHANNELTYPE, HIDDEN, LOCKED, CHANNEL, LASTPLAYED, BROADCASTNOW, BROADCASTNEXT
};
}
/**
* PVR.Details.Channel
*/
public static class DetailsChannel extends ItemType.DetailsBase {
public static final String BROADCASTNEXT = "broadcastnext";
public static final String BROADCASTNOW = "broadcastnow";
public static final String CHANNEL = "channel";
public static final String CHANNELID = "channelid";
public static final String CHANNELTYPE = "channeltype";
public static final String HIDDEN = "hidden";
public static final String LASTPLAYED = "lastplayed";
public static final String LOCKED = "locked";
public static final String THUMBNAIL = "thumbnail";
public final DetailsBroadcast broadcastnext;
public final DetailsBroadcast broadcastnow;
public final String channel;
public final int channelid;
public final String channeltype;
public final boolean hidden;
public final String lastplayed;
public final boolean locked;
public final String thumbnail;
/**
* Constructor
* @param node JSON object representing a Detail object
*/
public DetailsChannel(JsonNode node) {
super(node);
broadcastnext = node.has(BROADCASTNEXT) ? new DetailsBroadcast(node.get(BROADCASTNEXT)) : null;
broadcastnow = node.has(BROADCASTNOW) ? new DetailsBroadcast(node.get(BROADCASTNOW)) : null;
channel = JsonUtils.stringFromJsonNode(node, CHANNEL);
channelid = JsonUtils.intFromJsonNode(node, CHANNELID);
channeltype = JsonUtils.stringFromJsonNode(node, CHANNELTYPE, ChannelType.TV);
hidden = JsonUtils.booleanFromJsonNode(node, HIDDEN, false);
lastplayed = JsonUtils.stringFromJsonNode(node, LASTPLAYED);
locked = JsonUtils.booleanFromJsonNode(node, LOCKED, false);
thumbnail = JsonUtils.stringFromJsonNode(node, THUMBNAIL);
}
}
/**
* Enums for PVR.Fields.Recording
*/
public interface FieldsRecording {
String TITLE = "title";
String PLOT = "plot";
String PLOTOUTLINE = "plotoutline";
String GENRE = "genre";
String PLAYCOUNT = "playcount";
String RESUME = "resume";
String CHANNEL = "channel";
String STARTTIME = "starttime";
String ENDTIME = "endtime";
String RUNTIME = "runtime";
String LIFETIME = "lifetime";
String ICON = "icon";
String ART = "art";
String STREAMURL = "streamurl";
String FILE = "file";
String DIRECTORY = "directory";
public final static String[] allValues = new String[] {
TITLE, PLOT, PLOTOUTLINE, GENRE, PLAYCOUNT, RESUME, CHANNEL, STARTTIME, ENDTIME, RUNTIME,
LIFETIME, ICON, ART, STREAMURL, FILE, DIRECTORY
};
}
/**
* PVR.Details.Recording
*/
public static class DetailsRecording extends ItemType.DetailsBase {
public static final String ART = "art";
public static final String CHANNEL = "channel";
public static final String DIRECTORY = "directory";
public static final String ENDTIME = "endtime";
public static final String FILE = "file";
public static final String GENRE = "genre";
public static final String ICON = "icon";
public static final String LIFETIME = "lifetime";
public static final String PLAYCOUNT = "playcount";
public static final String PLOT = "plot";
public static final String PLOTOUTLINE = "plotoutline";
public static final String RECORDINGID = "recordingid";
public static final String RESUME = "resume";
public static final String RUNTIME = "runtime";
public static final String STARTTIME = "starttime";
public static final String STREAMURL = "streamurl";
public static final String TITLE = "title";
public final MediaType.Artwork art;
public final String channel;
public final String directory;
public final String endtime;
public final String file;
public final String genre;
public final String icon;
public final int lifetime;
public final int playcount;
public final String plot;
public final String plotoutline;
public final int recordingid;
public final VideoType.Resume resume;
public final int runtime;
public final String starttime;
public final String streamurl;
public final String title;
/**
* Constructor
* @param node JSON object representing a Detail object
*/
public DetailsRecording(JsonNode node) {
super(node);
art = node.has(ART) ? new MediaType.Artwork(node.get(ART)) : null;
channel = JsonUtils.stringFromJsonNode(node, CHANNEL);
directory = JsonUtils.stringFromJsonNode(node, DIRECTORY);
endtime = JsonUtils.stringFromJsonNode(node, ENDTIME);
file = JsonUtils.stringFromJsonNode(node, FILE);
genre = JsonUtils.stringFromJsonNode(node, GENRE);
icon = JsonUtils.stringFromJsonNode(node, ICON);
lifetime = JsonUtils.intFromJsonNode(node, LIFETIME, 0);
playcount = JsonUtils.intFromJsonNode(node, PLAYCOUNT, 0);
plot = JsonUtils.stringFromJsonNode(node, PLOT);
plotoutline = JsonUtils.stringFromJsonNode(node, PLOTOUTLINE);
recordingid = JsonUtils.intFromJsonNode(node, RECORDINGID, 0);
resume = node.has(RESUME) ? new VideoType.Resume(node.get(RESUME)) : null;
runtime = JsonUtils.intFromJsonNode(node, RUNTIME, 0);
starttime = JsonUtils.stringFromJsonNode(node, STARTTIME);
streamurl = JsonUtils.stringFromJsonNode(node, STREAMURL);
title = JsonUtils.stringFromJsonNode(node, TITLE);
}
}
}