From fe9949ce8087576e2be9e3621c6f359f6842a71d Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 15 Feb 2024 13:35:46 +0800 Subject: [PATCH 1/4] Update build.gradle --- app/build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index f3ecf8c78..ed1278737 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,7 +98,6 @@ dependencies { implementation project(':media-lib-datasource-rtmp') implementation project(':media-lib-decoder-av1') implementation project(':media-lib-decoder-ffmpeg') - implementation project(':media-lib-decoder-midi') implementation project(':media-lib-exoplayer') implementation project(':media-lib-exoplayer-dash') implementation project(':media-lib-exoplayer-hls') From 61e7f079584438ab3813dcad16e08f64b19f2674 Mon Sep 17 00:00:00 2001 From: okjack Date: Thu, 15 Feb 2024 14:49:05 +0800 Subject: [PATCH 2/4] fix layout --- app/src/leanback/res/layout/activity_collect.xml | 1 + app/src/leanback/res/layout/activity_vod.xml | 1 + app/src/leanback/res/layout/fragment_vod.xml | 1 - 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/leanback/res/layout/activity_collect.xml b/app/src/leanback/res/layout/activity_collect.xml index 47b03c1fb..646d7d2be 100644 --- a/app/src/leanback/res/layout/activity_collect.xml +++ b/app/src/leanback/res/layout/activity_collect.xml @@ -24,6 +24,7 @@ android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginBottom="16dp" android:clipChildren="false" android:clipToPadding="false" android:paddingStart="24dp" diff --git a/app/src/leanback/res/layout/activity_vod.xml b/app/src/leanback/res/layout/activity_vod.xml index c3cf6e8d0..38059d78c 100644 --- a/app/src/leanback/res/layout/activity_vod.xml +++ b/app/src/leanback/res/layout/activity_vod.xml @@ -10,6 +10,7 @@ android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginBottom="16dp" android:clipChildren="false" android:clipToPadding="false" android:paddingStart="24dp" diff --git a/app/src/leanback/res/layout/fragment_vod.xml b/app/src/leanback/res/layout/fragment_vod.xml index 8681257d6..71ed3eb92 100644 --- a/app/src/leanback/res/layout/fragment_vod.xml +++ b/app/src/leanback/res/layout/fragment_vod.xml @@ -11,7 +11,6 @@ android:clipChildren="false" android:clipToPadding="false" android:paddingStart="24dp" - android:paddingTop="16dp" android:paddingEnd="24dp" android:paddingBottom="24dp" app:focusOutEnd="true" From 5aa4a68be6f48ae0c7a72b1a4368e5f258c2c92f Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 15 Feb 2024 17:09:34 +0800 Subject: [PATCH 3/4] Add 302 auth check --- catvod/src/main/java/com/github/catvod/net/OkHttp.java | 2 +- .../github/catvod/net/interceptor/DefaultInterceptor.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/catvod/src/main/java/com/github/catvod/net/OkHttp.java b/catvod/src/main/java/com/github/catvod/net/OkHttp.java index 1e5261d32..ff10e20fe 100644 --- a/catvod/src/main/java/com/github/catvod/net/OkHttp.java +++ b/catvod/src/main/java/com/github/catvod/net/OkHttp.java @@ -132,7 +132,7 @@ public class OkHttp { } private static OkHttpClient.Builder getBuilder() { - OkHttpClient.Builder builder = new OkHttpClient.Builder().addInterceptor(new DefaultInterceptor()).connectTimeout(TIMEOUT, TimeUnit.MILLISECONDS).readTimeout(TIMEOUT, TimeUnit.MILLISECONDS).writeTimeout(TIMEOUT, TimeUnit.MILLISECONDS).dns(dns()).hostnameVerifier((hostname, session) -> true).sslSocketFactory(new SSLCompat(), SSLCompat.TM); + OkHttpClient.Builder builder = new OkHttpClient.Builder().addNetworkInterceptor(new DefaultInterceptor()).connectTimeout(TIMEOUT, TimeUnit.MILLISECONDS).readTimeout(TIMEOUT, TimeUnit.MILLISECONDS).writeTimeout(TIMEOUT, TimeUnit.MILLISECONDS).dns(dns()).hostnameVerifier((hostname, session) -> true).sslSocketFactory(new SSLCompat(), SSLCompat.TM); builder.proxySelector(get().proxy ? selector() : defaultSelector); return builder; } diff --git a/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java b/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java index 9279ecfac..4aeeb4db6 100644 --- a/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java +++ b/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java @@ -27,6 +27,7 @@ public class DefaultInterceptor implements Interceptor { public Response intercept(@NonNull Chain chain) throws IOException { Response response = chain.proceed(getRequest(chain.request())); String encoding = response.header(HttpHeaders.CONTENT_ENCODING); + if (response.isRedirect() && response.header(HttpHeaders.LOCATION) != null) checkAuth(response); if (response.body() == null || encoding == null || !encoding.equals("deflate")) return response; InflaterInputStream is = new InflaterInputStream(response.body().byteStream(), new Inflater(true)); return response.newBuilder().headers(response.headers()).body(new ResponseBody() { @@ -49,7 +50,7 @@ public class DefaultInterceptor implements Interceptor { }).build(); } - private Request getRequest(@NonNull Request request) { + private Request getRequest(Request request) { URI uri = request.url().uri(); String url = request.url().toString(); Request.Builder builder = request.newBuilder(); @@ -59,4 +60,9 @@ public class DefaultInterceptor implements Interceptor { if (uri.getUserInfo() != null) builder.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())); return builder.build(); } + + private void checkAuth(Response response) { + URI uri = URI.create(response.header(HttpHeaders.LOCATION)); + if (uri.getUserInfo() != null) response.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())); + } } From a137f81c831b4cb48c4b0e42a2b6097f81b59b7d Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 15 Feb 2024 17:43:27 +0800 Subject: [PATCH 4/4] Clean code --- .../net/interceptor/DefaultInterceptor.java | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java b/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java index 4aeeb4db6..0c4d534bd 100644 --- a/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java +++ b/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java @@ -26,9 +26,31 @@ public class DefaultInterceptor implements Interceptor { @Override public Response intercept(@NonNull Chain chain) throws IOException { Response response = chain.proceed(getRequest(chain.request())); + String location = response.header(HttpHeaders.LOCATION); String encoding = response.header(HttpHeaders.CONTENT_ENCODING); - if (response.isRedirect() && response.header(HttpHeaders.LOCATION) != null) checkAuth(response); - if (response.body() == null || encoding == null || !encoding.equals("deflate")) return response; + if (response.isRedirect() && location != null) checkAuth(response, location); + if (response.body() != null && "deflate".equals(encoding)) return deflate(response); + return response; + } + + private Request getRequest(Request request) { + URI uri = request.url().uri(); + String url = request.url().toString(); + Request.Builder builder = request.newBuilder(); + boolean local = url.contains(":" + Proxy.getPort() + "/"); + if (url.contains("+") && local) builder.url(url.replace("+", "%2B")); + if (url.contains("gitcode.net")) builder.header(HttpHeaders.USER_AGENT, Util.CHROME); + if (uri.getUserInfo() != null) builder.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())); + return builder.build(); + } + + private void checkAuth(Response response, String location) { + URI uri = URI.create(location); + if (uri.getUserInfo() == null) return; + response.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())); + } + + private Response deflate(Response response) { InflaterInputStream is = new InflaterInputStream(response.body().byteStream(), new Inflater(true)); return response.newBuilder().headers(response.headers()).body(new ResponseBody() { @Nullable @@ -49,20 +71,4 @@ public class DefaultInterceptor implements Interceptor { } }).build(); } - - private Request getRequest(Request request) { - URI uri = request.url().uri(); - String url = request.url().toString(); - Request.Builder builder = request.newBuilder(); - boolean local = url.contains(":" + Proxy.getPort() + "/"); - if (url.contains("+") && local) builder.url(url.replace("+", "%2B")); - if (url.contains("gitcode.net")) builder.header(HttpHeaders.USER_AGENT, Util.CHROME); - if (uri.getUserInfo() != null) builder.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())); - return builder.build(); - } - - private void checkAuth(Response response) { - URI uri = URI.create(response.header(HttpHeaders.LOCATION)); - if (uri.getUserInfo() != null) response.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo())); - } }