diff --git a/app/build.gradle b/app/build.gradle index ef2d5d3b..6e1292f2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,8 +40,8 @@ android { //Some Os's Don't give Access to Music Dir , In API 29 if we Target 30 //noinspection OldTargetApi targetSdkVersion 29 - versionCode 13 - versionName "2.0.1" + versionCode 14 + versionName "2.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -160,7 +160,7 @@ dependencies { implementation 'com.razorpay:checkout:1.6.4' implementation "com.github.amitbd1508:AppUpdater:4.1.0" implementation "androidx.tonyodev.fetch2:xfetch2:3.1.5" - implementation 'com.github.sealedtx:java-youtube-downloader:2.4.4' + implementation 'com.github.sealedtx:java-youtube-downloader:2.4.6' //Crashlytics & Analytics implementation platform('com.google.firebase:firebase-bom:26.2.0') diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 741fdf9a..215a9727 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,6 +23,7 @@ + diff --git a/app/src/main/java/com/shabinder/spotiflyer/providers/SpotifyProvider.kt b/app/src/main/java/com/shabinder/spotiflyer/providers/SpotifyProvider.kt index 0aa14b61..32e85c41 100644 --- a/app/src/main/java/com/shabinder/spotiflyer/providers/SpotifyProvider.kt +++ b/app/src/main/java/com/shabinder/spotiflyer/providers/SpotifyProvider.kt @@ -49,7 +49,6 @@ class SpotifyProvider @Inject constructor( spotifyLink = resolveLink(spotifyLink) } - val link = spotifyLink.substringAfterLast('/', "Error").substringBefore('?') val type = spotifyLink.substringBeforeLast('/', "Error").substringAfterLast('/') diff --git a/app/src/main/java/com/shabinder/spotiflyer/providers/YoutubeProvider.kt b/app/src/main/java/com/shabinder/spotiflyer/providers/YoutubeProvider.kt index 71f9d489..a503d520 100644 --- a/app/src/main/java/com/shabinder/spotiflyer/providers/YoutubeProvider.kt +++ b/app/src/main/java/com/shabinder/spotiflyer/providers/YoutubeProvider.kt @@ -41,25 +41,31 @@ class YoutubeProvider @Inject constructor( * HI-RES Url: https://i.ytimg.com/vi/$searchId/maxresdefault.jpg" * Normal Url: https://i.ytimg.com/vi/$searchId/hqdefault.jpg" * */ - private val sampleDomain2 = "youtu.be" - private val sampleDomain1 = "youtube.com" + private val sampleDomain1 = "music.youtube.com" + private val sampleDomain2 = "youtube.com" + private val sampleDomain3 = "youtu.be" override suspend fun query(fullLink: String): PlatformQueryResult?{ val link = fullLink.removePrefix("https://").removePrefix("http://") if(link.contains("playlist",true) || link.contains("list",true)){ // Given Link is of a Playlist log("YT Play",link) - val playlistId = link.substringAfter("?list=").substringAfter("&list=").substringBefore("&") + val playlistId = link.substringAfter("?list=").substringAfter("&list=").substringBefore("&").substringBefore("?") return getYTPlaylist( playlistId ) }else{//Given Link is of a Video var searchId = "error" - if(link.contains(sampleDomain1,true) ){ - searchId = link.substringAfterLast("=","error") - } - if(link.contains(sampleDomain2,true) ){ - searchId = link.substringAfterLast("/","error") + when{ + link.contains(sampleDomain1,true) -> {//Youtube Music + searchId = link.substringAfterLast("/","error").substringBefore("&").substringAfterLast("=") + } + link.contains(sampleDomain2,true) -> {//Standard Youtube Link + searchId = link.substringAfterLast("=","error").substringBefore("&") + } + link.contains(sampleDomain3,true) -> {//Shortened Youtube Link + searchId = link.substringAfterLast("/","error").substringBefore("&") + } } return if(searchId != "error") { getYTTrack( @@ -214,7 +220,7 @@ class YoutubeProvider @Inject constructor( } } catch (e: Exception) { e.printStackTrace() - showDialog("An Error Occurred While Processing!") + showDialog("An Error Occurred While Processing!,$searchId") } } return if(result.title.isNotBlank()) result diff --git a/app/src/main/java/com/shabinder/spotiflyer/ui/home/Home.kt b/app/src/main/java/com/shabinder/spotiflyer/ui/home/Home.kt index eac2adaa..9954dcfc 100644 --- a/app/src/main/java/com/shabinder/spotiflyer/ui/home/Home.kt +++ b/app/src/main/java/com/shabinder/spotiflyer/ui/home/Home.kt @@ -124,16 +124,21 @@ fun AboutColumn(mainActivity: MainActivity,modifier: Modifier = Modifier) { modifier = Modifier.clickable( onClick = { openPlatform("com.spotify.music","http://open.spotify.com",ctx) }) ) - Spacer(modifier = modifier.padding(start = 24.dp)) + Spacer(modifier = modifier.padding(start = 16.dp)) Icon(imageVector = vectorResource(id = R.drawable.ic_gaana ),tint = Color.Unspecified, modifier = Modifier.clickable( onClick = { openPlatform("com.gaana","http://gaana.com",ctx) }) ) - Spacer(modifier = modifier.padding(start = 24.dp)) + Spacer(modifier = modifier.padding(start = 16.dp)) Icon(imageVector = vectorResource(id = R.drawable.ic_youtube),tint = Color.Unspecified, modifier = Modifier.clickable( onClick = { openPlatform("com.google.android.youtube","http://m.youtube.com",ctx) }) ) + Spacer(modifier = modifier.padding(start = 12.dp)) + Icon(imageVector = vectorResource(id = R.drawable.ic_youtube_music_logo),tint = Color.Unspecified, + modifier = Modifier.clickable( + onClick = { openPlatform("com.google.android.apps.youtube.music","https://music.youtube.com/",ctx) }) + ) } } } diff --git a/app/src/main/res/drawable/ic_youtube_music_logo.xml b/app/src/main/res/drawable/ic_youtube_music_logo.xml new file mode 100644 index 00000000..7e723917 --- /dev/null +++ b/app/src/main/res/drawable/ic_youtube_music_logo.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/app/src/main/res/xml/app_update.xml b/app/src/main/res/xml/app_update.xml index f16548f2..8d5c6359 100644 --- a/app/src/main/res/xml/app_update.xml +++ b/app/src/main/res/xml/app_update.xml @@ -17,8 +17,8 @@ - 2.0.1 - 13 + 2.1 + 14 https://github.com/Shabinder/SpotiFlyer/releases/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index c40caa70..6e95abea 100644 --- a/build.gradle +++ b/build.gradle @@ -18,12 +18,12 @@ buildscript { ext { compose_version = '1.0.0-alpha09' - lifecycle_version = '2.3.0-rc01' - room_version = "2.2.6" - okhttp_version = "4.9.0" coroutines_version = "1.4.2" coil_version = "0.4.1" kotlin_version = "1.4.21" + lifecycle_version = '2.3.0-rc01' + room_version = "2.2.6" + okhttp_version = "4.9.0" hilt_version = '2.30.1-alpha' }