Merge branch 'master' into master

This commit is contained in:
Farbod 2022-03-18 01:47:07 -07:00 committed by GitHub
commit dab72f5720
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 91 additions and 36 deletions

View File

@ -72,7 +72,6 @@ dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-jackson:2.9.0'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.13.2'
implementation 'com.squareup.retrofit2:converter-scalars:2.1.0'
implementation 'com.arthenica:ffmpeg-kit-min:4.5.1.LTS'

View File

@ -28,6 +28,7 @@ import androidx.core.net.toUri
import androidx.core.os.bundleOf
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.github.libretube.adapters.TrendingAdapter
@ -49,6 +50,7 @@ import com.google.android.material.button.MaterialButton
import com.squareup.picasso.Picasso
import retrofit2.HttpException
import java.io.IOException
import java.net.URLEncoder
import kotlin.math.abs
@ -250,10 +252,7 @@ class PlayerFragment : Fragment() {
.setMimeType(response.subtitles!![0].mimeType!!) // The correct MIME type (required).
.setLanguage(response.subtitles!![0].code) // The subtitle language (optional).
.build())}
val mediaItem: MediaItem = MediaItem.Builder()
.setUri(response.hls)
.setSubtitleConfigurations(subtitle)
.build()
exoPlayer = ExoPlayer.Builder(view.context)
.setSeekBackIncrementMs(5000)
.setSeekForwardIncrementMs(5000)
@ -264,7 +263,31 @@ class PlayerFragment : Fragment() {
//exoPlayerView.controllerShowTimeoutMs = 1500
exoPlayerView.controllerHideOnTouch = true
exoPlayerView.player = exoPlayer
if (response.hls != null) {
val mediaItem: MediaItem = MediaItem.Builder()
.setUri(response.hls)
.setSubtitleConfigurations(subtitle)
.build()
exoPlayer.setMediaItem(mediaItem)
}else{
val dataSourceFactory: DataSource.Factory =
DefaultHttpDataSource.Factory()
val videoItem: MediaItem = MediaItem.Builder()
.setUri(response.videoStreams[0].url)
.setSubtitleConfigurations(subtitle)
.build()
val videoSource: MediaSource = DefaultMediaSourceFactory(dataSourceFactory)
.createMediaSource(videoItem)
var audioSource: MediaSource = DefaultMediaSourceFactory(dataSourceFactory)
.createMediaSource(fromUri(response.audioStreams!![0].url!!))
if (response.videoStreams[0].quality=="720p" || response.videoStreams[0].quality=="1080p" || response.videoStreams[0].quality=="480p" ){
audioSource = ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(fromUri(response.audioStreams!![getMostBitRate(response.audioStreams)].url!!))
}
val mergeSource: MediaSource = MergingMediaSource(videoSource,audioSource)
exoPlayer.setMediaSource(mergeSource)
}
///exoPlayer.getMediaItemAt(5)
exoPlayer.prepare()
exoPlayer.play()
@ -367,9 +390,14 @@ class PlayerFragment : Fragment() {
}
//share button
view.findViewById<RelativeLayout>(R.id.relPlayer_share).setOnClickListener {
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())
val intent= Intent()
intent.action=Intent.ACTION_SEND
intent.putExtra(Intent.EXTRA_TEXT, "https://piped.tokhmi.xyz/$videoId")
var url = "https://piped.kavin.rocks/watch?v=$videoId"
val instance = sharedPreferences.getString("instance", "https://pipedapi.kavin.rocks")!!
if (instance != "https://pipedapi.kavin.rocks")
url += "&instance=${URLEncoder.encode(instance, "UTF-8")}"
intent.putExtra(Intent.EXTRA_TEXT, url)
intent.type="text/plain"
startActivity(Intent.createChooser(intent,"Share Url To:"))
}

View File

@ -25,6 +25,7 @@ import com.blankj.utilcode.util.UriUtils
import com.github.libretube.obj.Subscribe
import retrofit2.HttpException
import java.io.ByteArrayOutputStream
import retrofit2.HttpException
import java.io.IOException
import java.util.zip.ZipFile

View File

@ -14,6 +14,7 @@ import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.github.libretube.adapters.SubscriptionAdapter
import com.github.libretube.adapters.SubscriptionChannelAdapter
import com.github.libretube.adapters.TrendingAdapter
@ -25,6 +26,7 @@ class Subscriptions : Fragment() {
lateinit var token: String
var isLoaded = false
private var subscriptionAdapter: SubscriptionAdapter? =null
private var refreshLayout: SwipeRefreshLayout? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
@ -44,8 +46,11 @@ class Subscriptions : Fragment() {
val sharedPref = context?.getSharedPreferences("token", Context.MODE_PRIVATE)
token = sharedPref?.getString("token","")!!
Log.e(TAG,token)
refreshLayout = view.findViewById(R.id.sub_refresh)
if(token!=""){
view.findViewById<RelativeLayout>(R.id.loginOrRegister).visibility=View.GONE
refreshLayout?.isEnabled = true
var progressBar = view.findViewById<ProgressBar>(R.id.sub_progress)
progressBar.visibility=View.VISIBLE
@ -57,6 +62,11 @@ class Subscriptions : Fragment() {
feedRecView.layoutManager = GridLayoutManager(view.context, resources.getInteger(R.integer.grid_items))
fetchFeed(feedRecView, progressBar)
refreshLayout?.setOnRefreshListener {
fetchChannels(channelRecView)
fetchFeed(feedRecView, progressBar)
}
val scrollView = view.findViewById<ScrollView>(R.id.scrollview_sub)
scrollView.viewTreeObserver
.addOnScrollChangedListener {
@ -64,11 +74,15 @@ class Subscriptions : Fragment() {
== (scrollView.height + scrollView.scrollY)) {
//scroll view is at bottom
if(isLoaded){
refreshLayout?.isRefreshing = true
subscriptionAdapter?.updateItems()
refreshLayout?.isRefreshing = false
}
}
}
} else {
refreshLayout?.isEnabled = false
}
}
@ -84,6 +98,8 @@ class Subscriptions : Fragment() {
} catch (e: HttpException) {
Log.e(TAG, "HttpException, unexpected response")
return@launchWhenCreated
} finally {
refreshLayout?.isRefreshing = false
}
if (response.isNotEmpty()){
subscriptionAdapter = SubscriptionAdapter(response)
@ -109,6 +125,8 @@ class Subscriptions : Fragment() {
} catch (e: HttpException) {
Log.e(TAG, "HttpException, unexpected response")
return@launchWhenCreated
} finally {
refreshLayout?.isRefreshing = false
}
if (response.isNotEmpty()){
channelRecView?.adapter=SubscriptionChannelAdapter(response.toMutableList())

View File

@ -4,22 +4,21 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Subscriptions">
<ProgressBar
android:id="@+id/sub_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:visibility="gone"
/>
android:layout_centerVertical="true"
android:visibility="gone" />
<RelativeLayout
android:id="@+id/loginOrRegister"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
>
android:layout_centerVertical="true">
<ImageView
android:id="@+id/boogh"
@ -40,14 +39,22 @@
android:textSize="20sp"
android:textStyle="bold" />
</RelativeLayout>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/sub_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:id="@+id/scrollview_sub"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -59,6 +66,7 @@
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -72,4 +80,5 @@
</RelativeLayout>
</LinearLayout>
</ScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</RelativeLayout>