Skip to content

Commit

Permalink
A little refactor,
Browse files Browse the repository at this point in the history
Don't fetch unused data in Anilist,
Ignore exception when trying to load Aniyomi extension classes,
Show media title, description and tags on the info page,
Show media banner at background
  • Loading branch information
MrBoomDeveloper committed Feb 21, 2024
1 parent 10bf93c commit 6d8f7d6
Show file tree
Hide file tree
Showing 24 changed files with 303 additions and 60 deletions.
7 changes: 7 additions & 0 deletions app/src/main/assets/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,13 @@
{ "key": "1440", "title": "1440p" },
{ "key": "2160", "title": "2160p" }
]
}, {
"key": "subtitles", "type": "screen", "title": "subtitles",
"items": [
{
"key": "size", "type": "int", "title": "subtitles_size"
}
]
}
]
}, {
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/com/mrboomdev/awery/AweryApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.mrboomdev.awery.catalog.provider.ExtensionsManager;
import com.mrboomdev.awery.catalog.extensions.ExtensionsFactory;
import com.mrboomdev.awery.util.Disposable;

import org.jetbrains.annotations.Contract;
Expand Down Expand Up @@ -120,7 +120,7 @@ public void onCreate() {
setupCrashHandler();
registerActivityLifecycleCallbacks(this);

ExtensionsManager.init(this);
ExtensionsFactory.init(this);
Anilist.INSTANCE.getSavedToken(this);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,11 @@ public String getQuery() {
{
Page(page: 1, perPage: 20) {
media(__PARAMS__) {
type format isAdult
type format
id description bannerImage status
genres averageScore
duration episodes
coverImage { extraLarge large color medium }
tags { name id description isMediaSpoiler isGeneralSpoiler }
tags { name id description }
title { romaji(stylised: false) english(stylised: false) native(stylised: false) }
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mrboomdev.awery.catalog.provider;
package com.mrboomdev.awery.catalog.extensions;

import java.util.ArrayList;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mrboomdev.awery.catalog.provider;
package com.mrboomdev.awery.catalog.extensions;

import androidx.annotation.NonNull;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mrboomdev.awery.catalog.provider;
package com.mrboomdev.awery.catalog.extensions;

import android.content.Context;
import android.content.pm.PackageInfo;
Expand All @@ -7,10 +7,14 @@

import androidx.annotation.NonNull;

import com.mrboomdev.awery.catalog.extensions.support.aniyomi.AniyomiProvider;
import com.mrboomdev.awery.catalog.extensions.support.tachiyomi.TachiyomiProvider;

import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand All @@ -23,8 +27,8 @@
import eu.kanade.tachiyomi.source.MangaSource;
import eu.kanade.tachiyomi.source.SourceFactory;

public class ExtensionsManager {
private static final String TAG = "ExtensionsManager";
public class ExtensionsFactory {
private static final String TAG = "ExtensionFactory";
private static final int PM_FLAGS = PackageManager.GET_CONFIGURATIONS | PackageManager.GET_META_DATA;
private static final String ANIYOMI_EXTENSION_FEATURE = "tachiyomi.animeextension";
private static final String TACHIYOMI_EXTENSION_FEATURE = "tachiyomi.extension";
Expand Down Expand Up @@ -81,7 +85,11 @@ private static Extension initTachiyomiExtension(Context context, @NonNull Packag
var extension = new Extension(pkg.packageName, label, isNsfw, pkg.versionName);

if(!extension.isError()) {
initTachiyomiExtensionClasses(context, pkg, extension);
try {
initTachiyomiExtensionClasses(context, pkg, extension);
} catch(IllegalStateException e) {
extension.setError("Failed to init extension's classes!", e);
}
}

return extension;
Expand All @@ -91,9 +99,15 @@ private static void initTachiyomiExtensionClasses(
@NonNull Context context,
@NonNull PackageInfo pkg,
Extension extension
) {
) throws IllegalStateException {
ClassLoader clazzLoader;
var app = pkg.applicationInfo;
var clazzLoader = new PathClassLoader(app.sourceDir, null, context.getClassLoader());

try {
clazzLoader = new PathClassLoader(app.sourceDir, null, context.getClassLoader());
} catch(Exception e) {
throw new IllegalStateException("Failed to load extension classloader!", e);
}

var animeExtensionClass = app.metaData.getString(ANIYOMI_EXTENSION_CLASS);
var mangaExtensionClass = app.metaData.getString(TACHIYOMI_EXTENSION_CLASS);
Expand All @@ -108,7 +122,7 @@ private static void initTachiyomiExtensionClasses(
for(var source : animeSources) {
if(source instanceof AnimeCatalogueSource catalogueSource) {
extension.isVideoExtension = true;
extension.addProvider(new AniyomiExtensionProvider(catalogueSource));
extension.addProvider(new AniyomiProvider(catalogueSource));
continue;
}

Expand All @@ -127,7 +141,7 @@ private static void initTachiyomiExtensionClasses(

for(var source : mangaSources) {
extension.isBookExtension = true;
extension.addProvider(new TachiyomiExtensionProvider(source));
extension.addProvider(new TachiyomiProvider(source));
}
} catch(Exception e) {
extension.setError("Failed to get manga sources!", e);
Expand Down Expand Up @@ -261,12 +275,16 @@ public static Collection<Extension> getAllExtensions() {
return extensions.values();
}

public static Collection<Extension> getVideoExtensions() {
public static Collection<Extension> getVideoExtensions(boolean onlyWorking) {
return extensions.values().stream()
.filter(Extension::isVideoExtension)
.collect(Collectors.toList());
}

public static Collection<Extension> getVideoExtensions() {
return getVideoExtensions(true);
}

public static Collection<Extension> getBookExtensions() {
return extensions.values().stream()
.filter(Extension::isBookExtension)
Expand All @@ -276,4 +294,9 @@ public static Collection<Extension> getBookExtensions() {
public static Extension getExtension(String packageName) {
return extensions.get(packageName);
}

@NonNull
public static Collection<ExtensionsManager> getAllManagers() {
return Collections.emptyList();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.mrboomdev.awery.catalog.extensions;

public abstract class ExtensionsManager<T extends ExtensionProvider> {

public abstract String getName();
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
package com.mrboomdev.awery.catalog.provider.data;
package com.mrboomdev.awery.catalog.extensions.data;

import androidx.annotation.NonNull;

import com.mrboomdev.awery.AweryApp;
import com.mrboomdev.awery.catalog.provider.Extension;
import com.mrboomdev.awery.catalog.provider.ExtensionProvider;
import com.mrboomdev.awery.catalog.extensions.ExtensionProvider;
import com.mrboomdev.awery.util.TranslationUtil;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ExtensionProviderGroup {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.mrboomdev.awery.catalog.extensions.support.aniyomi;

import com.mrboomdev.awery.catalog.extensions.ExtensionsManager;

public class AniyomiManager extends ExtensionsManager<AniyomiProvider> {

@Override
public String getName() {
return "Aniyomi";
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package com.mrboomdev.awery.catalog.provider;
package com.mrboomdev.awery.catalog.extensions.support.aniyomi;

import android.os.Bundle;

import androidx.annotation.NonNull;

import com.mrboomdev.awery.catalog.extensions.ExtensionProvider;
import com.mrboomdev.awery.catalog.template.CatalogEpisode;
import com.mrboomdev.awery.catalog.template.CatalogMedia;
import com.mrboomdev.awery.catalog.template.CatalogVideo;
Expand All @@ -21,10 +22,10 @@
import eu.kanade.tachiyomi.animesource.model.SEpisodeImpl;
import okhttp3.Headers;

public class AniyomiExtensionProvider extends ExtensionProvider {
public class AniyomiProvider extends ExtensionProvider {
private final AnimeCatalogueSource source;

public AniyomiExtensionProvider(AnimeCatalogueSource source) {
public AniyomiProvider(AnimeCatalogueSource source) {
this.source = source;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.mrboomdev.awery.catalog.extensions.support.cloudstream;

import com.mrboomdev.awery.catalog.extensions.ExtensionsManager;

public class CloudstreamManager extends ExtensionsManager<CloudstreamProvider> {

@Override
public String getName() {
return "CloudStream";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.mrboomdev.awery.catalog.extensions.support.cloudstream;

import com.mrboomdev.awery.catalog.extensions.ExtensionProvider;

public class CloudstreamProvider extends ExtensionProvider {

@Override
public String getName() {
return "cloudstream";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.mrboomdev.awery.catalog.extensions.support.js;

import com.mrboomdev.awery.catalog.extensions.ExtensionsManager;

public class JsManager extends ExtensionsManager<JsProvider> {

@Override
public String getName() {
return "JavaScript";
}
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
package com.mrboomdev.awery.catalog.provider;
package com.mrboomdev.awery.catalog.extensions.support.js;

import androidx.annotation.NonNull;

import com.mrboomdev.awery.catalog.extensions.ExtensionProvider;
import com.mrboomdev.awery.catalog.template.CatalogEpisode;
import com.mrboomdev.awery.catalog.template.CatalogMedia;

import org.mozilla.javascript.Context;

import java.util.List;

public class JsExtensionProvider extends ExtensionProvider {
public class JsProvider extends ExtensionProvider {

@Override
public void getEpisodes(int page, CatalogMedia media, @NonNull ResponseCallback<List<CatalogEpisode>> callback) {
super.getEpisodes(page, media, callback);
}

public JsExtensionProvider(String script) {
public JsProvider(String script) {
var context = Context.enter();
var scope = context.initSafeStandardObjects();
context.evaluateString(scope, script, null, 1,null);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.mrboomdev.awery.catalog.extensions.support.tachiyomi;

import com.mrboomdev.awery.catalog.extensions.ExtensionsManager;

public class TachiyomiManager extends ExtensionsManager<TachiyomiProvider> {

@Override
public String getName() {
return "Tachiyomi";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.mrboomdev.awery.catalog.extensions.support.tachiyomi;

import com.mrboomdev.awery.catalog.extensions.ExtensionProvider;

import eu.kanade.tachiyomi.source.MangaSource;

public class TachiyomiProvider extends ExtensionProvider {
private final MangaSource source;

public TachiyomiProvider(MangaSource source) {
this.source = source;
}

@Override
public String getName() {
return source.getName();
}
}

This file was deleted.

Loading

0 comments on commit 6d8f7d6

Please sign in to comment.