添加jellyfin client

This commit is contained in:
sifacaii 2022-08-31 19:31:40 +08:00
parent 0bc35c9ff5
commit a61f82ab19
5 changed files with 60 additions and 36 deletions

View File

@ -20,7 +20,7 @@
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
tools:targetApi="31"> tools:targetApi="31">
<activity <activity
android:name=".MainActivity" android:name=".HomeActivity"
android:exported="true"> android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

View File

@ -74,7 +74,7 @@ public class CollectionActivity2 extends BaseActivity{
fillItems(); fillItems();
setLoadMore(); setLoadMore();
} }
}); },null);
} }
/** /**
@ -93,7 +93,7 @@ public class CollectionActivity2 extends BaseActivity{
setTitleTip(); setTitleTip();
mGridContiner.finishLoadMore(); mGridContiner.finishLoadMore();
} }
}); },null);
} }
private void setLoadMore(){ private void setLoadMore(){

View File

@ -66,7 +66,7 @@ public class Config {
*/ */
public void getConfigFromSP() { public void getConfigFromSP() {
SharedPreferences sp = context.getSharedPreferences("Jellyfin", context.MODE_PRIVATE); SharedPreferences sp = context.getSharedPreferences("Jellyfin", context.MODE_PRIVATE);
this.JellyfinUrl = sp.getString("url", ""); this.JellyfinUrl = sp.getString("url", "http://");
this.UserName = sp.getString("username", ""); this.UserName = sp.getString("username", "");
this.PassWord = sp.getString("password", ""); this.PassWord = sp.getString("password", "");
this.SortBy = sp.getString("sortby","DateCreated"); this.SortBy = sp.getString("sortby","DateCreated");

View File

@ -53,12 +53,19 @@ public class HomeActivity extends BaseActivity{
showLoginDialog(); showLoginDialog();
} }
} }
},false); },null,false);
}else{ }else{
ShowToask("服务器地址不正确!"); ShowToask("服务器地址不正确!");
showLoginDialog(); showLoginDialog();
} }
} }
},new JfClient.JJCallBack(){
@Override
public void onError(String str) {
dismissLoadingDialog();
ShowToask("服务器连接失败!");
showLoginDialog();
}
}); });
}else{ }else{
initView(); initView();
@ -108,11 +115,17 @@ public class HomeActivity extends BaseActivity{
ShowToask("用户名密码不正确!"); ShowToask("用户名密码不正确!");
} }
} }
},saveBox.isChecked()); },null,saveBox.isChecked());
}else{ }else{
ShowToask("服务器地址不正确!"); ShowToask("服务器地址不正确!");
} }
} }
},new JfClient.JJCallBack(){
@Override
public void onError(String str) {
dismissLoadingDialog();
ShowToask("服务器地址不正确!");
}
}); });
} }
}); });
@ -134,17 +147,17 @@ public class HomeActivity extends BaseActivity{
public void onSuccess(JsonArray latests) { public void onSuccess(JsonArray latests) {
addRowTvRecyclerView("新的 " + name,latests,false); addRowTvRecyclerView("新的 " + name,latests,false);
} }
}); },null);
} }
dismissLoadingDialog(); dismissLoadingDialog();
} }
}); },null);
JfClient.GetResume(new JfClient.JJCallBack(){ JfClient.GetResume(new JfClient.JJCallBack(){
@Override @Override
public void onSuccess(JsonArray resumes) { public void onSuccess(JsonArray resumes) {
addRowTvRecyclerView("最近播放",resumes,false); addRowTvRecyclerView("最近播放",resumes,false);
} }
}); },null);
} }

View File

