diff --git a/src/pt/animefire/AndroidManifest.xml b/src/pt/animefire/AndroidManifest.xml
index 94339ee7a..4ec750389 100644
--- a/src/pt/animefire/AndroidManifest.xml
+++ b/src/pt/animefire/AndroidManifest.xml
@@ -1,2 +1,24 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pt/animefire/build.gradle b/src/pt/animefire/build.gradle
index 1c3d5a31c..3019ca9bf 100644
--- a/src/pt/animefire/build.gradle
+++ b/src/pt/animefire/build.gradle
@@ -6,9 +6,13 @@ ext {
extName = 'Anime Fire'
pkgNameSuffix = 'pt.animefire'
extClass = '.AnimeFire'
- extVersionCode = 1
+ extVersionCode = 2
libVersion = '12'
}
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+}
+
apply from: "$rootDir/common.gradle"
diff --git a/src/pt/animefire/src/eu/kanade/tachiyomi/animeextension/pt/animefire/AFConstants.kt b/src/pt/animefire/src/eu/kanade/tachiyomi/animeextension/pt/animefire/AFConstants.kt
new file mode 100644
index 000000000..b7ce89608
--- /dev/null
+++ b/src/pt/animefire/src/eu/kanade/tachiyomi/animeextension/pt/animefire/AFConstants.kt
@@ -0,0 +1,9 @@
+package eu.kanade.tachiyomi.animeextension.pt.animefire
+
+object AFConstants {
+ const val ACCEPT_LANGUAGE = "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7"
+ const val USER_AGENT = "Mozilla/5.0 (Linux; Android 10; SM-A307GT Build/QP1A.190711.020;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/102.0.5005.125 Mobile Safari/537.36"
+ const val PREFERRED_QUALITY = "preferred_quality"
+ const val PREFIX_SEARCH = "id:"
+ val QUALITY_LIST = arrayOf("360p", "720p")
+}
diff --git a/src/pt/animefire/src/eu/kanade/tachiyomi/animeextension/pt/animefire/AFUrlActivity.kt b/src/pt/animefire/src/eu/kanade/tachiyomi/animeextension/pt/animefire/AFUrlActivity.kt
new file mode 100644
index 000000000..d22e57513
--- /dev/null
+++ b/src/pt/animefire/src/eu/kanade/tachiyomi/animeextension/pt/animefire/AFUrlActivity.kt
@@ -0,0 +1,42 @@
+package eu.kanade.tachiyomi.animeextension.pt.animefire
+
+import android.app.Activity
+import android.content.ActivityNotFoundException
+import android.content.Intent
+import android.os.Bundle
+import android.util.Log
+import kotlin.system.exitProcess
+
+/**
+ * Springboard that accepts https://animefire.net/animes/ intents
+ * and redirects them to the main Aniyomi process.
+ */
+class AFUrlActivity : Activity() {
+
+ private val TAG = "AFUrlActivity"
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ val pathSegments = intent?.data?.pathSegments
+ if (pathSegments != null && pathSegments.size > 1) {
+ val id = pathSegments[1]
+ val searchQuery = AFConstants.PREFIX_SEARCH + id
+ val mainIntent = Intent().apply {
+ action = "eu.kanade.tachiyomi.ANIMESEARCH"
+ putExtra("query", searchQuery)
+ putExtra("filter", packageName)
+ }
+
+ try {
+ startActivity(mainIntent)
+ } catch (e: ActivityNotFoundException) {
+ Log.e(TAG, e.toString())
+ }
+ } else {
+ Log.e(TAG, "could not parse uri from intent $intent")
+ }
+
+ finish()
+ exitProcess(0)
+ }
+}
diff --git a/src/pt/animefire/src/eu/kanade/tachiyomi/animeextension/pt/animefire/AnimeFire.kt b/src/pt/animefire/src/eu/kanade/tachiyomi/animeextension/pt/animefire/AnimeFire.kt
index 251e0c981..03479fb6c 100644
--- a/src/pt/animefire/src/eu/kanade/tachiyomi/animeextension/pt/animefire/AnimeFire.kt
+++ b/src/pt/animefire/src/eu/kanade/tachiyomi/animeextension/pt/animefire/AnimeFire.kt
@@ -5,6 +5,7 @@ import android.content.SharedPreferences
import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.pt.animefire.extractors.AnimeFireExtractor
+import eu.kanade.tachiyomi.animeextension.pt.animefire.extractors.IframeExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.AnimesPage
@@ -49,7 +50,7 @@ class AnimeFire : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun headersBuilder(): Headers.Builder = Headers.Builder()
.add("Referer", baseUrl)
- .add("Accept-Language", ACCEPT_LANGUAGE)
+ .add("Accept-Language", AFConstants.ACCEPT_LANGUAGE)
// ============================== Popular ===============================
override fun popularAnimeSelector() = latestUpdatesSelector()
@@ -75,8 +76,12 @@ class AnimeFire : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// ============================ Video Links =============================
override fun videoListParse(response: Response): List