添加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"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:name=".HomeActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

View File

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

View File

@ -66,7 +66,7 @@ public class Config {
*/
public void getConfigFromSP() {
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.PassWord = sp.getString("password", "");
this.SortBy = sp.getString("sortby","DateCreated");

View File

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

View File

@ -75,7 +75,7 @@ public class JfClient {
public void onSuccess(String str) {
//回放报告
}
});
},null);
}
/**
@ -113,7 +113,7 @@ public class JfClient {
* @param itemid
* @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;
SendGet(AddPartUrl,new JJCallBack(){
@Override
@ -124,7 +124,7 @@ public class JfClient {
cb.onSuccess(items);
}
}
});
},errcb);
}
/**
@ -133,7 +133,7 @@ public class JfClient {
* @param seasonId 季ID
* @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;
EpisodesUrl += "&userId=" + UserId;
EpisodesUrl += "&Fields=ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete,MediaSourceCount,Overview";
@ -147,7 +147,7 @@ public class JfClient {
cb.onSuccess(items);
}
}
});
},errcb);
}
@ -157,7 +157,7 @@ public class JfClient {
* @param seriesId 剧ID
* @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;
SeasonsUrl += "&Fields=ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,MediaSourceCount";
@ -170,7 +170,7 @@ public class JfClient {
cb.onSuccess(items);
}
}
});
},errcb);
}
/**
@ -184,7 +184,7 @@ public class JfClient {
* @param page
* @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;
itemsUrl += "&Recursive=true&Fields=PrimaryImageAspectRatio,BasicSyncInfo,Seasons,Episodes&ImageTypeLimit=1";
itemsUrl += "&EnableImageTypes=Primary,Backdrop,Banner,Thumb";
@ -206,7 +206,7 @@ public class JfClient {
JsonObject items = strToGson(str, JsonObject.class);
cb.onSuccess(items);
}
});
},errcb);
}
/**
@ -215,7 +215,7 @@ public class JfClient {
* @param parentId
* @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?";
lastestUrl += "Limit=16&Fields=PrimaryImageAspectRatio%2CBasicSyncInfo%2CPath";
lastestUrl += "&ImageTypeLimit=1&EnableImageTypes=Primary,Backdrop,Thumb";
@ -229,7 +229,7 @@ public class JfClient {
cb.onSuccess(latestObj);
}
}
});
},errcb);
}
/**
@ -237,7 +237,7 @@ public class JfClient {
*
* @param cb
*/
public static void GetResume(JJCallBack cb) {
public static void GetResume(JJCallBack cb,JJCallBack err) {
String resumeUrl = config.getJellyfinUrl() + "/Users/" + UserId + "/Items/Resume?";
resumeUrl += "Limit=12&Recursive=true&Fields=PrimaryImageAspectRatio,BasicSyncInfo";
resumeUrl += "&ImageTypeLimit=1&EnableImageTypes=Primary,Backdrop,Thumb";
@ -252,7 +252,7 @@ public class JfClient {
cb.onSuccess(resumes);
}
}
});
},err);
}
/**
@ -260,7 +260,7 @@ public class JfClient {
*
* @param cb
*/
public static void GetViews(JJCallBack cb) {
public static void GetViews(JJCallBack cb,JJCallBack err) {
String viewsUrl = config.getJellyfinUrl() + "/Users/" + UserId + "/Views";
SendGet(viewsUrl, new JJCallBack() {
@Override
@ -271,7 +271,7 @@ public class JfClient {
cb.onSuccess(views);
}
}
});
},err);
}
/**
@ -280,7 +280,7 @@ public class JfClient {
* @param itemid
* @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;
SendGet(url, new JJCallBack() {
@Override
@ -290,7 +290,7 @@ public class JfClient {
cb.onSuccess(item);
}
}
});
},err);
}
/**
@ -300,7 +300,7 @@ public class JfClient {
* @param password
* @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 reqjson = "{\"Username\":\"" + username + "\",\"Pw\":\"" + password + "\"}";
SendPost(url, reqjson, new JJCallBack() {
@ -326,7 +326,7 @@ public class JfClient {
cb.onSuccess(false);
}
}
});
},err);
}
/**
@ -334,7 +334,7 @@ public class JfClient {
*
* @param cb
*/
public static void GetUsers(JJCallBack cb) {
public static void GetUsers(JJCallBack cb,JJCallBack err) {
String url = config.getJellyfinUrl() + "/users/public";
SendGet(url, new JJCallBack() {
@Override
@ -342,7 +342,7 @@ public class JfClient {
JsonArray users = strToGson(str, JsonArray.class);
cb.onSuccess(users);
}
});
},err);
}
/**
@ -351,7 +351,7 @@ public class JfClient {
* @param url
* @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.startsWith("http://") || url.startsWith("https://")) {
@ -368,7 +368,7 @@ public class JfClient {
cb.onSuccess(true);
}
}
});
},err);
}
}else{
@ -396,7 +396,7 @@ public class JfClient {
* @param url
* @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>() {
@Override
public String convertResponse(okhttp3.Response response) throws IOException {
@ -414,7 +414,9 @@ public class JfClient {
@Override
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 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>() {
@Override
public String convertResponse(okhttp3.Response response) throws Throwable {
@ -444,7 +446,9 @@ public class JfClient {
@Override
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) {
}
@Override
public void onError(String str) {
}
}
public interface JCallBack {
@ -523,5 +532,7 @@ public class JfClient {
void onSuccess(JsonObject jsonObject);
void onSuccess(JsonArray jsonArray);
void onError(String str);
}
}