@ -75,7 +75,7 @@ public class JfClient {
public void onSuccess(String str) { public void onSuccess(String str) {
//回放报告 //回放报告
} }
}); },null);
} }
/** /**
@ -113,7 +113,7 @@ public class JfClient {
* @param itemid * @param itemid
* @param cb * @param cb
*/ */
public static void GetAddPart(String itemid,JJCallBack cb){ public static void GetAddPart(String itemid,JJCallBack cb,JJCallBack errcb){
String AddPartUrl = "/Videos/" + itemid + "/AdditionalParts?userId=" + UserId; String AddPartUrl = "/Videos/" + itemid + "/AdditionalParts?userId=" + UserId;
SendGet(AddPartUrl,new JJCallBack(){ SendGet(AddPartUrl,new JJCallBack(){
@Override @Override
@ -124,7 +124,7 @@ public class JfClient {
cb.onSuccess(items); cb.onSuccess(items);
} }
} }
}); },errcb);
} }
/** /**
@ -133,7 +133,7 @@ public class JfClient {
* @param seasonId 季ID * @param seasonId 季ID
* @param cb * @param cb
*/ */
public static void GetEpisodes(String seriesId, String seasonId, JJCallBack cb) { public static void GetEpisodes(String seriesId, String seasonId, JJCallBack cb,JJCallBack errcb) {
String EpisodesUrl = config.getJellyfinUrl() + "/Shows/" + seriesId + "/Episodes?seasonId=" + seasonId; String EpisodesUrl = config.getJellyfinUrl() + "/Shows/" + seriesId + "/Episodes?seasonId=" + seasonId;
EpisodesUrl += "&userId=" + UserId; EpisodesUrl += "&userId=" + UserId;
EpisodesUrl += "&Fields=ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete,MediaSourceCount,Overview"; EpisodesUrl += "&Fields=ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete,MediaSourceCount,Overview";
@ -147,7 +147,7 @@ public class JfClient {
cb.onSuccess(items); cb.onSuccess(items);
} }
} }
}); },errcb);
} }
@ -157,7 +157,7 @@ public class JfClient {
* @param seriesId 剧ID * @param seriesId 剧ID
* @param cb * @param cb
*/ */
public static void GetSeasons(String seriesId, JJCallBack cb) { public static void GetSeasons(String seriesId, JJCallBack cb,JJCallBack errcb) {
String SeasonsUrl = config.getJellyfinUrl() + "/Shows/" + seriesId + "/Seasons?userId=" + UserId; String SeasonsUrl = config.getJellyfinUrl() + "/Shows/" + seriesId + "/Seasons?userId=" + UserId;
SeasonsUrl += "&Fields=ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,MediaSourceCount"; SeasonsUrl += "&Fields=ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,MediaSourceCount";
@ -170,7 +170,7 @@ public class JfClient {
cb.onSuccess(items); cb.onSuccess(items);
} }
} }
}); },errcb);
} }
/** /**
@ -184,7 +184,7 @@ public class JfClient {
* @param page * @param page
* @param cb * @param cb
*/ */
public static void GetCollection(String parentId, String type, String sortBy, String sortOrder, int limit, int page, JJCallBack cb) { public static void GetCollection(String parentId, String type, String sortBy, String sortOrder, int limit, int page, JJCallBack cb,JJCallBack errcb) {
String itemsUrl = config.getJellyfinUrl() + "/Users/" + UserId + "/Items?ParentId=" + parentId + "&Limit=" + limit; String itemsUrl = config.getJellyfinUrl() + "/Users/" + UserId + "/Items?ParentId=" + parentId + "&Limit=" + limit;
itemsUrl += "&Recursive=true&Fields=PrimaryImageAspectRatio,BasicSyncInfo,Seasons,Episodes&ImageTypeLimit=1"; itemsUrl += "&Recursive=true&Fields=PrimaryImageAspectRatio,BasicSyncInfo,Seasons,Episodes&ImageTypeLimit=1";
itemsUrl += "&EnableImageTypes=Primary,Backdrop,Banner,Thumb"; itemsUrl += "&EnableImageTypes=Primary,Backdrop,Banner,Thumb";
@ -206,7 +206,7 @@ public class JfClient {
JsonObject items = strToGson(str, JsonObject.class); JsonObject items = strToGson(str, JsonObject.class);
cb.onSuccess(items); cb.onSuccess(items);
} }
}); },errcb);
} }
/** /**
@ -215,7 +215,7 @@ public class JfClient {
* @param parentId * @param parentId
* @param cb * @param cb
*/ */
public static void GetLatest(String parentId, JJCallBack cb) { public static void GetLatest(String parentId, JJCallBack cb,JJCallBack errcb) {
String lastestUrl = config.getJellyfinUrl() + "/Users/" + UserId + "/Items/Latest?"; String lastestUrl = config.getJellyfinUrl() + "/Users/" + UserId + "/Items/Latest?";
lastestUrl += "Limit=16&Fields=PrimaryImageAspectRatio%2CBasicSyncInfo%2CPath"; lastestUrl += "Limit=16&Fields=PrimaryImageAspectRatio%2CBasicSyncInfo%2CPath";
lastestUrl += "&ImageTypeLimit=1&EnableImageTypes=Primary,Backdrop,Thumb"; lastestUrl += "&ImageTypeLimit=1&EnableImageTypes=Primary,Backdrop,Thumb";
@ -229,7 +229,7 @@ public class JfClient {
cb.onSuccess(latestObj); cb.onSuccess(latestObj);
} }
} }
}); },errcb);
} }
/** /**
@ -237,7 +237,7 @@ public class JfClient {
* *
* @param cb * @param cb
*/ */
public static void GetResume(JJCallBack cb) { public static void GetResume(JJCallBack cb,JJCallBack err) {
String resumeUrl = config.getJellyfinUrl() + "/Users/" + UserId + "/Items/Resume?"; String resumeUrl = config.getJellyfinUrl() + "/Users/" + UserId + "/Items/Resume?";
resumeUrl += "Limit=12&Recursive=true&Fields=PrimaryImageAspectRatio,BasicSyncInfo"; resumeUrl += "Limit=12&Recursive=true&Fields=PrimaryImageAspectRatio,BasicSyncInfo";
resumeUrl += "&ImageTypeLimit=1&EnableImageTypes=Primary,Backdrop,Thumb"; resumeUrl += "&ImageTypeLimit=1&EnableImageTypes=Primary,Backdrop,Thumb";
@ -252,7 +252,7 @@ public class JfClient {
cb.onSuccess(resumes); cb.onSuccess(resumes);
} }
} }
}); },err);
} }
/** /**
@ -260,7 +260,7 @@ public class JfClient {
* *
* @param cb * @param cb
*/ */
public static void GetViews(JJCallBack cb) { public static void GetViews(JJCallBack cb,JJCallBack err) {
String viewsUrl = config.getJellyfinUrl() + "/Users/" + UserId + "/Views"; String viewsUrl = config.getJellyfinUrl() + "/Users/" + UserId + "/Views";
SendGet(viewsUrl, new JJCallBack() { SendGet(viewsUrl, new JJCallBack() {
@Override @Override
@ -271,7 +271,7 @@ public class JfClient {
cb.onSuccess(views); cb.onSuccess(views);
} }
} }
}); },err);
} }
/** /**
@ -280,7 +280,7 @@ public class JfClient {
* @param itemid * @param itemid
* @param cb * @param cb
*/ */
public static void GetItemInfo(String itemid, JJCallBack cb) { public static void GetItemInfo(String itemid, JJCallBack cb,JJCallBack err) {
String url = config.getJellyfinUrl() + "/Users/" + UserId + "/Items/" + itemid; String url = config.getJellyfinUrl() + "/Users/" + UserId + "/Items/" + itemid;
SendGet(url, new JJCallBack() { SendGet(url, new JJCallBack() {
@Override @Override
@ -290,7 +290,7 @@ public class JfClient {
cb.onSuccess(item); cb.onSuccess(item);
} }
} }
}); },err);
} }
/** /**
@ -300,7 +300,7 @@ public class JfClient {
* @param password * @param password
* @param cb * @param cb
*/ */
public static void AuthenticateByName(String username, String password, JJCallBack cb, boolean saveUser) { public static void AuthenticateByName(String username, String password, JJCallBack cb,JJCallBack err, boolean saveUser) {
String url = config.getJellyfinUrl() + "/Users/authenticatebyname"; String url = config.getJellyfinUrl() + "/Users/authenticatebyname";
String reqjson = "{\"Username\":\"" + username + "\",\"Pw\":\"" + password + "\"}"; String reqjson = "{\"Username\":\"" + username + "\",\"Pw\":\"" + password + "\"}";
SendPost(url, reqjson, new JJCallBack() { SendPost(url, reqjson, new JJCallBack() {
@ -326,7 +326,7 @@ public class JfClient {
cb.onSuccess(false); cb.onSuccess(false);
} }
} }
}); },err);
} }
/** /**
@ -334,7 +334,7 @@ public class JfClient {
* *
* @param cb * @param cb
*/ */
public static void GetUsers(JJCallBack cb) { public static void GetUsers(JJCallBack cb,JJCallBack err) {
String url = config.getJellyfinUrl() + "/users/public"; String url = config.getJellyfinUrl() + "/users/public";
SendGet(url, new JJCallBack() { SendGet(url, new JJCallBack() {
@Override @Override
@ -342,7 +342,7 @@ public class JfClient {
JsonArray users = strToGson(str, JsonArray.class); JsonArray users = strToGson(str, JsonArray.class);
cb.onSuccess(users); cb.onSuccess(users);
} }
}); },err);
} }
/** /**
@ -351,7 +351,7 @@ public class JfClient {
* @param url * @param url
* @param cb * @param cb
*/ */
public static void VerityServerUrl(String url, JJCallBack cb) { public static void VerityServerUrl(String url, JJCallBack cb,JJCallBack err) {
if (url.length() > 0) { if (url.length() > 0) {
if (url.startsWith("http://") || url.startsWith("https://")) { if (url.startsWith("http://") || url.startsWith("https://")) {
@ -368,7 +368,7 @@ public class JfClient {
cb.onSuccess(true); cb.onSuccess(true);
} }
} }
}); },err);
} }
}else{ }else{
@ -396,7 +396,7 @@ public class JfClient {
* @param url * @param url
* @param cb * @param cb
*/ */
public static void SendGet(String url, JJCallBack cb) { public static void SendGet(String url, JJCallBack cb,JJCallBack errcb) {
OkGo.<String>get(url).headers(headers).execute(new AbsCallback<String>() { OkGo.<String>get(url).headers(headers).execute(new AbsCallback<String>() {
@Override @Override
public String convertResponse(okhttp3.Response response) throws IOException { public String convertResponse(okhttp3.Response response) throws IOException {
@ -414,7 +414,9 @@ public class JfClient {
@Override @Override
public void onError(Response<String> response) { public void onError(Response<String> response) {
cb.onSuccess(""); if(errcb != null){
errcb.onError(response.body());
}
} }
}); });
} }
@ -426,7 +428,7 @@ public class JfClient {
* @param jsonStr * @param jsonStr
* @param cb * @param cb
*/ */
public static void SendPost(String url, String jsonStr, JJCallBack cb) { public static void SendPost(String url, String jsonStr, JJCallBack cb,JJCallBack errcb) {
OkGo.<String>post(url).headers(headers).upJson(jsonStr).execute(new AbsCallback<String>() { OkGo.<String>post(url).headers(headers).upJson(jsonStr).execute(new AbsCallback<String>() {
@Override @Override
public String convertResponse(okhttp3.Response response) throws Throwable { public String convertResponse(okhttp3.Response response) throws Throwable {
@ -444,7 +446,9 @@ public class JfClient {
@Override @Override
public void onError(Response<String> response) { public void onError(Response<String> response) {
cb.onSuccess(""); if(errcb != null){
errcb.onError(response.body());
}
} }
}); });
} }
@ -513,6 +517,11 @@ public class JfClient {
public void onSuccess(JsonArray jsonArray) { public void onSuccess(JsonArray jsonArray) {
} }
@Override
public void onError(String str) {
}
} }
public interface JCallBack { public interface JCallBack {
@ -523,5 +532,7 @@ public class JfClient {
void onSuccess(JsonObject jsonObject); void onSuccess(JsonObject jsonObject);
void onSuccess(JsonArray jsonArray); void onSuccess(JsonArray jsonArray);
void onError(String str);
} }
} }