mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	removed crash stuff
This commit is contained in:
		
							parent
							
								
									3e3e1b6a9d
								
							
						
					
					
						commit
						3ab3986e22
					
				
					 9 changed files with 37 additions and 136 deletions
				
			
		|  | @ -641,15 +641,15 @@ class PlayerFragment : Fragment() { | |||
|                 data.isAnimeBased()//(data is AnimeLoadResponse && (data.type == TvType.Anime || data.type == TvType.ONA)) | ||||
| 
 | ||||
|             skip_op?.setVis(isAnime && !nextEp) | ||||
|             skip_episode.setVis((!isAnime || nextEp) && hasNext) | ||||
|             skip_episode?.setVis((!isAnime || nextEp) && hasNext) | ||||
|         } else { | ||||
|             val isAnime = data.isAnimeBased() | ||||
| 
 | ||||
|             if (isAnime) { | ||||
|                 skip_op?.setVis(true) | ||||
|                 skip_episode.setVis(false) | ||||
|                 skip_episode?.setVis(false) | ||||
|             } else { | ||||
|                 skip_episode.setVis(data.isEpisodeBased()) | ||||
|                 skip_episode?.setVis(data.isEpisodeBased()) | ||||
|                 skip_op?.setVis(false) | ||||
|             } | ||||
|         } | ||||
|  | @ -795,7 +795,7 @@ class PlayerFragment : Fragment() { | |||
|         //next_episode_btt.isClickable = isClick | ||||
|         playback_speed_btt.isClickable = isClick | ||||
|         skip_op?.isClickable = isClick | ||||
|         skip_episode.isClickable = isClick | ||||
|         skip_episode?.isClickable = isClick | ||||
|         resize_player.isClickable = isClick | ||||
|         exo_progress.isEnabled = isClick | ||||
|         player_media_route_button.isEnabled = isClick | ||||
|  | @ -1409,7 +1409,7 @@ class PlayerFragment : Fragment() { | |||
|             skipOP() | ||||
|         } | ||||
| 
 | ||||
|         skip_episode.setOnClickListener { | ||||
|         skip_episode?.setOnClickListener { | ||||
|             if (hasNextEpisode()) { | ||||
|                 skipToNextEpisode() | ||||
|             } | ||||
|  |  | |||
|  | @ -962,12 +962,12 @@ class ResultFragment : Fragment() { | |||
|                             lateFixDownloadButton(true) | ||||
| 
 | ||||
|                             result_play_movie.setOnClickListener { | ||||
|                                 val card = currentEpisodes?.first() ?: return@setOnClickListener | ||||
|                                 val card = currentEpisodes?.firstOrNull() ?: return@setOnClickListener | ||||
|                                 handleAction(EpisodeClickEvent(ACTION_CLICK_DEFAULT, card)) | ||||
|                             } | ||||
| 
 | ||||
|                             result_play_movie.setOnLongClickListener { | ||||
|                                 val card = currentEpisodes?.first() ?: return@setOnLongClickListener true | ||||
|                                 val card = currentEpisodes?.firstOrNull() ?: return@setOnLongClickListener true | ||||
|                                 handleAction(EpisodeClickEvent(ACTION_SHOW_OPTIONS, card)) | ||||
|                                 return@setOnLongClickListener true | ||||
|                             } | ||||
|  | @ -1004,7 +1004,7 @@ class ResultFragment : Fragment() { | |||
|                                     ) | ||||
|                                 ) { downloadClickEvent -> | ||||
|                                     if (downloadClickEvent.action == DOWNLOAD_ACTION_DOWNLOAD) { | ||||
|                                         currentEpisodes?.first()?.let { episode -> | ||||
|                                         currentEpisodes?.firstOrNull()?.let { episode -> | ||||
|                                             handleAction( | ||||
|                                                 EpisodeClickEvent( | ||||
|                                                     ACTION_DOWNLOAD_EPISODE, | ||||
|  |  | |||
|  | @ -1,43 +0,0 @@ | |||
| package com.lagradost.cloudstream3.ui.settings | ||||
| 
 | ||||
| import com.fasterxml.jackson.annotation.JsonProperty | ||||
| import com.fasterxml.jackson.module.kotlin.readValue | ||||
| import com.lagradost.cloudstream3.BuildConfig | ||||
| import com.lagradost.cloudstream3.mapper | ||||
| 
 | ||||
| object ScoreManager { | ||||
|     private const val mainUrl = "http://dreamlo.com" | ||||
|     private const val publicCode = "612d3dcf8f40bb6e98bece15" | ||||
|     var privateCode: String? = BuildConfig.PRIVATE_BENENE_KEY // plz keep it a bit fair | ||||
| 
 | ||||
|     data class DreamloMain( | ||||
|         @JsonProperty("dreamlo") var dreamlo: Dreamlo | ||||
|     ) | ||||
| 
 | ||||
|     data class Dreamlo( | ||||
|         @JsonProperty("leaderboard") var leaderboard: Leaderboard | ||||
|     ) | ||||
| 
 | ||||
|     data class Leaderboard( | ||||
|         @JsonProperty("entry") var entry: List<DreamloEntry> | ||||
|     ) | ||||
| 
 | ||||
|     data class DreamloEntry( | ||||
|         @JsonProperty("name") var name: String, | ||||
|         @JsonProperty("score") var score: String, | ||||
|         //@JsonProperty("seconds") var seconds: String, | ||||
|         //@JsonProperty("text") var text: String, | ||||
|         // @JsonProperty("date") var date: String | ||||
|     ) | ||||
| 
 | ||||
|     fun getScore(): List<DreamloEntry> { | ||||
|         val response = khttp.get("$mainUrl/lb/$publicCode/json") | ||||
| 
 | ||||
|         return mapper.readValue<DreamloMain>(response.text).dreamlo.leaderboard.entry | ||||
|     } | ||||
| 
 | ||||
|     fun addScore(name: String, score: Int) { // plz dont cheat | ||||
|         if (score < 0 || score > 100000 || privateCode.isNullOrBlank()) return | ||||
|         khttp.get("$mainUrl/lb/$privateCode/add/$name/$score") | ||||
|     } | ||||
| } | ||||
|  | @ -20,50 +20,6 @@ import kotlin.concurrent.thread | |||
| 
 | ||||
| class SettingsFragment : PreferenceFragmentCompat() { | ||||
|     var count = 0 | ||||
|     private var scoreboard: List<ScoreManager.DreamloEntry>? = null | ||||
| 
 | ||||
|     private var usernameUUID: String? = null | ||||
| 
 | ||||
|     var ongoingJob: Job? = null | ||||
| 
 | ||||
|     private fun saveAfterTime() { | ||||
|         ongoingJob?.cancel() | ||||
|         ongoingJob = main { | ||||
|             delay(10000) // dont ddos the scoreboard | ||||
|             saveAndUpload() | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private fun saveAndUpload() { | ||||
|         if (ScoreManager.privateCode.isNullOrBlank()) return | ||||
|         try { | ||||
|             val settingsManager = PreferenceManager.getDefaultSharedPreferences(context) | ||||
|             val uuid = usernameUUID | ||||
|             if (uuid != null) { | ||||
|                 settingsManager.edit() | ||||
|                     .putString(getString(R.string.benene_count_uuid), uuid) | ||||
|                     .putInt(getString(R.string.benene_count), count) | ||||
|                     .apply() | ||||
|                 thread { | ||||
|                     normalSafeApiCall { | ||||
|                         ScoreManager.addScore(uuid, count) | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } catch (e: Exception) { | ||||
|             e.printStackTrace() | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     override fun onPause() { | ||||
|         saveAndUpload() | ||||
|         super.onPause() | ||||
|     } | ||||
| 
 | ||||
|     override fun onDestroy() { | ||||
|         saveAndUpload() | ||||
|         super.onDestroy() | ||||
|     } | ||||
| 
 | ||||
|     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { | ||||
|         hideKeyboard() | ||||
|  | @ -76,15 +32,7 @@ class SettingsFragment : PreferenceFragmentCompat() { | |||
|             val settingsManager = PreferenceManager.getDefaultSharedPreferences(context) | ||||
| 
 | ||||
|             count = settingsManager.getInt(getString(R.string.benene_count), 0) | ||||
|             usernameUUID = | ||||
|                 settingsManager.getString(getString(R.string.benene_count_uuid), UUID.randomUUID().toString()) | ||||
|             if (count > 20) { | ||||
|                 if (!ScoreManager.privateCode.isNullOrBlank()) { | ||||
|                     thread { | ||||
|                         scoreboard = normalSafeApiCall { ScoreManager.getScore() } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             benenePref.summary = | ||||
|                 if (count <= 0) getString(R.string.benene_count_text_none) else getString(R.string.benene_count_text).format( | ||||
|                     count | ||||
|  | @ -93,18 +41,7 @@ class SettingsFragment : PreferenceFragmentCompat() { | |||
|                 try { | ||||
|                     count++ | ||||
|                     settingsManager.edit().putInt(getString(R.string.benene_count), count).apply() | ||||
|                     var add = "" | ||||
|                     val localScoreBoard = scoreboard | ||||
|                     if (localScoreBoard != null) { | ||||
|                         for ((index, score) in localScoreBoard.withIndex()) { | ||||
|                             if (count > (score.score.toIntOrNull() ?: 0)) { | ||||
|                                 add = " (${index + 1}/${localScoreBoard.size})" | ||||
|                                 break | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                     it.summary = getString(R.string.benene_count_text).format(count) + add | ||||
|                     saveAfterTime() | ||||
|                     it.summary = getString(R.string.benene_count_text).format(count) | ||||
|                 } catch (e: Exception) { | ||||
|                     e.printStackTrace() | ||||
|                 } | ||||
|  |  | |||
|  | @ -21,6 +21,7 @@ import com.fasterxml.jackson.module.kotlin.readValue | |||
| import com.lagradost.cloudstream3.BuildConfig | ||||
| import com.lagradost.cloudstream3.MainActivity.Companion.showToast | ||||
| import com.lagradost.cloudstream3.R | ||||
| import com.lagradost.cloudstream3.mvvm.normalSafeApiCall | ||||
| import java.io.File | ||||
| import kotlin.concurrent.thread | ||||
| 
 | ||||
|  | @ -235,7 +236,8 @@ class InAppUpdater { | |||
|                             setPositiveButton("Update") { _, _ -> | ||||
|                                 showToast(context, "Download started", Toast.LENGTH_LONG) | ||||
|                                 thread { | ||||
|                                     val downloadStatus = context.downloadUpdate(update.updateURL) | ||||
|                                     val downloadStatus = | ||||
|                                         normalSafeApiCall { context.downloadUpdate(update.updateURL) } ?: false | ||||
|                                     if (!downloadStatus) { | ||||
|                                         runOnUiThread { | ||||
|                                             showToast( | ||||
|  |  | |||
|  | @ -141,6 +141,7 @@ object VideoDownloadManager { | |||
|     private const val SUCCESS_STOPPED = 2 | ||||
|     private const val ERROR_DELETING_FILE = 3 // will not download the next one, but is still classified as an error | ||||
|     private const val ERROR_CREATE_FILE = -2 | ||||
|     private const val ERROR_UNKNOWN = -10 | ||||
|     private const val ERROR_OPEN_FILE = -3 | ||||
|     private const val ERROR_TOO_SMALL_CONNECTION = -4 | ||||
|     private const val ERROR_WRONG_CONTENT = -5 | ||||
|  | @ -756,7 +757,7 @@ object VideoDownloadManager { | |||
|         createNotificationCallback: (CreateNotificationMetadata) -> Unit | ||||
|     ): Int { | ||||
|         if (link.url.startsWith("magnet") || link.url.endsWith(".torrent")) { | ||||
|             return downloadTorrent(context, link.url, name, folder, extension, parentId, createNotificationCallback) | ||||
|             return normalSafeApiCall { downloadTorrent(context, link.url, name, folder, extension, parentId, createNotificationCallback) } ?: ERROR_UNKNOWN | ||||
|         } | ||||
| 
 | ||||
|         val relativePath = (Environment.DIRECTORY_DOWNLOADS + '/' + folder + '/').replace('/', File.separatorChar) | ||||
|  | @ -880,10 +881,15 @@ object VideoDownloadManager { | |||
|         // ON CONNECTION | ||||
|         connection.connect() | ||||
| 
 | ||||
|         val contentLength = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { // fuck android | ||||
|             connection.contentLengthLong | ||||
|         } else { | ||||
|             connection.getHeaderField("content-length").toLongOrNull() ?: connection.contentLength.toLong() | ||||
|         val contentLength = try { | ||||
|             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { // fuck android | ||||
|                 connection.contentLengthLong ?: 0L | ||||
|             } else { | ||||
|                 connection.getHeaderField("content-length").toLongOrNull() ?: connection.contentLength?.toLong() ?: 0L | ||||
|             } | ||||
|         } catch (e: Exception) { | ||||
|             e.printStackTrace() | ||||
|             0L | ||||
|         } | ||||
|         val bytesTotal = contentLength + resumeLength | ||||
| 
 | ||||
|  | @ -1050,17 +1056,19 @@ object VideoDownloadManager { | |||
|     ): Int { | ||||
|         val name = sanitizeFilename(ep.name ?: "Episode ${ep.episode}") | ||||
| 
 | ||||
|         return downloadThing(context, link, name, folder, "mp4", tryResume, ep.id) { meta -> | ||||
|             createNotification( | ||||
|                 context, | ||||
|                 source, | ||||
|                 link.name, | ||||
|                 ep, | ||||
|                 meta.type, | ||||
|                 meta.bytesDownloaded, | ||||
|                 meta.bytesTotal | ||||
|             ) | ||||
|         } | ||||
|         return normalSafeApiCall { | ||||
|             downloadThing(context, link, name, folder, "mp4", tryResume, ep.id) { meta -> | ||||
|                 createNotification( | ||||
|                     context, | ||||
|                     source, | ||||
|                     link.name, | ||||
|                     ep, | ||||
|                     meta.type, | ||||
|                     meta.bytesDownloaded, | ||||
|                     meta.bytesTotal | ||||
|                 ) | ||||
|             } | ||||
|         } ?: ERROR_UNKNOWN | ||||
|     } | ||||
| 
 | ||||
|     private fun downloadCheck(context: Context) { | ||||
|  |  | |||
|  | @ -21,7 +21,6 @@ | |||
|                 android:layout_marginEnd="30dp" | ||||
|                 android:layout_height="30dp"> | ||||
|             <androidx.appcompat.widget.SearchView | ||||
|                     android:animateLayoutChanges="true" | ||||
|                     android:id="@+id/main_search" | ||||
|                     app:queryBackground="@color/transparent" | ||||
|                     app:searchIcon="@drawable/search_icon" | ||||
|  |  | |||
|  | @ -89,7 +89,6 @@ | |||
|     <string name="prerelease_update_key">prerelease_update</string> | ||||
|     <string name="manual_check_update_key">manual_check_update</string> | ||||
|     <string name="benene_count">benene_count</string> | ||||
|     <string name="benene_count_uuid">benene_count_uuid</string> | ||||
|     <string name="benene_count_text">%d Benenes given to devs</string> | ||||
|     <string name="benene_count_text_none">No Benenes given</string> | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue