forked from recloudstream/cloudstream
		
	added webvideocaster
This commit is contained in:
		
							parent
							
								
									88a7248e47
								
							
						
					
					
						commit
						071004f6c2
					
				
					 33 changed files with 209 additions and 118 deletions
				
			
		|  | @ -23,6 +23,7 @@ | ||||||
| 
 | 
 | ||||||
|     <queries> |     <queries> | ||||||
|         <package android:name="org.videolan.vlc" /> |         <package android:name="org.videolan.vlc" /> | ||||||
|  |         <package android:name="com.instantbits.cast.webvideo" /> | ||||||
|     </queries> |     </queries> | ||||||
| 
 | 
 | ||||||
|     <!--TODO https://stackoverflow.com/questions/41799732/chromecast-button-not-visible-in-android--> |     <!--TODO https://stackoverflow.com/questions/41799732/chromecast-button-not-visible-in-android--> | ||||||
|  |  | ||||||
|  | @ -101,12 +101,13 @@ val VLC_COMPONENT: ComponentName = | ||||||
|     ComponentName(VLC_PACKAGE, "org.videolan.vlc.gui.video.VideoPlayerActivity") |     ComponentName(VLC_PACKAGE, "org.videolan.vlc.gui.video.VideoPlayerActivity") | ||||||
| const val VLC_REQUEST_CODE = 42 | const val VLC_REQUEST_CODE = 42 | ||||||
| 
 | 
 | ||||||
| const val VLC_FROM_START = -1 |  | ||||||
| const val VLC_FROM_PROGRESS = -2 |  | ||||||
| const val VLC_EXTRA_POSITION_OUT = "extra_position" | const val VLC_EXTRA_POSITION_OUT = "extra_position" | ||||||
| const val VLC_EXTRA_DURATION_OUT = "extra_duration" | const val VLC_EXTRA_DURATION_OUT = "extra_duration" | ||||||
| const val VLC_LAST_ID_KEY = "vlc_last_open_id" | const val VLC_LAST_ID_KEY = "vlc_last_open_id" | ||||||
| 
 | 
 | ||||||
|  | const val WEB_VIDEO_CAST_PACKAGE = "com.instantbits.cast.webvideo" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| // Short name for requests client to make it nicer to use | // Short name for requests client to make it nicer to use | ||||||
| 
 | 
 | ||||||
