From b3ff3ec086f2fd7aa62d545da06218f64c65a732 Mon Sep 17 00:00:00 2001
From: Thanasis Trispiotis <79643637+thanasistrisp@users.noreply.github.com>
Date: Mon, 10 Oct 2022 22:42:59 +0300
Subject: [PATCH 1/4] update strings.xml Greek (#145)
* update strings.xml
Add new translations to greek language (el) and fix typos.
* remove duplicate
---
app/src/main/res/values-el/strings.xml | 401 +++++++++++++++++++++----
1 file changed, 348 insertions(+), 53 deletions(-)
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index de9ac4f4..11b74938 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -5,39 +5,39 @@
Αναζήτηση
Λήψεις
Ρυθμίσεις
- Ψάξε…
+ Άνοιγμα με CloudStream
+ Αναζήτηση…
Πόστερ
Χωρίς δεδομένα
Περισσότερες Επιλογές
Πίσω
- Επόμενο Επισόδειο
+ Επόμενο Επεισόδιο
Πόστερ
- Πλοκή
- Genres
- Μοίρασε
+ Κατηγορίες
+ Κοινοποίηση
Άνοιγμα στον περιηγητή
- Προσπέραση φορτώματος
+ Παράλειψη φόρτωσης
Φόρτωση…
- Watching
- On-Hold
- Completed
- Dropped
- Plan to Watch
- None
+ Παρακολούθηση
+ Σε αναμονή
+ Ολοκληρώθηκε
+ Διακόπηκε
+ Για παρακολούθηση
+ Τίποτα
- Αναπαραγωγή Ταινείας
+ Αναπαραγωγή Ταινίας
Μετάδοση Torrent
Πηγές
Υπότιτλοι
- Ξανά φόρτωσε…
+ Προσπάθεια επανασύνδεσης…
Πίσω
Πόστερ
- Αναπαραγωγή Επισοδείου
-
- Λήξη
- Σφάλμα φόρτωσεις συνδέσμων
- Εσωτερικός χώρος
+ Αναπαραγωγή Επεισοδίου
+
+ Λήψη
+ Σφάλμα φόρτωσης συνδέσμων
+ Εσωτερικός χώρος αποθήκευσης
Dub
@@ -50,77 +50,372 @@
Λυπούμαστε, η εφαρμογή κατέρρευσε. Μια ανώνυμη αναφορά σφαλμάτων θα σταλεί στους προγραμματιστές
Απενεργοποιήστε την αυτόματη αναφορά σφαλμάτων
+ Εμφάνιση logcat 🐈
Παραπάνω πληροφορίες
- Κρύψιμο
+ Απόκρυψη
Κύριο Πόστερ
Αναπαραγωγή
Πληροφορίες
Next Random
- Change Provider
- Filter Bookmarks
- Bookmarks
- Remove
- Αναπαραγωγή Episode
+ Αλλαγή Παρόχου
+ Φιλτράρισμα Σελιδοδεικτών
+ Σελιδοδείκτες
+ Αφαίρεση
+ Αναπαραγωγή Επεισοδίου
Υποβολή
Ακύρωση
Ταχύτητα αναπαραγωγής
Ρυθμίσεις υπότιτλων
- Χρώμα κείμενου
+ Χρώμα κειμένου
Χρώμα περιγράμματος
Χρώμα φόντου
Χρώμα παραθύρου
Τύπος άκρων
Ύψωση υπότιτλων
- Επαναφορά στην προεπιλεγμένη τιμή
+ Επαναφορά στις προεπιλεγμένες τιμές
Προεπισκόπηση φόντου
Γραμματοσειρά
- Αναζήτηση με τους παρόχους
- Αναζήτηση με τύπους
- %d Benenes given to devs
- No Benenes given
+ Αναζήτηση βάσει παρόχων
+ Αναζήτηση βάσει τύπων
+ %d μπανάνες δόθηκαν στους προγραμματιστές
+ Καμία μπανάνα δεν δόθηκε
Αυτόματη επιλογή γλώσσας
Λήψη γλωσσών
- Κρατήστε πατημένο για επαναφορά στα προεπιλεγμένα
+ Κρατήστε πατημένο για επαναφορά στις προεπιλεγμένες τιμές
Συνέχεια Παρακολούθησης
Αφαίρεση
- Παραπάνω Πληροφορίες
+ Επιπλέον Πληροφορίες
- A VPN might be needed for this provider to work correctly
- This providers is a torrent, a VPN is recommended
+ Η χρήση ενός VPN ίσως χρειαστεί για την ομαλή λειτουργία του τρέχοντος παρόχου
+ Πρόκειται για torrent, η χρήση ενός VPN συνιστάται
Περιγραφή
Δεν βρέθηκε περιγραφή
Δεν βρέθηκε περιγραφή
- Picture-in-picture
- Συνεχίζει την αναπαραγωγή σε ένα μίνι παίκτη πάνω από άλλες εφαρμογές
- Αλλαγή μεγέθους παίκτη
+ Εικόνα-σε-Εικόνα
+ Συνεχίζει την αναπαραγωγή σε ένα μίνι παράθυρο πάνω από άλλες εφαρμογές
+ Αλλαγή μεγέθους παραθύρου
Αφαίρεση μαύρων περιγραμμάτων
Υπότιτλοι
- Ρυθμίσεις υποτίτλων του παίκτη
+ Ρυθμίσεις υποτίτλων του προγράμματος αναπαραγωγής
+ Chromecast Υπότιτλοι
+ Ρυθμίσεις Chromecast υποτίτλων
Eigengrau Mode
- Προσθέτει την επιλογή ταχύτητας στον παίκτη
- Σύρετε για seek
- Σύρετε αριστερά ή δεξιά για να ελέγξετε τον χρόνο στον παίκτη
+ Προσθέτει την επιλογή ταχύτητας στο πρόγραμμα αναπαραγωγής
+ Σύρετε για αναζήτηση
+ Σύρετε αριστερά ή δεξιά για να ελέγξετε τον χρόνο στην κάτω μπάρα
Σύρετε για να αλλάξετε ρυθμίσεις
Σύρετε αριστερά ή δεξιά για να αλλάξετε τη φωτεινότητα ή την ένταση
- Διπλό πάτημα για seek
- Διπλό πάτημα στα αριστερά ή δεξιά για seek μπροστά ή πίσω
+ Διπλό πάτημα για αναζήτηση
+ Διπλό πάτημα στα αριστερά ή δεξιά για αναζήτηση μπροστά ή πίσω
Αναζήτηση
- Πληροφορείες
+ Πληροφορίες
Προχωρημένη Αναζήτηση
- Δίνει τα αποτελέσματα αναζήτησης χωρισμένα ανά πάροχο
+ Δίνει τα αποτελέσματα αναζήτησης ταξινομημένα ανά πάροχο
Αποστέλλει δεδομένα μόνο για σφάλματα
Δεν στέλνει δεδομένα
Εμφάνιση ενημερώσεων
Αυτόματη αναζήτηση νέων ενημερώσεων
- Ενημέρωση σε προ-εκδόσεις
- Αναζητήστε ενημερώσεις προ-εκδόσεων αντί για κανονικές εκδόσεις
+ Ενημέρωση σε προ-εκδόσεις (beta)
+ Αναζητήστε ενημερώσεις προ-εκδόσεων (beta) αντί για σταθερές εκδόσεις
Github
- Light novel app by the same devs
- Anime app by the same devs
- Join Discord
- Δώσε benene στους devs
- Βenene δώθηκε
+ Ελαφριά novel εφαρμογή από τους ίδιους προγραμματιστές
+ Anime εφαρμογή από τους ίδιους προγραμματιστές
+ Εγγραφείτε στο Discord
+ Δώστε μπανάνα στους προγραμματιστές
+ Μπανάνα δόθηκε δώθηκε
+
+ Ταχύτητα (%.2fx)
+ Βαθμολογία: %.1f
+ Νέα ενημέρωση διαθέσιμη!\n%s -> %s
+
+ Πάτημα στη μέση για παύση
+ Χρήση φωτεινότητας συστήματος
+ Χρήση φωτεινότητας συστήματος στο ενσωματωμένο πρόγραμμα αναπαραγωγής αντί να εφαρμοστεί το προεπιλεγμένο σκούρο επικάλυμμα
+
+
+ Ενημέρωση προόδου παρακολούθησης
+ Αυτόματος συγχρονισμός της προόδου του τρέχοντος επεισοδίου
+
+ Επαναφορά δεδομένων από αντίγραφο ασφαλείας
+
+ Αντίγραφα ασφαλείας
+ Τα αντίγραφα ασφαλείας φορτώθηκαν
+ Η επαναφορά αντιγράφων ασφαλαείας απέτυχε από το αρχείο %s
+ Επιτυχής αποθήκευση δεδομένων
+ Δεν έχει δοθεί άδεια για πρόσβαση στον αποθηκευτικό χώρο, προσπαθήστε ξανά
+ Σφάλμα δημιουργίας αντιγράφων ασφαλείας %s
+
+ Λογαριασμοί
+ Ενημερώσεις και αντίγραφα ασφαλείας
+
+ Εμφάνιση filler επεισοδίου για anime
+ Εμφάνιση trailers
+ Εμφάνιση posters από kitsu
+ Απόκρυψη επιλεγμένης ποιότητας βίντεο στα αποτελέσματα αναζήτησης
+
+ App Language
+
+ Αυτός ο πάροχος δεν έχει υποστήριξη Chromecast
+ Δεν βρέθηκαν διαθέσιμοι σύνδεσμοι
+ Ο σύνδεσμος αντιγράφηκε στο πρόχειρο
+
+ Season
+ %s %d%s
+ No Season
+ Episode
+ Episodes
+ %d-%d
+ %d %s
+ S
+ E
+ No Episodes found
+
+ Διαγραφή αρχείου
+ Διαγραφή
+ Πάυση
+ Συνέχιση
+ Αυτό θα διαγράψει μόνιμα το %s\nΕπιβεβαίωση;
+ %dm\nαπομένουν
+
+ Σε εξέλιξη
+ Κατάσταση
+ Έτος
+ Διάρκεια
+ Ιστότοπος
+ Περίληψη
+
+ προστέθηκε στην ουρά
+ Δεν υπάρχουν διαθέσιμοι υπότιτλοι
+ Προεπιλεγμένοι υπότιτλοι
+
+ Ελέυθερος
+ Σε χρήση
+ Εφαρμογή
+
+ Ταινίες
+ Τηλεοπτικές Σειρές
+ Κινούμενα σχέδια
+ Torrents
+ Ντοκιμαντέρ
+ Ασιατικά Δράμα
+ Ζωντανές ροές
+ Άλλα
+
+ Ταινία
+ Σειρά
+ Cartoon
+ Ντοκιμαντέρ
+ Ασιατικό Δράμα
+ Ζωντανή ροή
+ Άλλο
+
+ Σφάλμα πηγής
+ Απομακρυσμένο σφάλμα
+ Σφάλμα απόδοσης
+ Μη αναμενόμενο σφάλμα αναπαραγωγής
+ Σφάλμα λήψης, επιβεβαιώστε ότι η άδεια αποθήκευσης είναι ενεργοποιημένη
+
+ Chromecast επεισόδο
+ Αναπαραγωγή εντός της εφαρμογής
+ Αναπαραγωγή σε %s
+ Αναπαραγωγή στον περιηγητή
+ Αντιγραφή συνδέσμου
+ Αυτόματη λήψη
+ Λήψη mirror
+ Επαναφόρτωση συνδέσμων
+ Λήψη υποτίτλων
+
+ Ποιότητα
+ Dub
+ Sub
+ Τίτλος
+ Εναλλαγή των στοιχείων UI στο poster
+
+ Κλείδωμα
+ Αλλαγή μεγέθους
+ Πηγή
+ Παράλειψη OP
+
+ Να μην εμφανιστεί ξανά
+ Παράλειψη της τρέχουσας ενημέρωσης
+ Ενημέρωση
+ Προτίμηση ποιότητας παρακολούθησης
+ Μέγιστοι χαρακτήρες για τίτλο
+ Ανάλυση αναπαραγωγής βίντεο
+
+ Μέγεθος buffer βίντεο
+ Μήκος buffer βίντεο
+ Προσωρινή μνήμη βίντεο στο δίσκο
+ Εκκαθάριση προσωρινής μνήμης βίντεο και εικόνων
+
+ Θα προκαλέσει τυχαία σφάλματα εάν οριστεί πολύ ψηλά. Μην το αλλάξετε εάν έχετε χαμηλή ποσότητα μνήμης ram, όπως σε Android TV ή παλιό τηλέφωνο
+ Μπορεί να προκαλέσει προβλήματα σε συστήματα με χαμηλό αποθηκευτικό χώρο, όπως σε συσκευές Android TV, εάν τον ρυθμίσετε πολύ ψηλά
+
+ Χρήσιμο για παράκαμψη μπλοκ ISP
+
+ Αντίγραφο ιστοτόπου
+ Αφαίρεση ιστοτόπου
+ Προσθήκη αντιγράφου ενός υπάρχοντος ιστοτόπου, με έναν διαφορετικό σύνδεσμο
+
+ Διαδρομή λήψης
+
+ Εμφάνιση Dubbed/Subbed Anime
+
+ Προσαρμογή στην οθόνη
+ Τέντωμα
+ Μεγέθυνση
+
+ Αποποίηση ευθυνών
+
+ Γενικά
+ Τυχαίο κουμπί
+ Εμφάνιση τυχαίου κουμπιού στην Αρχική οθόνη
+ Γλώσσες παρόχων
+ Διάταξη εφαρμογής
+ Προτιμώμενα μέσα
+ Ενεργοποίηση NSFW σε υποστηριζόμενους παρόχους
+ Κωδικοποίηση υποτίτλων
+ Πάροχοι
+ Διάταξη
+
+ Αυτόματο
+ Διάταξη TV
+ Διάταξη τηλεφώνου
+ Διάταξη emulator
+
+ Πρωτεύον χρώμα
+ Θέμα εφαρμογής
+ Τοποθεσία τίτλου Poster
+ Τοποθετήστε τον τίτλο κάτω από το poster
+
+ Κωδικός γλώσσας (el)
+
+ Λογαριασμός
+ Αποσύνδεση
+ Σύνδεση
+ Εναλλαγή λογαριασμού
+ Προσθήκη λογαριασμού
+ Δημιουργία λογαριασμού
+ Προσθήκη παρακολούθησης
+ Προστέθηκε %s
+ Συγχρονισμός
+ Βαθμολογήθηκε
+ Πιστοποιήθηκε %s
+ Αποτυχία πιστοποίησης σε %s
+
+ Τίποτα
+ Κανονικά
+ Όλα
+ Μέγιστο
+ Ελάχιστο
+ Περίγραμμα
+ Σε κατάθλιψη
+ Σκιά
+ Ανεβασμένοι
+ Συγχρονισμός υποτίτλων
+ 1000ms
+ Καθυστέρηση υποτίτλων
+ Χρησιμοποιήστε αυτό αν οι υπότιτλοι εμφανίζονται %dms πολύ νωρίς
+ Χρησιμοποιήστε αυτό αν οι υπότιτλοι εμφανίζονται %dms πολύ αργά
+ Καμία καθυστέρηση υποτίτλων
+
+ Συνιστώμενο
+ Φόρτωση %s
+ Φόρτωση από αρχείο
+ Φόρτωση από το Ίντερνετ
+ Λήψη αρχείου
+ Κύριο
+ Υποστηρίζεται
+ Φόντο
+
+ Πηγή
+ Τυχαίο
+
+ Έρχεται σύντομα…
+
+
+ Εικόνα Poster
+ Πρόγραμμα αναπαραγωγής
+ Ανάλυση και τίτλος
+ Τίτλος
+ Ανάλυση
+ Μη έγκυρο id
+ Μη έγκυρα δεδομένα
+ Μη έγκυρος σύνδεσμος
+ Σφάλμα
+ Αφαίρεση closed captions (για άτομα με προβλήματα ακοής) από τους υπότιτλους
+ Αφαίρεση bloat από τους υπότιτλους
+ Φιλτράρισμα ανά την προτεινόμενη γλώσσα του μέσου
+ Έξτρα
+ Τρέιλερ
+ Σύνδεσμος για stream
+ Παραπομπή
+ Επόμενο
+ Παρακολούθηση βίντεο σε αυτή την γλώσσα
+ Προηγούμενο
+ Παράλειψη διαμόρφωσης
+ Αλλαγή της εμφάνισης της συσκευής για να ταιριάζει με την συσκευή σας
+ Αναφορά κατάρρευσης
+ Τι θα θέλατε να δείτε
+ Έγινε
+ Πρόσθετα
+ Προσθήκη αποθετηρίου
+ Όνομα αποθετηρίου
+ Σύνδεσμος αποθετηρίου
+ Το πρόσθετο φορτώθηκε
+ Το πρόσθετο διαγράφηκε
+ Απέτυχε να φορτωθεί το %s
+ Ξεκίνησε η λήψη %d %s
+ Κατέβηκε το %d %s επιτυχώς
+ Όλα τα %s έχουν ήδη κατέβει
+ Μαζική λήψη
+ Πρόσθετο
+ Πρόσθετα
+ Αυτό θα διαγράψει όλα τα πρόσθετα του αποθετηρίου
+ Διαγραφή αποθετηρίου
+ Λήψη της λίστας των ιστοσελίδων που θέλετε να δείτε
+ Κατέβηκε: %d
+ Απενεργοποιήθηκε: %d
+ Δεν κατέβηκε: %d
+ Ενημερώθηκαν %d πρόσθετα
+ Προσθήκη ενός αποθετηρίου για να εγκαταστήσετε πρόσθετα ιστοσελίδας
+ Προβολή αποθετηρίων κοινότητας
+ Δημόσια λίστα
+ Κεφαλοποίηση υποτίτλων
+
+ Λήψη όλων των προσθέτων από αυτό το αποθετήριο;
+ %s (Απενεργοποιήθηκε)
+ Κομμάτια
+ Ηχητικά κομμάτια
+ Κομμάτια βίντεο
+ Εφαρμογή στην επανεκκίνηση
+
+ Η ασφαλής λειτουργία ενεργοποιήθηκε
+ Ένα μη αντιστρέψιμο σφάλμα συνέβη και απενεργοποιήσαμε όλα τα πρόσθετα, ώστε να μπορέσετε να διαπιστώσετε ποιο πρόσθετο προκάλεσε αυτή τη κατάρρευση.
+ Προβολή πληροφορίας κατάρρευσης
+
+ Βαθμολογία: %s
+ Περιγραφή
+ Έκδοση
+ Κατάσταση
+ Μέγεθος
+ Συγγραφείς
+ Υποστηρίζονται
+ Γλώσσα
+ Εγκατάσταση προσθέτου πρώτα
+
+ HLS Playlist
+
+ Προτεινόμενο πρόγραμμα αναπαραγωγής
+ Ενσωματωμένο πρόγραμμα αναπαραγωγής
+ VLC
+ MPV
+ Web Video Cast
+ Περιηγητής
+ Η εφαρμογή δεν βρέθηκε
+
+
From 98ef6a3f160d73f66095643892858a24f4ed43ce Mon Sep 17 00:00:00 2001
From: Hexated <37908684+hexated@users.noreply.github.com>
Date: Tue, 11 Oct 2022 02:43:56 +0700
Subject: [PATCH 2/4] added Vidmoly & Voe (extractor) (#147)
---
.../cloudstream3/extractors/Vidmoly.kt | 69 +++++++++++++++++++
.../lagradost/cloudstream3/extractors/Voe.kt | 32 +++++++++
.../cloudstream3/utils/ExtractorApi.kt | 30 ++++++--
3 files changed, 127 insertions(+), 4 deletions(-)
create mode 100644 app/src/main/java/com/lagradost/cloudstream3/extractors/Vidmoly.kt
create mode 100644 app/src/main/java/com/lagradost/cloudstream3/extractors/Voe.kt
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Vidmoly.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Vidmoly.kt
new file mode 100644
index 00000000..615cfd74
--- /dev/null
+++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Vidmoly.kt
@@ -0,0 +1,69 @@
+package com.lagradost.cloudstream3.extractors
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.lagradost.cloudstream3.SubtitleFile
+import com.lagradost.cloudstream3.app
+import com.lagradost.cloudstream3.utils.*
+import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson
+
+class Vidmolyme : Vidmoly() {
+ override val mainUrl = "https://vidmoly.me"
+}
+
+open class Vidmoly : ExtractorApi() {
+ override val name = "Vidmoly"
+ override val mainUrl = "https://vidmoly.to"
+ override val requiresReferer = true
+
+ private fun String.addMarks(str: String): String {
+ return this.replace(Regex("\"?$str\"?"), "\"$str\"")
+ }
+
+ override suspend fun getUrl(
+ url: String,
+ referer: String?,
+ subtitleCallback: (SubtitleFile) -> Unit,
+ callback: (ExtractorLink) -> Unit
+ ) {
+
+ val script = app.get(
+ url,
+ referer = referer,
+ ).document.select("script")
+ .find { it.data().contains("sources:") }?.data()
+ val videoData = script?.substringAfter("sources: [")
+ ?.substringBefore("],")?.addMarks("file")
+ val subData = script?.substringAfter("tracks: [")?.substringBefore("]")?.addMarks("file")
+ ?.addMarks("label")?.addMarks("kind")
+
+ tryParseJson(videoData)?.file?.let { m3uLink ->
+ M3u8Helper.generateM3u8(
+ name,
+ m3uLink,
+ "$mainUrl/"
+ ).forEach(callback)
+ }
+
+ tryParseJson>("[${subData}]")
+ ?.filter { it.kind == "captions" }?.map {
+ subtitleCallback.invoke(
+ SubtitleFile(
+ it.label.toString(),
+ fixUrl(it.file.toString())
+ )
+ )
+ }
+
+ }
+
+ private data class Source(
+ @JsonProperty("file") val file: String? = null,
+ )
+
+ private data class SubSource(
+ @JsonProperty("file") val file: String? = null,
+ @JsonProperty("label") val label: String? = null,
+ @JsonProperty("kind") val kind: String? = null,
+ )
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Voe.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Voe.kt
new file mode 100644
index 00000000..12a76a9b
--- /dev/null
+++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Voe.kt
@@ -0,0 +1,32 @@
+package com.lagradost.cloudstream3.extractors
+
+import com.lagradost.cloudstream3.SubtitleFile
+import com.lagradost.cloudstream3.app
+import com.lagradost.cloudstream3.utils.ExtractorApi
+import com.lagradost.cloudstream3.utils.ExtractorLink
+import com.lagradost.cloudstream3.utils.M3u8Helper
+
+open class Voe : ExtractorApi() {
+ override val name = "Voe"
+ override val mainUrl = "https://voe.sx"
+ override val requiresReferer = true
+
+ override suspend fun getUrl(
+ url: String,
+ referer: String?,
+ subtitleCallback: (SubtitleFile) -> Unit,
+ callback: (ExtractorLink) -> Unit
+ ) {
+ val res = app.get(url, referer = referer).document
+ val link = res.select("script").find { it.data().contains("const sources") }?.data()
+ ?.substringAfter("\"hls\": \"")?.substringBefore("\",")
+
+ M3u8Helper.generateM3u8(
+ name,
+ link ?: return,
+ "$mainUrl/",
+ headers = mapOf("Origin" to "$mainUrl/")
+ ).forEach(callback)
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt
index 199f0398..ebaaa12b 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt
@@ -1,10 +1,7 @@
package com.lagradost.cloudstream3.utils
import android.net.Uri
-import com.lagradost.cloudstream3.SubtitleFile
-import com.lagradost.cloudstream3.TvType
-import com.lagradost.cloudstream3.USER_AGENT
-import com.lagradost.cloudstream3.app
+import com.lagradost.cloudstream3.*
import com.lagradost.cloudstream3.mvvm.logError
import com.lagradost.cloudstream3.extractors.*
import kotlinx.coroutines.delay
@@ -323,6 +320,9 @@ val extractorApis: MutableList = arrayListOf(
Embedgram(),
Mvidoo(),
Streamplay(),
+ Vidmoly(),
+ Vidmolyme(),
+ Voe(),
Gdriveplayerapi(),
Gdriveplayerapp(),
@@ -399,6 +399,28 @@ suspend fun getPostForm(requestUrl: String, html: String): String? {
).text
}
+fun ExtractorApi.fixUrl(url: String): String {
+ if (url.startsWith("http") ||
+ // Do not fix JSON objects when passed as urls.
+ url.startsWith("{\"")
+ ) {
+ return url
+ }
+ if (url.isEmpty()) {
+ return ""
+ }
+
+ val startsWithNoHttp = url.startsWith("//")
+ if (startsWithNoHttp) {
+ return "https:$url"
+ } else {
+ if (url.startsWith('/')) {
+ return mainUrl + url
+ }
+ return "$mainUrl/$url"
+ }
+}
+
abstract class ExtractorApi {
abstract val name: String
abstract val mainUrl: String
From a43e950a488637873553d4a46f49a8bb80a86542 Mon Sep 17 00:00:00 2001
From: LagradOst <46196380+Blatzar@users.noreply.github.com>
Date: Mon, 10 Oct 2022 21:51:03 +0200
Subject: [PATCH 3/4] Remove provider language (#141)
---
.../com/lagradost/cloudstream3/MainAPI.kt | 30 ++++++++++++-------
.../ui/setup/SetupFragmentExtensions.kt | 2 +-
.../ui/setup/SetupFragmentLanguage.kt | 2 +-
.../main/res/navigation/mobile_navigation.xml | 14 +++++++++
app/src/main/res/xml/settings_providers.xml | 1 +
5 files changed, 36 insertions(+), 13 deletions(-)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt b/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt
index 416a7238..a06dd95e 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt
@@ -17,8 +17,7 @@ import com.lagradost.cloudstream3.ui.player.SubtitleData
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
import com.lagradost.cloudstream3.utils.AppUtils.toJson
import com.lagradost.cloudstream3.utils.ExtractorLink
-import com.lagradost.cloudstream3.utils.Qualities
-import com.lagradost.cloudstream3.utils.loadExtractor
+import com.lagradost.cloudstream3.utils.SubtitleHelper
import okhttp3.Interceptor
import java.text.SimpleDateFormat
import java.util.*
@@ -191,17 +190,26 @@ object APIHolder {
return list.filter { names.contains(it) }.map { DubStatus.valueOf(it) }.toHashSet()
}
+ /**
+ * Gets all the activated provider languages
+ * Used to obey the preference provider_lang_key
+ * but it turned out too complicated and unnecessary with extensions.
+ **/
fun Context.getApiProviderLangSettings(): HashSet {
- val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
- val hashSet = HashSet()
- hashSet.add("en") // def is only en
- val list = settingsManager.getStringSet(
- this.getString(R.string.provider_lang_key),
- hashSet.toMutableSet()
- )
+ val langs = apis.map { it.lang }.toSet()
+ .sortedBy { SubtitleHelper.fromTwoLettersToLanguage(it) }
+ return langs.toHashSet()
- if (list.isNullOrEmpty()) return hashSet
- return list.toHashSet()
+// val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
+// val hashSet = HashSet()
+// hashSet.add("en") // def is only en
+// val list = settingsManager.getStringSet(
+// this.getString(R.string.provider_lang_key),
+// hashSet.toMutableSet()
+// )
+//
+// if (list.isNullOrEmpty()) return hashSet
+// return list.toHashSet()
}
fun Context.getApiTypeSettings(): HashSet {
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentExtensions.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentExtensions.kt
index 43037038..0f11f214 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentExtensions.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentExtensions.kt
@@ -100,7 +100,7 @@ class SetupFragmentExtensions : Fragment() {
next_btt?.setOnClickListener {
// Continue setup
if (isSetup)
- findNavController().navigate(R.id.action_navigation_setup_extensions_to_navigation_setup_provider_languages)
+ findNavController().navigate(R.id.action_navigation_setup_extensions_to_navigation_setup_media)
else
findNavController().navigate(R.id.navigation_home)
}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentLanguage.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentLanguage.kt
index 71472328..f9268d77 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentLanguage.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/setup/SetupFragmentLanguage.kt
@@ -85,7 +85,7 @@ class SetupFragmentLanguage : Fragment() {
&& PluginManager.getPluginsLocal().isEmpty()
//&& PREBUILT_REPOSITORIES.isNotEmpty()
) R.id.action_navigation_global_to_navigation_setup_extensions
- else R.id.action_navigation_setup_language_to_navigation_setup_provider_languages
+ else R.id.action_navigation_setup_language_to_navigation_setup_media
findNavController().navigate(
nextDestination,
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
index 3c45ee70..94d489fd 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -522,6 +522,13 @@
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popExitAnim="@anim/exit_anim" />
+
+
From fc7e39e3ccd0a18ec2cf95a445d3f481a58b3473 Mon Sep 17 00:00:00 2001
From: SANCTI-afk <63229113+SANCTI-afk@users.noreply.github.com>
Date: Mon, 10 Oct 2022 21:58:28 +0200
Subject: [PATCH 4/4] arabicLanguage (#118)
* arabicLanguage100%
* Update strings.xml
* Arabic Full
* translated(preffVplayerBtn)
---
app/src/main/res/values-ar/strings.xml | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index 3fb2e26c..edac2760 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -13,16 +13,16 @@
سرعة (%.2fx)
- Rated: %.1f
+ تقييم: %.1f
- !تم إيجاد تحديث جديد\n%s -> %s
+ !تم العثور علي تحديث جديد\n%s -> %s
%d دقيقة
CloudStream
تشغيل بواسطة CloudStream
الصفحة الرئيسية
البحث
- التحميلات
+ التنزيلات
الإعدادات
…بحث
@@ -210,14 +210,14 @@
لا موسم
حلقة
حلقات
- ح
- م
+ م
+ ح
لم يتم العثور على أي حلقات
حذف الملف
حذف
إيقاف مؤقت
- أكمل
+ إستئناف
-٣٠
+٣٠
سوف يتم الحذف نهائيا %s\nهل أنت متأكد?
@@ -292,7 +292,7 @@
show_title_key
التحكم في عناصر الواجهة علي الملصق
- لم يتم العثور على تحديث
+ لم يتم العثور على تحديثات
تحقق من التحديثات
قفل
@@ -404,7 +404,7 @@
إضافة تتبع
تم إضافة %s
مزامنة
- مقيّم
+ تقييم
%d / 10
/??
/%d
@@ -538,4 +538,5 @@
اللغة
قائمة HLS
+ مُشغل الفيديو المفضل