优化jellyfin搜刮器

This commit is contained in:
2021-11-17 14:17:38 +08:00
parent a6b9e4a6ac
commit 8ef33f382e
19 changed files with 574 additions and 191 deletions

View File

@@ -0,0 +1,13 @@
package com.yutou.nas.Datas.Jellyfin;
import lombok.Data;
@Data
public class Chapter {
private long startPositionTicks;
private String name;
private String imagePath;
private String imageDateModified;
private String imageTag;
}

View File

@@ -0,0 +1,31 @@
package com.yutou.nas.Datas.Jellyfin;
import lombok.Data;
@Data
public class Episode {
private long runTimeTicks;
private String seriesID;
private UserData userData;
private String seasonName;
private long parentIndexNumber;
private String name;
private String videoType;
private String container;
private String serverID;
private String parentBackdropItemID;
private String seriesName;
private String parentLogoImageTag;
private String mediaType;
private String seasonID;
private ImageBlurHashes imageBlurHashes;
private String parentLogoItemID;
private ImageTags imageTags;
private String seriesPrimaryImageTag;
private String type;
private Object[] backdropImageTags;
private String[] parentBackdropImageTags;
private String id;
private boolean isFolder;
private String locationType;
}

View File

@@ -0,0 +1,78 @@
package com.yutou.nas.Datas.Jellyfin;
import com.alibaba.fastjson.JSONObject;
import com.yutou.nas.utils.AppTools;
import lombok.Data;
import java.io.File;
@Data
public class EpisodeData {
private String name;
private String serverID;
private String id;
private String etag;
private String dateCreated;
private boolean canDelete;
private boolean canDownload;
private String container;
private String sortName;
private Object[] externalUrls;
private MediaSource[] mediaSources;
private String path;
private boolean enableMediaSourceDisplay;
private Object channelID;
private Object[] taglines;
private Object[] genres;
private long runTimeTicks;
private String playAccess;
private long parentIndexNumber;
private Object[] remoteTrailers;
private JSONObject providerIDS;
private boolean isHD;
private boolean isFolder;
private String parentID;
private String type;
private Object[] people;
private Object[] studios;
private Object[] genreItems;
private String parentLogoItemID;
private String parentBackdropItemID;
private String[] parentBackdropImageTags;
private long localTrailerCount;
private UserData userData;
private String seriesName;
private String seriesID;
private String seasonID;
private long specialFeatureCount;
private String displayPreferencesID;
private Object[] tags;
private double primaryImageAspectRatio;
private String seriesPrimaryImageTag;
private String seasonName;
private MediaStream[] mediaStreams;
private String videoType;
private ImageTags imageTags;
private Object[] backdropImageTags;
private Object[] screenshotImageTags;
private String parentLogoImageTag;
private ImageBlurHashes imageBlurHashes;
private String seriesStudio;
private Chapter[] chapters;
private String locationType;
private String mediaType;
private Object[] lockedFields;
private boolean lockData;
private long width;
private long height;
public String getPath() {
if (AppTools.isRuntimeSystemOfWindow()) {
if (path != null) {
path = path.replace("/media/yutou/disk_lvm/public/download/anim/", "Z:\\download\\anim\\").replace("/", File.separator);
}
}
return path;
}
}

View File

@@ -0,0 +1,12 @@
package com.yutou.nas.Datas.Jellyfin;
import lombok.Data;
import java.util.Map;
@Data
public class ImageBlurHashes {
private Map<String,String> primary;
private Map<String,String> backdrop;
private Map<String,String> logo;
}

View File

@@ -0,0 +1,8 @@
package com.yutou.nas.Datas.Jellyfin;
import lombok.Data;
@Data
public class ImageTags {
private String primary;
}

View File

@@ -0,0 +1,57 @@
package com.yutou.nas.Datas.Jellyfin;
import com.yutou.nas.utils.AppTools;
import lombok.Data;
import java.io.File;
@Data
public class ItemInfo {
private String name;
private String serverID;
private String id;
private String etag;
private String dateCreated;
private String dateLastMediaAdded;
private boolean canDelete;
private boolean canDownload;
private String sortName;
private Object[] externalUrls;
private String path;
private boolean enableMediaSourceDisplay;
private Object channelID;
private Object[] taglines;
private Object[] genres;
private String playAccess;
private Object[] remoteTrailers;
private boolean isFolder;
private String parentID;
private String type;
private Object[] people;
private Object[] studios;
private Object[] genreItems;
private long localTrailerCount;
private UserData userData;
private long recursiveItemCount;
private long childCount;
private long specialFeatureCount;
private String displayPreferencesID;
private Object[] airDays;
private Object[] tags;
private double primaryImageAspectRatio;
private ImageTags imageTags;
private String[] backdropImageTags;
private Object[] screenshotImageTags;
private String locationType;
private Object[] lockedFields;
private boolean lockData;
public String getPath() {
if (AppTools.isRuntimeSystemOfWindow()) {
if (path != null) {
path = path.replace("/media/yutou/disk_lvm/public/download/anim/", "Z:\\download\\anim\\").replace("/", File.separator);
}
}
return path;
}
}

View File

@@ -0,0 +1,24 @@
package com.yutou.nas.Datas.Jellyfin;
import com.yutou.nas.utils.JellyfinAPIManager;
import lombok.Data;
import java.util.List;
@Data
public class LibsItem {
private String name;
private String serverID;
private String id;
private Object channelID;
private boolean isFolder;
private String type;
private UserData userData;
private String collectionType;
private ImageTags imageTags;
private List<Object> backdropImageTags;
private Object imageBlurHashes;
private String locationType;
private ItemInfo info;
}

View File

@@ -0,0 +1,37 @@
package com.yutou.nas.Datas.Jellyfin;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
@Data
public class MediaSource {
private String protocol;
private String id;
private String path;
private String type;
private String container;
private long size;
private String name;
private boolean isRemote;
private String eTag;
private long runTimeTicks;
private boolean readAtNativeFramerate;
private boolean ignoreDts;
private boolean ignoreIndex;
private boolean genPtsInput;
private boolean supportsTranscoding;
private boolean supportsDirectStream;
private boolean supportsDirectPlay;
private boolean isInfiniteStream;
private boolean requiresOpening;
private boolean requiresClosing;
private boolean requiresLooping;
private boolean supportsProbing;
private String videoType;
private MediaStream[] mediaStreams;
private Object[] mediaAttachments;
private Object[] formats;
private long bitrate;
private JSONObject requiredHTTPHeaders;
private long defaultAudioStreamIndex;
}

View File

@@ -0,0 +1,38 @@
package com.yutou.nas.Datas.Jellyfin;
import lombok.Data;
@Data
public class MediaStream {
private String codec;
private String codecTag;
private String language;
private String timeBase;
private String codecTimeBase;
private String videoRange;
private String displayTitle;
private String nalLengthSize;
private boolean isInterlaced;
private Boolean isAVC;
private long bitRate;
private Long bitDepth;
private Long refFrames;
private boolean isDefault;
private boolean isForced;
private Long height;
private Long width;
private Double averageFrameRate;
private Double realFrameRate;
private String profile;
private String type;
private String aspectRatio;
private long index;
private boolean isExternal;
private boolean isTextSubtitleStream;
private boolean supportsExternalStream;
private String pixelFormat;
private long level;
private String channelLayout;
private Long channels;
private Long sampleRate;
}

View File

@@ -0,0 +1,12 @@
package com.yutou.nas.Datas.Jellyfin;
import lombok.Data;
@Data
public class UserData {
private long playbackPositionTicks;
private long playCount;
private boolean isFavorite;
private boolean played;
private String key;
}