| var app = Requests(responseParser = object : ResponseParser { | var app = Requests(responseParser = object : ResponseParser { | ||||||
|  |  | ||||||
|  | @ -55,6 +55,9 @@ const val ACTION_SHOW_DESCRIPTION = 15 | ||||||
| const val ACTION_DOWNLOAD_EPISODE_SUBTITLE = 13 | const val ACTION_DOWNLOAD_EPISODE_SUBTITLE = 13 | ||||||
| const val ACTION_DOWNLOAD_EPISODE_SUBTITLE_MIRROR = 14 | const val ACTION_DOWNLOAD_EPISODE_SUBTITLE_MIRROR = 14 | ||||||
| 
 | 
 | ||||||
|  | const val ACTION_PLAY_EPISODE_IN_WEB_VIDEO = 16 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| data class EpisodeClickEvent(val action: Int, val data: ResultEpisode) | data class EpisodeClickEvent(val action: Int, val data: ResultEpisode) | ||||||
| 
 | 
 | ||||||
| class EpisodeAdapter( | class EpisodeAdapter( | ||||||
|  | @ -73,6 +76,7 @@ class EpisodeAdapter( | ||||||
|                 1 -> ACTION_PLAY_EPISODE_IN_PLAYER |                 1 -> ACTION_PLAY_EPISODE_IN_PLAYER | ||||||
|                 2 -> ACTION_PLAY_EPISODE_IN_VLC_PLAYER |                 2 -> ACTION_PLAY_EPISODE_IN_VLC_PLAYER | ||||||
|                 3 -> ACTION_PLAY_EPISODE_IN_BROWSER |                 3 -> ACTION_PLAY_EPISODE_IN_BROWSER | ||||||
|  |                 4 -> ACTION_PLAY_EPISODE_IN_WEB_VIDEO | ||||||
|                 else -> ACTION_PLAY_EPISODE_IN_PLAYER |                 else -> ACTION_PLAY_EPISODE_IN_PLAYER | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ package com.lagradost.cloudstream3.ui.result | ||||||
| import android.app.Activity | import android.app.Activity | ||||||
| import android.content.* | import android.content.* | ||||||
| import android.net.Uri | import android.net.Uri | ||||||
|  | import android.os.Bundle | ||||||
| import android.util.Log | import android.util.Log | ||||||
| import android.widget.Toast | import android.widget.Toast | ||||||
| import androidx.core.content.FileProvider | import androidx.core.content.FileProvider | ||||||
|  | @ -51,9 +52,7 @@ import com.lagradost.cloudstream3.utils.DataStoreHelper.getViewPos | ||||||
| import com.lagradost.cloudstream3.utils.DataStoreHelper.setDub | import com.lagradost.cloudstream3.utils.DataStoreHelper.setDub | ||||||
| import com.lagradost.cloudstream3.utils.DataStoreHelper.setResultEpisode | import com.lagradost.cloudstream3.utils.DataStoreHelper.setResultEpisode | ||||||
| import com.lagradost.cloudstream3.utils.DataStoreHelper.setResultSeason | import com.lagradost.cloudstream3.utils.DataStoreHelper.setResultSeason | ||||||
| import com.lagradost.cloudstream3.utils.UIHelper.checkWrite |  | ||||||
| import com.lagradost.cloudstream3.utils.UIHelper.navigate | import com.lagradost.cloudstream3.utils.UIHelper.navigate | ||||||
| import com.lagradost.cloudstream3.utils.UIHelper.requestRW |  | ||||||
| import kotlinx.coroutines.* | import kotlinx.coroutines.* | ||||||
| import java.io.File | import java.io.File | ||||||
| import java.lang.Math.abs | import java.lang.Math.abs | ||||||
|  | @ -955,26 +954,64 @@ class ResultViewModel2 : ViewModel() { | ||||||
|         return LinkLoadingResult(sortUrls(links), sortSubs(subs)) |         return LinkLoadingResult(sortUrls(links), sortSubs(subs)) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     private fun launchActivity( | ||||||
|  |         activity: Activity?, | ||||||
|  |         work: suspend (CoroutineScope.(Activity) -> Unit) | ||||||
|  |     ): Job? { | ||||||
|  |         val act = activity ?: return null | ||||||
|  |         return CoroutineScope(Dispatchers.IO).launch { | ||||||
|  |             try { | ||||||
|  |                 work(act) | ||||||
|  |             } catch (t: Throwable) { | ||||||
|  |                 logError(t) | ||||||
|  |                 main { | ||||||
|  |                     if (t is ActivityNotFoundException) { | ||||||
|  |                         showToast(activity, txt(R.string.app_not_found_error), Toast.LENGTH_LONG) | ||||||
|  |                     } else { | ||||||
|  |                         showToast(activity, t.toString(), Toast.LENGTH_LONG) | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private fun playInWebVideo( | ||||||
|  |         activity: Activity?, | ||||||
|  |         link: ExtractorLink, | ||||||
|  |         title: String?, | ||||||
|  |         posterUrl: String?, | ||||||
|  |         subtitles: List<SubtitleData> | ||||||
|  |     ) = launchActivity(activity) { act -> | ||||||
|  |         val shareVideo = Intent(Intent.ACTION_VIEW) | ||||||
|  | 
 | ||||||
|  |         shareVideo.setDataAndType(Uri.parse(link.url), "video/*") | ||||||
|  |         shareVideo.setPackage(WEB_VIDEO_CAST_PACKAGE) | ||||||
|  |         shareVideo.putExtra("subs", subtitles.map { it.url.toUri() }.toTypedArray()) | ||||||
|  |         title?.let { shareVideo.putExtra("title", title) } | ||||||
|  |         posterUrl?.let { shareVideo.putExtra("poster", posterUrl) } | ||||||
|  |         val headers = Bundle().apply { | ||||||
|  |             if (link.referer.isNotBlank()) | ||||||
|  |                 putString("Referer", link.referer) | ||||||
|  |             putString("User-Agent", USER_AGENT) | ||||||
|  |             for ((key, value) in link.headers) { | ||||||
|  |                 putString(key, value) | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         shareVideo.putExtra("android.media.intent.extra.HTTP_HEADERS", headers) | ||||||
|  |         shareVideo.putExtra("secure_uri", true) | ||||||
|  | 
 | ||||||
|  |         act.startActivity(shareVideo) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     // https://wiki.videolan.org/Android_Player_Intents/ |     // https://wiki.videolan.org/Android_Player_Intents/ | ||||||
|     private fun playWithVlc( |     private fun playWithVlc( | ||||||
|         act: Activity?, |         activity: Activity?, | ||||||
|         data: LinkLoadingResult, |         data: LinkLoadingResult, | ||||||
|         id: Int, |         id: Int, | ||||||
|         resume: Boolean = true, |         resume: Boolean = true, | ||||||
|         // if it is only a single link then resume works correctly |         // if it is only a single link then resume works correctly | ||||||
|         singleFile: Boolean? = null |         singleFile: Boolean? = null | ||||||
|     ) = ioSafe { |     ) = launchActivity(activity) { act -> | ||||||
|         if (act == null) return@ioSafe |  | ||||||
|         if (data.links.isEmpty()) { |  | ||||||
|             showToast(act, R.string.no_links_found_toast, Toast.LENGTH_SHORT) |  | ||||||
|             return@ioSafe |  | ||||||
|         } |  | ||||||
|         try { |  | ||||||
|             if (!act.checkWrite()) { |  | ||||||
|                 act.requestRW() |  | ||||||
|                 if (act.checkWrite()) return@ioSafe |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|         val vlcIntent = Intent(VLC_INTENT_ACTION_RESULT) |         val vlcIntent = Intent(VLC_INTENT_ACTION_RESULT) | ||||||
| 
 | 
 | ||||||
|         vlcIntent.setPackage(VLC_PACKAGE) |         vlcIntent.setPackage(VLC_PACKAGE) | ||||||
|  | @ -1039,22 +1076,31 @@ class ResultViewModel2 : ViewModel() { | ||||||
|         vlcIntent.component = VLC_COMPONENT |         vlcIntent.component = VLC_COMPONENT | ||||||
|         act.setKey(VLC_LAST_ID_KEY, id) |         act.setKey(VLC_LAST_ID_KEY, id) | ||||||
|         act.startActivityForResult(vlcIntent, VLC_REQUEST_CODE) |         act.startActivityForResult(vlcIntent, VLC_REQUEST_CODE) | ||||||
|         } catch (e: Exception) { |  | ||||||
|             logError(e) |  | ||||||
|             main { |  | ||||||
|                 if (e is ActivityNotFoundException) { |  | ||||||
|                     showToast(act, txt(R.string.vlc_not_found_error), Toast.LENGTH_LONG) |  | ||||||
|                 } else { |  | ||||||
|                     showToast(act, e.toString(), Toast.LENGTH_LONG) |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fun handleAction(activity: Activity?, click: EpisodeClickEvent) = viewModelScope.launchSafe { |     fun handleAction(activity: Activity?, click: EpisodeClickEvent) = | ||||||
|  |         viewModelScope.launchSafe { | ||||||
|             handleEpisodeClickEvent(activity, click) |             handleEpisodeClickEvent(activity, click) | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |     data class ExternalApp( | ||||||
|  |         val packageString: String, | ||||||
|  |         val name: Int, | ||||||
|  |         val action: Int, | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     private val apps = listOf( | ||||||
|  |         ExternalApp( | ||||||
|  |             VLC_PACKAGE, | ||||||
|  |             R.string.player_settings_play_in_vlc, | ||||||
|  |             ACTION_PLAY_EPISODE_IN_VLC_PLAYER | ||||||
|  |         ), ExternalApp( | ||||||
|  |             WEB_VIDEO_CAST_PACKAGE, | ||||||
|  |             R.string.player_settings_play_in_web, | ||||||
|  |             ACTION_PLAY_EPISODE_IN_WEB_VIDEO | ||||||
|  |         ) | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|     private suspend fun handleEpisodeClickEvent(activity: Activity?, click: EpisodeClickEvent) { |     private suspend fun handleEpisodeClickEvent(activity: Activity?, click: EpisodeClickEvent) { | ||||||
|         when (click.action) { |         when (click.action) { | ||||||
|             ACTION_SHOW_OPTIONS -> { |             ACTION_SHOW_OPTIONS -> { | ||||||
|  | @ -1069,9 +1115,17 @@ class ResultViewModel2 : ViewModel() { | ||||||
|                 } |                 } | ||||||
|                 options.add(txt(R.string.episode_action_play_in_app) to ACTION_PLAY_EPISODE_IN_PLAYER) |                 options.add(txt(R.string.episode_action_play_in_app) to ACTION_PLAY_EPISODE_IN_PLAYER) | ||||||
| 
 | 
 | ||||||
|                 if (activity?.isAppInstalled(VLC_PACKAGE) == true) { |                 for (app in apps) { | ||||||
|                     options.add(txt(R.string.episode_action_play_in_vlc) to ACTION_PLAY_EPISODE_IN_VLC_PLAYER) |                     if (activity?.isAppInstalled(app.packageString) == true) { | ||||||
|  |                         options.add( | ||||||
|  |                             txt( | ||||||
|  |                                 R.string.episode_action_play_in_format, | ||||||
|  |                                 txt(app.name) | ||||||
|  |                             ) to app.action | ||||||
|  |                         ) | ||||||
|                     } |                     } | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|                 options.addAll( |                 options.addAll( | ||||||
|                     listOf( |                     listOf( | ||||||
|                         txt(R.string.episode_action_play_in_browser) to ACTION_PLAY_EPISODE_IN_BROWSER, |                         txt(R.string.episode_action_play_in_browser) to ACTION_PLAY_EPISODE_IN_BROWSER, | ||||||
|  | @ -1247,6 +1301,11 @@ class ResultViewModel2 : ViewModel() { | ||||||
|             } |             } | ||||||
|             ACTION_PLAY_EPISODE_IN_VLC_PLAYER -> { |             ACTION_PLAY_EPISODE_IN_VLC_PLAYER -> { | ||||||
|                 loadLinks(click.data, isVisible = true, isCasting = true) { links -> |                 loadLinks(click.data, isVisible = true, isCasting = true) { links -> | ||||||
|  |                     if (links.links.isEmpty()) { | ||||||
|  |                         showToast(activity, R.string.no_links_found_toast, Toast.LENGTH_SHORT) | ||||||
|  |                         return@loadLinks | ||||||
|  |                     } | ||||||
|  | 
 | ||||||
|                     playWithVlc( |                     playWithVlc( | ||||||
|                         activity, |                         activity, | ||||||
|                         links, |                         links, | ||||||
|  | @ -1254,6 +1313,22 @@ class ResultViewModel2 : ViewModel() { | ||||||
|                     ) |                     ) | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |             ACTION_PLAY_EPISODE_IN_WEB_VIDEO -> acquireSingleLink( | ||||||
|  |                 click.data, | ||||||
|  |                 isCasting = true, | ||||||
|  |                 txt( | ||||||
|  |                     R.string.episode_action_play_in_format, | ||||||
|  |                     txt(R.string.player_settings_play_in_web) | ||||||
|  |                 ) | ||||||
|  |             ) { (result, index) -> | ||||||
|  |                 playInWebVideo( | ||||||
|  |                     activity, | ||||||
|  |                     result.links[index], | ||||||
|  |                     click.data.name ?: click.data.headerName, | ||||||
|  |                     click.data.poster, | ||||||
|  |                     result.subs | ||||||
|  |                 ) | ||||||
|  |             } | ||||||
|             ACTION_PLAY_EPISODE_IN_PLAYER -> { |             ACTION_PLAY_EPISODE_IN_PLAYER -> { | ||||||
|                 val data = currentResponse?.syncData?.toList() ?: emptyList() |                 val data = currentResponse?.syncData?.toList() ?: emptyList() | ||||||
|                 val list = |                 val list = | ||||||
|  | @ -1319,7 +1394,11 @@ class ResultViewModel2 : ViewModel() { | ||||||
|             }, { |             }, { | ||||||
|                 if (this !is AnimeLoadResponse) return@argamap |                 if (this !is AnimeLoadResponse) return@argamap | ||||||
|                 val map = |                 val map = | ||||||
|                     Kitsu.getEpisodesDetails(getMalId(), getAniListId(), isResponseRequired = false) |                     Kitsu.getEpisodesDetails( | ||||||
|  |                         getMalId(), | ||||||
|  |                         getAniListId(), | ||||||
|  |                         isResponseRequired = false | ||||||
|  |                     ) | ||||||
|                 if (map.isNullOrEmpty()) return@argamap |                 if (map.isNullOrEmpty()) return@argamap | ||||||
|                 updateEpisodes = DubStatus.values().map { dubStatus -> |                 updateEpisodes = DubStatus.values().map { dubStatus -> | ||||||
|                     val current = |                     val current = | ||||||
|  | @ -1339,8 +1418,10 @@ class ResultViewModel2 : ViewModel() { | ||||||
|                                     val currentBack = this |                                     val currentBack = this | ||||||
|                                     this.description = this.description ?: node.description?.en |                                     this.description = this.description ?: node.description?.en | ||||||
|                                     this.name = this.name ?: node.titles?.canonical |                                     this.name = this.name ?: node.titles?.canonical | ||||||
|                                     this.episode = this.episode ?: node.num ?: episodeNumbers[index] |                                     this.episode = | ||||||
|                                     this.posterUrl = this.posterUrl ?: node.thumbnail?.original?.url |                                         this.episode ?: node.num ?: episodeNumbers[index] | ||||||
|  |                                     this.posterUrl = | ||||||
|  |                                         this.posterUrl ?: node.thumbnail?.original?.url | ||||||
|                                 } |                                 } | ||||||
|                             } |                             } | ||||||
|                         } |                         } | ||||||
|  | @ -1628,7 +1709,8 @@ class ResultViewModel2 : ViewModel() { | ||||||
|                     for ((index, i) in ep.value.withIndex()) { |                     for ((index, i) in ep.value.withIndex()) { | ||||||
|                         val episode = i.episode ?: (index + 1) |                         val episode = i.episode ?: (index + 1) | ||||||
|                         val id = |                         val id = | ||||||
|                             mainId + episode + idIndex * 1_000_000 + (i.season?.times(10_000) ?: 0) |                             mainId + episode + idIndex * 1_000_000 + (i.season?.times(10_000) | ||||||
|  |                                 ?: 0) | ||||||
|                         if (!existingEpisodes.contains(id)) { |                         if (!existingEpisodes.contains(id)) { | ||||||
|                             existingEpisodes.add(id) |                             existingEpisodes.add(id) | ||||||
|                             val seasonData = loadResponse.seasonNames.getSeason(i.season) |                             val seasonData = loadResponse.seasonNames.getSeason(i.season) | ||||||
|  |  | ||||||
|  | @ -274,7 +274,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">حلقة كروم كاست</string> |     <string name="episode_action_chromecast_episode">حلقة كروم كاست</string> | ||||||
|     <string name="episode_action_chromecast_mirror">مرآة كروم كاست</string> |     <string name="episode_action_chromecast_mirror">مرآة كروم كاست</string> | ||||||
|     <string name="episode_action_play_in_app">تشغيل في التطبيق</string> |     <string name="episode_action_play_in_app">تشغيل في التطبيق</string> | ||||||
|     <string name="episode_action_play_in_vlc">VLC تشغيل في</string> |     <string name="episode_action_play_in_format">%s تشغيل في</string> | ||||||
|     <string name="episode_action_play_in_browser">تشغيل في الويب </string> |     <string name="episode_action_play_in_browser">تشغيل في الويب </string> | ||||||
|     <string name="episode_action_copy_link">نسخ الرابط</string> |     <string name="episode_action_copy_link">نسخ الرابط</string> | ||||||
|     <string name="episode_action_auto_download">التحميل التلقائي</string> |     <string name="episode_action_auto_download">التحميل التلقائي</string> | ||||||
|  |  | ||||||
|  | @ -279,7 +279,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Episódio pelo Chromecast</string> |     <string name="episode_action_chromecast_episode">Episódio pelo Chromecast</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Alternativa pelo Chromecast</string> |     <string name="episode_action_chromecast_mirror">Alternativa pelo Chromecast</string> | ||||||
|     <string name="episode_action_play_in_app">Assistir no App</string> |     <string name="episode_action_play_in_app">Assistir no App</string> | ||||||
|     <string name="episode_action_play_in_vlc">Assistir no VLC</string> |     <string name="episode_action_play_in_format">Assistir no %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Assistir no navegador</string> |     <string name="episode_action_play_in_browser">Assistir no navegador</string> | ||||||
|     <string name="episode_action_copy_link">Copiar link</string> |     <string name="episode_action_copy_link">Copiar link</string> | ||||||
|     <string name="episode_action_auto_download">Auto download</string> |     <string name="episode_action_auto_download">Auto download</string> | ||||||
|  |  | ||||||
|  | @ -268,7 +268,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Chromecastovat epizodu</string> |     <string name="episode_action_chromecast_episode">Chromecastovat epizodu</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Chromecast jako zrcadlo</string> |     <string name="episode_action_chromecast_mirror">Chromecast jako zrcadlo</string> | ||||||
|     <string name="episode_action_play_in_app">Přehrát v aplikace</string> |     <string name="episode_action_play_in_app">Přehrát v aplikace</string> | ||||||
|     <string name="episode_action_play_in_vlc">Přehrát ve VLC</string> |     <string name="episode_action_play_in_format">Přehrát ve %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Přehrát v prohlížeči</string> |     <string name="episode_action_play_in_browser">Přehrát v prohlížeči</string> | ||||||
|     <string name="episode_action_copy_link">Zkopírovat odkaz</string> |     <string name="episode_action_copy_link">Zkopírovat odkaz</string> | ||||||
|     <string name="episode_action_auto_download">Automaticky stáhnout</string> |     <string name="episode_action_auto_download">Automaticky stáhnout</string> | ||||||
|  |  | ||||||
|  | @ -281,7 +281,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Chromecast-Episode</string> |     <string name="episode_action_chromecast_episode">Chromecast-Episode</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Chromecastmirror</string> |     <string name="episode_action_chromecast_mirror">Chromecastmirror</string> | ||||||
|     <string name="episode_action_play_in_app">In App wiedergeben</string> |     <string name="episode_action_play_in_app">In App wiedergeben</string> | ||||||
|     <string name="episode_action_play_in_vlc">In VLC wiedergeben</string> |     <string name="episode_action_play_in_format">In %s wiedergeben</string> | ||||||
|     <string name="episode_action_play_in_browser">In Browser wiedergeben</string> |     <string name="episode_action_play_in_browser">In Browser wiedergeben</string> | ||||||
|     <string name="episode_action_copy_link">Link kopieren</string> |     <string name="episode_action_copy_link">Link kopieren</string> | ||||||
|     <string name="episode_action_auto_download">Auto Download</string> |     <string name="episode_action_auto_download">Auto Download</string> | ||||||
|  |  | ||||||
|  | @ -156,7 +156,7 @@ | ||||||
|         <item>@string/episode_action_chromecast_episode</item> |         <item>@string/episode_action_chromecast_episode</item> | ||||||
|         <item>@string/episode_action_chromecast_mirror</item> |         <item>@string/episode_action_chromecast_mirror</item> | ||||||
|         <item>@string/episode_action_play_in_app</item> |         <item>@string/episode_action_play_in_app</item> | ||||||
|         <item>@string/episode_action_play_in_vlc</item> |         <item>@string/episode_action_play_in_format</item> | ||||||
|         <item>@string/episode_action_play_in_browser</item> |         <item>@string/episode_action_play_in_browser</item> | ||||||
|         <item>@string/episode_action_copy_link</item> |         <item>@string/episode_action_copy_link</item> | ||||||
|         <item>@string/episode_action_auto_download</item> |         <item>@string/episode_action_auto_download</item> | ||||||
|  |  | ||||||
|  | @ -269,7 +269,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Episodio Chromecast</string>  |     <string name="episode_action_chromecast_episode">Episodio Chromecast</string>  | ||||||
|     <string name="episode_action_chromecast_mirror">Espejo Chromecast</string>  |     <string name="episode_action_chromecast_mirror">Espejo Chromecast</string>  | ||||||
|     <string name="episode_action_play_in_app">Reproducir en la app</string>  |     <string name="episode_action_play_in_app">Reproducir en la app</string>  | ||||||
|     <string name="episode_action_play_in_vlc">Reproducir en VLC</string>  |     <string name="episode_action_play_in_format">Reproducir en %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Reproducir en el navegador</string>  |     <string name="episode_action_play_in_browser">Reproducir en el navegador</string>  | ||||||
|     <string name="episode_action_copy_link">Copiar enlace</string>  |     <string name="episode_action_copy_link">Copiar enlace</string>  | ||||||
|     <string name="episode_action_auto_download">Descarga automática</string>  |     <string name="episode_action_auto_download">Descarga automática</string>  | ||||||
|  |  | ||||||
|  | @ -164,7 +164,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Episode Chromecast</string> |     <string name="episode_action_chromecast_episode">Episode Chromecast</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Miroir Chromecast</string> |     <string name="episode_action_chromecast_mirror">Miroir Chromecast</string> | ||||||
|     <string name="episode_action_play_in_app">Lecture dans l\'application</string> |     <string name="episode_action_play_in_app">Lecture dans l\'application</string> | ||||||
|     <string name="episode_action_play_in_vlc">Lecture dans VLC</string> |     <string name="episode_action_play_in_format">Lecture dans %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Lecture dans le navigateur</string> |     <string name="episode_action_play_in_browser">Lecture dans le navigateur</string> | ||||||
|     <string name="episode_action_copy_link">Copier le lien</string> |     <string name="episode_action_copy_link">Copier le lien</string> | ||||||
|     <string name="episode_action_auto_download">Téléchargement Automatique</string> |     <string name="episode_action_auto_download">Téléchargement Automatique</string> | ||||||
|  |  | ||||||
|  | @ -136,7 +136,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">क्रोमकास्ट एपिसोड</string> |     <string name="episode_action_chromecast_episode">क्रोमकास्ट एपिसोड</string> | ||||||
|     <string name="episode_action_chromecast_mirror">कक्रोमकास्ट मिरर</string> |     <string name="episode_action_chromecast_mirror">कक्रोमकास्ट मिरर</string> | ||||||
|     <string name="episode_action_play_in_app">एप्प मैं चलाये</string> |     <string name="episode_action_play_in_app">एप्प मैं चलाये</string> | ||||||
|     <string name="episode_action_play_in_vlc">VLC में चलाए</string> |     <string name="episode_action_play_in_format">%s में चलाए</string> | ||||||
|     <string name="episode_action_play_in_browser">Browser में चलाए</string> |     <string name="episode_action_play_in_browser">Browser में चलाए</string> | ||||||
|     <string name="episode_action_copy_link">लिंक कॉपी करें</string> |     <string name="episode_action_copy_link">लिंक कॉपी करें</string> | ||||||
|     <string name="episode_action_auto_download">डाउनलोड करे</string> |     <string name="episode_action_auto_download">डाउनलोड करे</string> | ||||||
|  |  | ||||||
|  | @ -299,7 +299,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Chromecast epizoda</string> |     <string name="episode_action_chromecast_episode">Chromecast epizoda</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Chromecast mirror</string> |     <string name="episode_action_chromecast_mirror">Chromecast mirror</string> | ||||||
|     <string name="episode_action_play_in_app">Pokreni u aplikaciji</string> |     <string name="episode_action_play_in_app">Pokreni u aplikaciji</string> | ||||||
|     <string name="episode_action_play_in_vlc">Pokreni u VLC-u</string> |     <string name="episode_action_play_in_format">Pokreni u %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Pokreni u pregledniku</string> |     <string name="episode_action_play_in_browser">Pokreni u pregledniku</string> | ||||||
|     <string name="episode_action_copy_link">Kopiraj poveznicu</string> |     <string name="episode_action_copy_link">Kopiraj poveznicu</string> | ||||||
|     <string name="episode_action_auto_download">Automatsko preuzimanje</string> |     <string name="episode_action_auto_download">Automatsko preuzimanje</string> | ||||||
|  |  | ||||||
|  | @ -264,7 +264,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Episode Chromecast</string> |     <string name="episode_action_chromecast_episode">Episode Chromecast</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Mirror Chromecast</string> |     <string name="episode_action_chromecast_mirror">Mirror Chromecast</string> | ||||||
|     <string name="episode_action_play_in_app">Putar di aplikasi</string> |     <string name="episode_action_play_in_app">Putar di aplikasi</string> | ||||||
|     <string name="episode_action_play_in_vlc">Putar di VLC</string> |     <string name="episode_action_play_in_format">Putar di %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Putar di browser</string> |     <string name="episode_action_play_in_browser">Putar di browser</string> | ||||||
|     <string name="episode_action_copy_link">Salin tautan</string> |     <string name="episode_action_copy_link">Salin tautan</string> | ||||||
|     <string name="episode_action_auto_download">Download otomatis</string> |     <string name="episode_action_auto_download">Download otomatis</string> | ||||||
|  |  | ||||||
|  | @ -271,7 +271,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Chromecast</string> |     <string name="episode_action_chromecast_episode">Chromecast</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Chromecast mirror</string> |     <string name="episode_action_chromecast_mirror">Chromecast mirror</string> | ||||||
|     <string name="episode_action_play_in_app">Riproduci in app</string> |     <string name="episode_action_play_in_app">Riproduci in app</string> | ||||||
|     <string name="episode_action_play_in_vlc">Riproduci in VLC</string> |     <string name="episode_action_play_in_format">Riproduci in %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Riproduci nel browser</string> |     <string name="episode_action_play_in_browser">Riproduci nel browser</string> | ||||||
|     <string name="episode_action_copy_link">Copia link</string> |     <string name="episode_action_copy_link">Copia link</string> | ||||||
|     <string name="episode_action_auto_download">Download</string> |     <string name="episode_action_auto_download">Download</string> | ||||||
|  |  | ||||||
|  | @ -190,7 +190,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Епизода на Chromecast</string> |     <string name="episode_action_chromecast_episode">Епизода на Chromecast</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Огледало на Chromecastr</string> |     <string name="episode_action_chromecast_mirror">Огледало на Chromecastr</string> | ||||||
|     <string name="episode_action_play_in_app">Пушти во апликацијата</string> |     <string name="episode_action_play_in_app">Пушти во апликацијата</string> | ||||||
|     <string name="episode_action_play_in_vlc">Пушти на VLC</string> |     <string name="episode_action_play_in_format">Пушти на %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Пушти на прелистувач</string> |     <string name="episode_action_play_in_browser">Пушти на прелистувач</string> | ||||||
|     <string name="episode_action_copy_link">Копирај линк</string> |     <string name="episode_action_copy_link">Копирај линк</string> | ||||||
|     <string name="episode_action_auto_download">Авто превземање</string> |     <string name="episode_action_auto_download">Авто превземање</string> | ||||||
|  |  | ||||||
|  | @ -175,7 +175,7 @@ | ||||||
|     <!-- <string name="episode_action_chomecast_episode">Chromecast Episode</string> |     <!-- <string name="episode_action_chomecast_episode">Chromecast Episode</string> | ||||||
|     <string name="episode_action_chomecast_mirror">Chromecast Mirror</string> --> |     <string name="episode_action_chomecast_mirror">Chromecast Mirror</string> --> | ||||||
|     <string name="episode_action_play_in_app">ആപ്പിൽ പ്ലേയ് ചെയ്യുക</string> |     <string name="episode_action_play_in_app">ആപ്പിൽ പ്ലേയ് ചെയ്യുക</string> | ||||||
|     <string name="episode_action_play_in_vlc">VLCയിൽ പ്ലേയ് ചെയ്യുക</string> |     <string name="episode_action_play_in_format">%sയിൽ പ്ലേയ് ചെയ്യുക</string> | ||||||
|     <string name="episode_action_play_in_browser">ബ്രൗസറിൽ പ്ലേയ് ചെയ്യുക</string> |     <string name="episode_action_play_in_browser">ബ്രൗസറിൽ പ്ലേയ് ചെയ്യുക</string> | ||||||
|     <string name="episode_action_copy_link">ലിങ്ക് പകർത്തുക</string> |     <string name="episode_action_copy_link">ലിങ്ക് പകർത്തുക</string> | ||||||
|     <string name="episode_action_auto_download">ഡൌൺലോഡ് ചെയ്യൂ</string> |     <string name="episode_action_auto_download">ഡൌൺലോഡ് ചെയ്യൂ</string> | ||||||
|  |  | ||||||
|  | @ -145,7 +145,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">aauugghhooo-ahah ohaaauugghh</string> |     <string name="episode_action_chromecast_episode">aauugghhooo-ahah ohaaauugghh</string> | ||||||
|     <string name="episode_action_chromecast_mirror">aoohaaahhu ahouuhhh</string> |     <string name="episode_action_chromecast_mirror">aoohaaahhu ahouuhhh</string> | ||||||
|     <string name="episode_action_play_in_app">ooo-ahahaauuh aaahhu</string> |     <string name="episode_action_play_in_app">ooo-ahahaauuh aaahhu</string> | ||||||
|     <string name="episode_action_play_in_vlc">ooo-ahah ohaauuh</string> |     <string name="episode_action_play_in_format">ooo-ahah ohaauuh</string> | ||||||
|     <string name="episode_action_play_in_browser">ahoha ooo-ahahohoohah oooohh</string> |     <string name="episode_action_play_in_browser">ahoha ooo-ahahohoohah oooohh</string> | ||||||
|     <string name="episode_action_copy_link">aauugghhahhaauugghh</string> |     <string name="episode_action_copy_link">aauugghhahhaauugghh</string> | ||||||
|     <string name="episode_action_auto_download">aaaghhoooohh aaahhu ahooo</string> |     <string name="episode_action_auto_download">aaaghhoooohh aaahhu ahooo</string> | ||||||
|  |  | ||||||
|  | @ -274,7 +274,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Chromecast aflevering</string> |     <string name="episode_action_chromecast_episode">Chromecast aflevering</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Chromecast mirror</string> |     <string name="episode_action_chromecast_mirror">Chromecast mirror</string> | ||||||
|     <string name="episode_action_play_in_app">Speel in app</string> |     <string name="episode_action_play_in_app">Speel in app</string> | ||||||
|     <string name="episode_action_play_in_vlc">Speel in VLC</string> |     <string name="episode_action_play_in_format">Speel in %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Speel in browser</string> |     <string name="episode_action_play_in_browser">Speel in browser</string> | ||||||
|     <string name="episode_action_copy_link">Kopieer link</string> |     <string name="episode_action_copy_link">Kopieer link</string> | ||||||
|     <string name="episode_action_auto_download">Automatisch downloaden</string> |     <string name="episode_action_auto_download">Automatisch downloaden</string> | ||||||
|  |  | ||||||
|  | @ -196,7 +196,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Støpt Episode</string> |     <string name="episode_action_chromecast_episode">Støpt Episode</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Støpt Speil</string> |     <string name="episode_action_chromecast_mirror">Støpt Speil</string> | ||||||
|     <string name="episode_action_play_in_app">Spill i appen</string> |     <string name="episode_action_play_in_app">Spill i appen</string> | ||||||
|     <string name="episode_action_play_in_vlc">Spill i VLC</string> |     <string name="episode_action_play_in_format">Spill i %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Spill i nettleseren</string> |     <string name="episode_action_play_in_browser">Spill i nettleseren</string> | ||||||
|     <string name="episode_action_copy_link">Kopier link</string> |     <string name="episode_action_copy_link">Kopier link</string> | ||||||
|     <string name="episode_action_auto_download">Automatisk nedlasting</string> |     <string name="episode_action_auto_download">Automatisk nedlasting</string> | ||||||
|  |  | ||||||
|  | @ -165,7 +165,7 @@ | ||||||
|         <item>@string/episode_action_chromecast_episode</item> |         <item>@string/episode_action_chromecast_episode</item> | ||||||
|         <item>@string/episode_action_chromecast_mirror</item> |         <item>@string/episode_action_chromecast_mirror</item> | ||||||
|         <item>@string/episode_action_play_in_app</item> |         <item>@string/episode_action_play_in_app</item> | ||||||
|         <item>@string/episode_action_play_in_vlc</item> |         <item>@string/episode_action_play_in_format</item> | ||||||
|         <item>@string/episode_action_play_in_browser</item> |         <item>@string/episode_action_play_in_browser</item> | ||||||
|         <item>@string/episode_action_copy_link</item> |         <item>@string/episode_action_copy_link</item> | ||||||
|         <item>@string/episode_action_auto_download</item> |         <item>@string/episode_action_auto_download</item> | ||||||
|  |  | ||||||
|  | @ -252,7 +252,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Chromecast odcinka</string> |     <string name="episode_action_chromecast_episode">Chromecast odcinka</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Chromecast mirroru</string> |     <string name="episode_action_chromecast_mirror">Chromecast mirroru</string> | ||||||
|     <string name="episode_action_play_in_app">Odtwórz w aplikacji</string> |     <string name="episode_action_play_in_app">Odtwórz w aplikacji</string> | ||||||
|     <string name="episode_action_play_in_vlc">Odtwórz w VLC</string> |     <string name="episode_action_play_in_format">Odtwórz w %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Odtwórz w przeglądarce</string> |     <string name="episode_action_play_in_browser">Odtwórz w przeglądarce</string> | ||||||
|     <string name="episode_action_copy_link">Kopiuj link</string> |     <string name="episode_action_copy_link">Kopiuj link</string> | ||||||
|     <string name="episode_action_auto_download">Automatyczne pobieranie</string> |     <string name="episode_action_auto_download">Automatyczne pobieranie</string> | ||||||
|  |  | ||||||
|  | @ -268,7 +268,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Episódio pelo Chromecast</string> |     <string name="episode_action_chromecast_episode">Episódio pelo Chromecast</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Alternativa pelo Chromecast</string> |     <string name="episode_action_chromecast_mirror">Alternativa pelo Chromecast</string> | ||||||
|     <string name="episode_action_play_in_app">Reproduzir na app</string> |     <string name="episode_action_play_in_app">Reproduzir na app</string> | ||||||
|     <string name="episode_action_play_in_vlc">Reproduzir no VLC</string> |     <string name="episode_action_play_in_format">Reproduzir no %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Reproduzir no navegador</string> |     <string name="episode_action_play_in_browser">Reproduzir no navegador</string> | ||||||
|     <string name="episode_action_copy_link">Copiar link</string> |     <string name="episode_action_copy_link">Copiar link</string> | ||||||
|     <string name="episode_action_auto_download">Transferência Automática</string> |     <string name="episode_action_auto_download">Transferência Automática</string> | ||||||
|  |  | ||||||
|  | @ -267,7 +267,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Chromecast</string> |     <string name="episode_action_chromecast_episode">Chromecast</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Chromecast alternativ</string> |     <string name="episode_action_chromecast_mirror">Chromecast alternativ</string> | ||||||
|     <string name="episode_action_play_in_app">Redă în Aplicație</string> |     <string name="episode_action_play_in_app">Redă în Aplicație</string> | ||||||
|     <string name="episode_action_play_in_vlc">Redă în VLC</string> |     <string name="episode_action_play_in_format">Redă în %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Redă în Browser</string> |     <string name="episode_action_play_in_browser">Redă în Browser</string> | ||||||
|     <string name="episode_action_copy_link">Copiază link-ul</string> |     <string name="episode_action_copy_link">Copiază link-ul</string> | ||||||
|     <string name="episode_action_auto_download">Auto-descărcare</string> |     <string name="episode_action_auto_download">Auto-descărcare</string> | ||||||
|  |  | ||||||
|  | @ -167,7 +167,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Chromecasta ett Avsnitt</string> |     <string name="episode_action_chromecast_episode">Chromecasta ett Avsnitt</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Chromecasta en Länk</string> |     <string name="episode_action_chromecast_mirror">Chromecasta en Länk</string> | ||||||
|     <string name="episode_action_play_in_app">Spela upp i appen</string> |     <string name="episode_action_play_in_app">Spela upp i appen</string> | ||||||
|     <string name="episode_action_play_in_vlc">Spela upp i VLC</string> |     <string name="episode_action_play_in_format">Spela upp i %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Spela upp i webbläsaren</string> |     <string name="episode_action_play_in_browser">Spela upp i webbläsaren</string> | ||||||
|     <string name="episode_action_copy_link">Kopiera länk</string> |     <string name="episode_action_copy_link">Kopiera länk</string> | ||||||
|     <string name="episode_action_auto_download">Automatisk nerladdning</string> |     <string name="episode_action_auto_download">Automatisk nerladdning</string> | ||||||
|  |  | ||||||
|  | @ -204,7 +204,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Chromecast Episode</string> |     <string name="episode_action_chromecast_episode">Chromecast Episode</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Chromecast Mirror</string> |     <string name="episode_action_chromecast_mirror">Chromecast Mirror</string> | ||||||
|     <string name="episode_action_play_in_app">I-play sa App</string> |     <string name="episode_action_play_in_app">I-play sa App</string> | ||||||
|     <string name="episode_action_play_in_vlc">I-play sa VLC</string> |     <string name="episode_action_play_in_format">I-play sa %s</string> | ||||||
|     <string name="episode_action_play_in_browser">I-play sa browser</string> |     <string name="episode_action_play_in_browser">I-play sa browser</string> | ||||||
|     <string name="episode_action_copy_link">Kopyahin ang Link</string> |     <string name="episode_action_copy_link">Kopyahin ang Link</string> | ||||||
|     <string name="episode_action_auto_download">Awtomatiking i-download</string> |     <string name="episode_action_auto_download">Awtomatiking i-download</string> | ||||||
|  |  | ||||||
|  | @ -156,7 +156,7 @@ | ||||||
|         <item>@string/episode_action_chromecast_episode</item> |         <item>@string/episode_action_chromecast_episode</item> | ||||||
|         <item>@string/episode_action_chromecast_mirror</item> |         <item>@string/episode_action_chromecast_mirror</item> | ||||||
|         <item>@string/episode_action_play_in_app</item> |         <item>@string/episode_action_play_in_app</item> | ||||||
|         <item>@string/episode_action_play_in_vlc</item> |         <item>@string/episode_action_play_in_format</item> | ||||||
|         <item>@string/episode_action_play_in_browser</item> |         <item>@string/episode_action_play_in_browser</item> | ||||||
|         <item>@string/episode_action_copy_link</item> |         <item>@string/episode_action_copy_link</item> | ||||||
|         <item>@string/episode_action_auto_download</item> |         <item>@string/episode_action_auto_download</item> | ||||||
|  |  | ||||||
|  | @ -272,7 +272,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Bölümü Chromecast ile yayınla</string> |     <string name="episode_action_chromecast_episode">Bölümü Chromecast ile yayınla</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Bağlantıyı Chromecast ile yayınla</string> |     <string name="episode_action_chromecast_mirror">Bağlantıyı Chromecast ile yayınla</string> | ||||||
|     <string name="episode_action_play_in_app">Uygulamada oynat</string> |     <string name="episode_action_play_in_app">Uygulamada oynat</string> | ||||||
|     <string name="episode_action_play_in_vlc">VLC\'de oynat</string> |     <string name="episode_action_play_in_format">%s\'de oynat</string> | ||||||
|     <string name="episode_action_play_in_browser">Tarayıcıda oynat</string> |     <string name="episode_action_play_in_browser">Tarayıcıda oynat</string> | ||||||
|     <string name="episode_action_copy_link">Linki kopyala</string> |     <string name="episode_action_copy_link">Linki kopyala</string> | ||||||
|     <string name="episode_action_auto_download">Otomatik indir</string> |     <string name="episode_action_auto_download">Otomatik indir</string> | ||||||
|  |  | ||||||
|  | @ -157,7 +157,7 @@ | ||||||
|         <item>@string/episode_action_chromecast_episode</item> |         <item>@string/episode_action_chromecast_episode</item> | ||||||
|         <item>@string/episode_action_chromecast_mirror</item> |         <item>@string/episode_action_chromecast_mirror</item> | ||||||
|         <item>@string/episode_action_play_in_app</item> |         <item>@string/episode_action_play_in_app</item> | ||||||
|         <item>@string/episode_action_play_in_vlc</item> |         <item>@string/episode_action_play_in_format</item> | ||||||
|         <item>@string/episode_action_play_in_browser</item> |         <item>@string/episode_action_play_in_browser</item> | ||||||
|         <item>@string/episode_action_copy_link</item> |         <item>@string/episode_action_copy_link</item> | ||||||
|         <item>@string/episode_action_auto_download</item> |         <item>@string/episode_action_auto_download</item> | ||||||
|  |  | ||||||
|  | @ -292,7 +292,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Tập Chromecast</string> |     <string name="episode_action_chromecast_episode">Tập Chromecast</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Chiếu Chromecast</string> |     <string name="episode_action_chromecast_mirror">Chiếu Chromecast</string> | ||||||
|     <string name="episode_action_play_in_app">Xem với trình phát mặc định</string> |     <string name="episode_action_play_in_app">Xem với trình phát mặc định</string> | ||||||
|     <string name="episode_action_play_in_vlc">Xem với trình phát VLC</string> |     <string name="episode_action_play_in_format">Xem với trình phát %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Xem tại trình duyệt</string> |     <string name="episode_action_play_in_browser">Xem tại trình duyệt</string> | ||||||
|     <string name="episode_action_copy_link">Sao chép liên kết</string> |     <string name="episode_action_copy_link">Sao chép liên kết</string> | ||||||
|     <string name="episode_action_auto_download">Tự động tải xuống</string> |     <string name="episode_action_auto_download">Tự động tải xuống</string> | ||||||
|  |  | ||||||
|  | @ -303,7 +303,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">投屏剧集</string> |     <string name="episode_action_chromecast_episode">投屏剧集</string> | ||||||
|     <string name="episode_action_chromecast_mirror">投屏镜像</string> |     <string name="episode_action_chromecast_mirror">投屏镜像</string> | ||||||
|     <string name="episode_action_play_in_app">在应用中播放</string> |     <string name="episode_action_play_in_app">在应用中播放</string> | ||||||
|     <string name="episode_action_play_in_vlc">在 VLC 中播放</string> |     <string name="episode_action_play_in_format">在 %s 中播放</string> | ||||||
|     <string name="episode_action_play_in_browser">在浏览器中播放</string> |     <string name="episode_action_play_in_browser">在浏览器中播放</string> | ||||||
|     <string name="episode_action_copy_link">复制链接</string> |     <string name="episode_action_copy_link">复制链接</string> | ||||||
|     <string name="episode_action_auto_download">自动下载</string> |     <string name="episode_action_auto_download">自动下载</string> | ||||||
|  |  | ||||||
|  | @ -36,12 +36,14 @@ | ||||||
|     <array name="player_pref_names"> |     <array name="player_pref_names"> | ||||||
|         <item>@string/player_settings_play_in_app</item> |         <item>@string/player_settings_play_in_app</item> | ||||||
|         <item>@string/player_settings_play_in_vlc</item> |         <item>@string/player_settings_play_in_vlc</item> | ||||||
|  |         <item>@string/player_settings_play_in_web</item> | ||||||
|         <item>@string/player_settings_play_in_browser</item> |         <item>@string/player_settings_play_in_browser</item> | ||||||
|     </array> |     </array> | ||||||
| 
 | 
 | ||||||
|     <array name="player_pref_values"> |     <array name="player_pref_values"> | ||||||
|         <item>1</item> |         <item>1</item> | ||||||
|         <item>2</item> |         <item>2</item> | ||||||
|  |         <item>4</item> | ||||||
|         <item>3</item> |         <item>3</item> | ||||||
|     </array> |     </array> | ||||||
| 
 | 
 | ||||||
|  | @ -187,7 +189,7 @@ | ||||||
|         <item>@string/episode_action_chromecast_episode</item> |         <item>@string/episode_action_chromecast_episode</item> | ||||||
|         <item>@string/episode_action_chromecast_mirror</item> |         <item>@string/episode_action_chromecast_mirror</item> | ||||||
|         <item>@string/episode_action_play_in_app</item> |         <item>@string/episode_action_play_in_app</item> | ||||||
|         <item>@string/episode_action_play_in_vlc</item> |         <item>@string/episode_action_play_in_format</item> | ||||||
|         <item>@string/episode_action_play_in_browser</item> |         <item>@string/episode_action_play_in_browser</item> | ||||||
|         <item>@string/episode_action_copy_link</item> |         <item>@string/episode_action_copy_link</item> | ||||||
|         <item>@string/episode_action_auto_download</item> |         <item>@string/episode_action_auto_download</item> | ||||||
|  |  | ||||||
|  | @ -364,7 +364,7 @@ | ||||||
|     <string name="episode_action_chromecast_episode">Chromecast episode</string> |     <string name="episode_action_chromecast_episode">Chromecast episode</string> | ||||||
|     <string name="episode_action_chromecast_mirror">Chromecast mirror</string> |     <string name="episode_action_chromecast_mirror">Chromecast mirror</string> | ||||||
|     <string name="episode_action_play_in_app">Play in app</string> |     <string name="episode_action_play_in_app">Play in app</string> | ||||||
|     <string name="episode_action_play_in_vlc">Play in VLC</string> |     <string name="episode_action_play_in_format">Play in %s</string> | ||||||
|     <string name="episode_action_play_in_browser">Play in browser</string> |     <string name="episode_action_play_in_browser">Play in browser</string> | ||||||
|     <string name="episode_action_copy_link">Copy link</string> |     <string name="episode_action_copy_link">Copy link</string> | ||||||
|     <string name="episode_action_auto_download">Auto download</string> |     <string name="episode_action_auto_download">Auto download</string> | ||||||
|  | @ -633,6 +633,7 @@ | ||||||
|     <string name="player_pref">Preferred video player</string> |     <string name="player_pref">Preferred video player</string> | ||||||
|     <string name="player_settings_play_in_app">Internal player</string> |     <string name="player_settings_play_in_app">Internal player</string> | ||||||
|     <string name="player_settings_play_in_vlc">VLC</string> |     <string name="player_settings_play_in_vlc">VLC</string> | ||||||
|  |     <string name="player_settings_play_in_web">Web Video Cast</string> | ||||||
|     <string name="player_settings_play_in_browser">Browser</string> |     <string name="player_settings_play_in_browser">Browser</string> | ||||||
|     <string name="vlc_not_found_error">VLC not found</string> |     <string name="app_not_found_error">App not found</string> | ||||||
| </resources> | </resources> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue