diff --git a/Opus/Assets/Version.txt b/Opus/Assets/Version.txt
index 9a54418..dd20d29 100644
--- a/Opus/Assets/Version.txt
+++ b/Opus/Assets/Version.txt
@@ -1,3 +1,3 @@
-Version: 3.2.6
+Version: 3.2.7
Beta: False
-Link: https://github.com/AnonymusRaccoon/Opus/releases/download/3.2.6/Opus.v3.2.6.apk
+Link: https://github.com/AnonymusRaccoon/Opus/releases/download/3.2.7/Opus.v3.2.7.apk
diff --git a/Opus/Code/Api/PlaylistManager.cs b/Opus/Code/Api/PlaylistManager.cs
index 1f01adb..e63083d 100644
--- a/Opus/Code/Api/PlaylistManager.cs
+++ b/Opus/Code/Api/PlaylistManager.cs
@@ -656,7 +656,7 @@ namespace Opus.Api
///
public static async Task<(List, string)> GetOwnedYoutubePlaylists(List SyncedPlaylists, System.Action UiCallback)
{
- if (!await MainActivity.instance.WaitForYoutube())
+ if (!await MainActivity.instance.WaitForYoutube() || YoutubeManager.IsUsingAPI)
return (null, "Error"); //Should have a better error handling
List YoutubePlaylists = new List();
diff --git a/Opus/Code/Api/Services/MusicPlayer.cs b/Opus/Code/Api/Services/MusicPlayer.cs
index 1769a3b..3a63efe 100644
--- a/Opus/Code/Api/Services/MusicPlayer.cs
+++ b/Opus/Code/Api/Services/MusicPlayer.cs
@@ -688,7 +688,7 @@ namespace Opus.Api.Services
YoutubeClient client = new YoutubeClient();
Video video = await client.GetVideoAsync(youtubeID);
- var ytPlaylistRequest = YoutubeSearch.youtubeService.PlaylistItems.List("snippet, contentDetails");
+ var ytPlaylistRequest = YoutubeManager.YoutubeService.PlaylistItems.List("snippet, contentDetails");
ytPlaylistRequest.PlaylistId = video.GetVideoMixPlaylistId();
ytPlaylistRequest.MaxResults = 15;
diff --git a/Opus/Code/Api/YoutubeManager.cs b/Opus/Code/Api/YoutubeManager.cs
index afef28c..65c918c 100644
--- a/Opus/Code/Api/YoutubeManager.cs
+++ b/Opus/Code/Api/YoutubeManager.cs
@@ -25,13 +25,8 @@ namespace Opus.Api
{
public class YoutubeManager
{
- public static YouTubeService YoutubeService
- {
- get
- {
- return YoutubeSearch.youtubeService; //Will change that with the rework of the youtubeengine class.
- }
- }
+ public static YouTubeService YoutubeService;
+ public static bool IsUsingAPI = false;
#region Playback
///
diff --git a/Opus/Code/MainActivity.cs b/Opus/Code/MainActivity.cs
index 1caf60d..4ed4faa 100644
--- a/Opus/Code/MainActivity.cs
+++ b/Opus/Code/MainActivity.cs
@@ -127,7 +127,7 @@ namespace Opus
CheckForUpdate(this, false);
HandleIntent(Intent);
- Login();
+ Login(true);
SyncPlaylists();
}
@@ -188,20 +188,22 @@ namespace Opus
public void Login(bool canAsk = true, bool skipSilentLog = false, bool skipLastSigned = false)
{
+ CreateYoutube(false);
+ return;
waitingForYoutube = true;
- if (!skipLastSigned)
- {
- if (account == null)
- account = GoogleSignIn.GetLastSignedInAccount(this);
+ //if (!skipLastSigned)
+ //{
+ // if (account == null)
+ // account = GoogleSignIn.GetLastSignedInAccount(this);
- if (account != null)
- {
- CreateYoutube();
- return;
- }
- }
+ // if (account != null)
+ // {
+ // CreateYoutube();
+ // return;
+ // }
+ //}
//This will be used only when the access has been revoked, when the refresh token has been lost or for the first loggin.
//In each case we want a refresh token so we call RequestServerAuthCode with true as the second parameter.
@@ -217,35 +219,35 @@ namespace Opus
googleClient.Connect();
- if (!skipSilentLog)
- {
- OptionalPendingResult silentLog = Auth.GoogleSignInApi.SilentSignIn(googleClient);
- if (silentLog.IsDone)
- {
- GoogleSignInResult result = (GoogleSignInResult)silentLog.Get();
- if (result.IsSuccess)
- {
- account = result.SignInAccount;
- RunOnUiThread(() => { Picasso.With(this).Load(account.PhotoUrl).Transform(new CircleTransformation()).Into(new AccountTarget()); });
- CreateYoutube();
- }
- }
- else if (silentLog != null)
- {
- AskIntent = Auth.GoogleSignInApi.GetSignInIntent(googleClient);
- silentLog.SetResultCallback(this);
- }
- else if (canAsk)
- {
- ResumeKiller = true;
- StartActivityForResult(Auth.GoogleSignInApi.GetSignInIntent(googleClient), 1598);
- }
- }
- else if (canAsk)
- {
+ //if (!skipSilentLog)
+ //{
+ // OptionalPendingResult silentLog = Auth.GoogleSignInApi.SilentSignIn(googleClient);
+ // if (silentLog.IsDone)
+ // {
+ // GoogleSignInResult result = (GoogleSignInResult)silentLog.Get();
+ // if (result.IsSuccess)
+ // {
+ // account = result.SignInAccount;
+ // RunOnUiThread(() => { Picasso.With(this).Load(account.PhotoUrl).Transform(new CircleTransformation()).Into(new AccountTarget()); });
+ // CreateYoutube();
+ // }
+ // }
+ // else if (silentLog != null)
+ // {
+ // AskIntent = Auth.GoogleSignInApi.GetSignInIntent(googleClient);
+ // silentLog.SetResultCallback(this);
+ // }
+ // else if (canAsk)
+ // {
+ // ResumeKiller = true;
+ // StartActivityForResult(Auth.GoogleSignInApi.GetSignInIntent(googleClient), 1598);
+ // }
+ //}
+ //else if (canAsk)
+ //{
ResumeKiller = true;
StartActivityForResult(Auth.GoogleSignInApi.GetSignInIntent(googleClient), 1598);
- }
+ //}
}
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
@@ -254,6 +256,7 @@ namespace Opus
if(requestCode == 1598)
{
GoogleSignInResult result = Auth.GoogleSignInApi.GetSignInResultFromIntent(data);
+ Console.WriteLine("&Result: " + result.ToString());
if (result.IsSuccess)
{
account = result.SignInAccount;
@@ -262,6 +265,7 @@ namespace Opus
}
else
{
+ Console.WriteLine("&Loging error: " + result.Status);
waitingForYoutube = false;
}
}
@@ -283,8 +287,21 @@ namespace Opus
}
}
- public async void CreateYoutube()
+ public async void CreateYoutube(bool UseToken = true)
{
+ if(!UseToken)
+ {
+ YoutubeManager.YoutubeService = new YouTubeService(new BaseClientService.Initializer()
+ {
+ ApiKey = GetString(Resource.String.yt_api_key),
+ ApplicationName = "Opus"
+ });
+ YoutubeManager.IsUsingAPI = true;
+ Console.WriteLine("&Youtube service created - " + YoutubeManager.YoutubeService);
+ return;
+ }
+
+ YoutubeManager.IsUsingAPI = false;
ISharedPreferences prefManager = PreferenceManager.GetDefaultSharedPreferences(this);
string refreshToken = prefManager.GetString("refresh-token", null);
Console.WriteLine("&Current refresh token: " + refreshToken);
@@ -305,7 +322,7 @@ namespace Opus
{
{ "grant_type", "authorization_code" },
{ "client_id", GetString(Resource.String.clientID) },
- { "client_secret", GetString(Resource.String.clientSecret) },
+ //{ "client_secret", GetString(Resource.String.clientSecret) },
{ "redirect_uri", "" },
{ "code", account.ServerAuthCode },
{ "id_token", account.IdToken },
@@ -343,7 +360,7 @@ namespace Opus
JToken json = JObject.Parse(response);
GoogleCredential credential = GoogleCredential.FromAccessToken((string)json.SelectToken("access_token"));
- YoutubeSearch.youtubeService = new YouTubeService(new BaseClientService.Initializer()
+ YoutubeManager.YoutubeService = new YouTubeService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Opus"
@@ -373,7 +390,7 @@ namespace Opus
{
{ "refresh_token", refreshToken },
{ "client_id", GetString(Resource.String.clientID) },
- { "client_secret", GetString(Resource.String.clientSecret) },
+ //{ "client_secret", GetString(Resource.String.clientSecret) },
{ "grant_type", "refresh_token" },
};
@@ -409,7 +426,7 @@ namespace Opus
JToken json = JObject.Parse(response);
GoogleCredential credential = GoogleCredential.FromAccessToken((string)json.SelectToken("access_token"));
- YoutubeSearch.youtubeService = new YouTubeService(new BaseClientService.Initializer()
+ YoutubeManager.YoutubeService = new YouTubeService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Opus"
@@ -440,21 +457,38 @@ namespace Opus
Console.WriteLine("&Connection Failed: " + result.ErrorMessage);
}
- public async Task WaitForYoutube()
+ public async Task WaitForYoutube(bool silentWait = false)
{
- if(YoutubeSearch.youtubeService == null)
+ if(YoutubeManager.YoutubeService == null)
{
if(!waitingForYoutube)
- Login(true);
+ Login(!silentWait);
waitingForYoutube = true;
- while (YoutubeSearch.youtubeService == null)
+ if(silentWait)
{
- if (waitingForYoutube == false)
- return false;
+ int i = 0;
+ while (true)
+ {
+ await Task.Delay(10);
+ i++;
- await Task.Delay(10);
+ if (YoutubeManager.YoutubeService == null)
+ return true;
+ else if (i > 1000) //10 seconds timout
+ return false;
+ }
+ }
+ else
+ {
+ while (YoutubeManager.YoutubeService == null)
+ {
+ if (waitingForYoutube == false)
+ return false;
+
+ await Task.Delay(10);
+ }
}
}
else if(NextRefreshDate == null || NextRefreshDate <= DateTime.UtcNow) //Acess token has expired
@@ -963,6 +997,9 @@ namespace Opus
private async void SyncPlaylists()
{
+ if (!await WaitForYoutube())
+ return;
+
ISharedPreferences prefManager = PreferenceManager.GetDefaultSharedPreferences(this);
DateTime lastSync = DateTime.Parse(prefManager.GetString("syncDate", DateTime.MinValue.ToString()));
diff --git a/Opus/Code/UI/Fragments/PlaylistTracks.cs b/Opus/Code/UI/Fragments/PlaylistTracks.cs
index 34e03f1..9e70404 100644
--- a/Opus/Code/UI/Fragments/PlaylistTracks.cs
+++ b/Opus/Code/UI/Fragments/PlaylistTracks.cs
@@ -282,7 +282,7 @@ namespace Opus.Fragments
try
{
- var ytPlaylistRequest = YoutubeSearch.youtubeService.PlaylistItems.List("snippet, contentDetails");
+ var ytPlaylistRequest = YoutubeManager.YoutubeService.PlaylistItems.List("snippet, contentDetails");
ytPlaylistRequest.PlaylistId = item.YoutubeID;
ytPlaylistRequest.MaxResults = 50;
@@ -375,7 +375,7 @@ namespace Opus.Fragments
loading = true;
try
{
- var ytPlaylistRequest = YoutubeSearch.youtubeService.PlaylistItems.List("snippet, contentDetails");
+ var ytPlaylistRequest = YoutubeManager.YoutubeService.PlaylistItems.List("snippet, contentDetails");
ytPlaylistRequest.PlaylistId = item.YoutubeID;
ytPlaylistRequest.MaxResults = 50;
ytPlaylistRequest.PageToken = nextPageToken;
diff --git a/Opus/Code/UI/Fragments/YoutubeSearch.cs b/Opus/Code/UI/Fragments/YoutubeSearch.cs
index b5f83e4..614414c 100644
--- a/Opus/Code/UI/Fragments/YoutubeSearch.cs
+++ b/Opus/Code/UI/Fragments/YoutubeSearch.cs
@@ -25,7 +25,6 @@ namespace Opus.Fragments
public class YoutubeSearch : Fragment
{
public static YoutubeSearch[] instances;
- public static YouTubeService youtubeService;
public string Query;
private string nextPageToken = null;
public string querryType;
@@ -74,7 +73,7 @@ namespace Opus.Fragments
try
{
searching = true;
- SearchResource.ListRequest searchResult = youtubeService.Search.List("snippet");
+ SearchResource.ListRequest searchResult = YoutubeManager.YoutubeService.Search.List("snippet");
searchResult.Q = Query;
searchResult.PageToken = nextPageToken;
searchResult.TopicId = "/m/04rlf";
@@ -203,7 +202,7 @@ namespace Opus.Fragments
try
{
- SearchResource.ListRequest searchResult = youtubeService.Search.List("snippet");
+ SearchResource.ListRequest searchResult = YoutubeManager.YoutubeService.Search.List("snippet");
searchResult.Q = search;
searchResult.TopicId = "/m/04rlf";
switch (querryType)
diff --git a/Opus/Code/UI/Views/AccountPreference.cs b/Opus/Code/UI/Views/AccountPreference.cs
index db862eb..406adde 100644
--- a/Opus/Code/UI/Views/AccountPreference.cs
+++ b/Opus/Code/UI/Views/AccountPreference.cs
@@ -10,6 +10,7 @@ using Android.Views;
using Android.Widget;
using Google.Apis.YouTube.v3;
using Opus;
+using Opus.Api;
using Opus.Fragments;
using Opus.Others;
using Square.Picasso;
@@ -97,7 +98,7 @@ public class AccountPreference : Preference, IResultCallback
private async void LogOut()
{
MainActivity.account = null;
- YoutubeSearch.youtubeService = null;
+ YoutubeManager.YoutubeService = null;
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DefaultSignIn)
.RequestIdToken(Preferences.instance.GetString(Resource.String.clientID))
diff --git a/Opus/Properties/AndroidManifest.xml b/Opus/Properties/AndroidManifest.xml
index 48e6dee..4a06b38 100644
--- a/Opus/Properties/AndroidManifest.xml
+++ b/Opus/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/Opus/Resources/Resource.Designer.cs b/Opus/Resources/Resource.Designer.cs
index cc66281..92df3da 100644
--- a/Opus/Resources/Resource.Designer.cs
+++ b/Opus/Resources/Resource.Designer.cs
@@ -7186,74 +7186,74 @@ namespace Opus
// aapt resource value: 0x7f0d0072
public const int abc_toolbar_collapse_description = 2131558514;
- // aapt resource value: 0x7f0d012c
- public const int add = 2131558700;
+ // aapt resource value: 0x7f0d012d
+ public const int add = 2131558701;
- // aapt resource value: 0x7f0d00fb
- public const int add_playlist = 2131558651;
+ // aapt resource value: 0x7f0d00fc
+ public const int add_playlist = 2131558652;
- // aapt resource value: 0x7f0d010b
- public const int add_playlist_msg = 2131558667;
+ // aapt resource value: 0x7f0d010c
+ public const int add_playlist_msg = 2131558668;
- // aapt resource value: 0x7f0d00df
- public const int add_to_library = 2131558623;
+ // aapt resource value: 0x7f0d00e0
+ public const int add_to_library = 2131558624;
- // aapt resource value: 0x7f0d00d1
- public const int add_to_playlist = 2131558609;
+ // aapt resource value: 0x7f0d00d2
+ public const int add_to_playlist = 2131558610;
- // aapt resource value: 0x7f0d00d9
- public const int add_to_queue = 2131558617;
+ // aapt resource value: 0x7f0d00da
+ public const int add_to_queue = 2131558618;
- // aapt resource value: 0x7f0d0115
- public const int album = 2131558677;
+ // aapt resource value: 0x7f0d0116
+ public const int album = 2131558678;
- // aapt resource value: 0x7f0d00e9
- public const int all = 2131558633;
+ // aapt resource value: 0x7f0d00ea
+ public const int all = 2131558634;
// aapt resource value: 0x7f0d0080
public const int appbar_scrolling_view_behavior = 2131558528;
- // aapt resource value: 0x7f0d0136
- public const int appearances = 2131558710;
+ // aapt resource value: 0x7f0d0137
+ public const int appearances = 2131558711;
- // aapt resource value: 0x7f0d0129
- public const int apply = 2131558697;
+ // aapt resource value: 0x7f0d012a
+ public const int apply = 2131558698;
- // aapt resource value: 0x7f0d0114
- public const int artist = 2131558676;
-
- // aapt resource value: 0x7f0d00ca
- public const int autoplay = 2131558602;
+ // aapt resource value: 0x7f0d0115
+ public const int artist = 2131558677;
// aapt resource value: 0x7f0d00cb
- public const int autoplay_desc = 2131558603;
+ public const int autoplay = 2131558603;
- // aapt resource value: 0x7f0d0130
- public const int behavior = 2131558704;
+ // aapt resource value: 0x7f0d00cc
+ public const int autoplay_desc = 2131558604;
- // aapt resource value: 0x7f0d014e
- public const int beta_available = 2131558734;
+ // aapt resource value: 0x7f0d0131
+ public const int behavior = 2131558705;
+
+ // aapt resource value: 0x7f0d014f
+ public const int beta_available = 2131558735;
// aapt resource value: 0x7f0d0081
public const int bottom_sheet_behavior = 2131558529;
- // aapt resource value: 0x7f0d00b3
- public const int browse = 2131558579;
+ // aapt resource value: 0x7f0d00b4
+ public const int browse = 2131558580;
- // aapt resource value: 0x7f0d012a
- public const int cancel = 2131558698;
+ // aapt resource value: 0x7f0d012b
+ public const int cancel = 2131558699;
- // aapt resource value: 0x7f0d0154
- public const int cancelling = 2131558740;
+ // aapt resource value: 0x7f0d0155
+ public const int cancelling = 2131558741;
- // aapt resource value: 0x7f0d00f1
- public const int cant_delete = 2131558641;
+ // aapt resource value: 0x7f0d00f2
+ public const int cant_delete = 2131558642;
- // aapt resource value: 0x7f0d0151
- public const int cant_play_non_youtube = 2131558737;
+ // aapt resource value: 0x7f0d0152
+ public const int cant_play_non_youtube = 2131558738;
- // aapt resource value: 0x7f0d00b8
- public const int cast = 2131558584;
+ // aapt resource value: 0x7f0d00b9
+ public const int cast = 2131558585;
// aapt resource value: 0x7f0d0000
public const int cast_ad_label = 2131558400;
@@ -7333,11 +7333,11 @@ namespace Opus
// aapt resource value: 0x7f0d0015
public const int cast_play = 2131558421;
- // aapt resource value: 0x7f0d0127
- public const int cast_queue_push = 2131558695;
-
// aapt resource value: 0x7f0d0128
- public const int cast_queue_pushed = 2131558696;
+ public const int cast_queue_push = 2131558696;
+
+ // aapt resource value: 0x7f0d0129
+ public const int cast_queue_pushed = 2131558697;
// aapt resource value: 0x7f0d0016
public const int cast_rewind = 2131558422;
@@ -7387,14 +7387,14 @@ namespace Opus
// aapt resource value: 0x7f0d0025
public const int cast_unmute = 2131558437;
- // aapt resource value: 0x7f0d0117
- public const int change_albumart = 2131558679;
+ // aapt resource value: 0x7f0d0118
+ public const int change_albumart = 2131558680;
- // aapt resource value: 0x7f0d011c
- public const int changes_saved = 2131558684;
+ // aapt resource value: 0x7f0d011d
+ public const int changes_saved = 2131558685;
- // aapt resource value: 0x7f0d00eb
- public const int channels = 2131558635;
+ // aapt resource value: 0x7f0d00ec
+ public const int channels = 2131558636;
// aapt resource value: 0x7f0d0082
public const int character_counter_content_description = 2131558530;
@@ -7402,8 +7402,8 @@ namespace Opus
// aapt resource value: 0x7f0d0083
public const int character_counter_pattern = 2131558531;
- // aapt resource value: 0x7f0d013c
- public const int check_updates = 2131558716;
+ // aapt resource value: 0x7f0d013d
+ public const int check_updates = 2131558717;
// aapt resource value: 0x7f0d00b0
public const int clientID = 2131558576;
@@ -7465,83 +7465,83 @@ namespace Opus
// aapt resource value: 0x7f0d003b
public const int common_signin_button_text_long = 2131558459;
- // aapt resource value: 0x7f0d0126
- public const int completed = 2131558694;
+ // aapt resource value: 0x7f0d0127
+ public const int completed = 2131558695;
- // aapt resource value: 0x7f0d0148
- public const int country_blocked = 2131558728;
-
- // aapt resource value: 0x7f0d0110
- public const int create_local = 2131558672;
-
- // aapt resource value: 0x7f0d00cc
- public const int create_mix = 2131558604;
-
- // aapt resource value: 0x7f0d00d0
- public const int create_mix_from_song = 2131558608;
-
- // aapt resource value: 0x7f0d010c
- public const int create_playlist = 2131558668;
-
- // aapt resource value: 0x7f0d0112
- public const int create_synced = 2131558674;
+ // aapt resource value: 0x7f0d0149
+ public const int country_blocked = 2131558729;
// aapt resource value: 0x7f0d0111
- public const int create_youtube = 2131558673;
+ public const int create_local = 2131558673;
- // aapt resource value: 0x7f0d013a
- public const int dark_theme = 2131558714;
+ // aapt resource value: 0x7f0d00cd
+ public const int create_mix = 2131558605;
- // aapt resource value: 0x7f0d00db
- public const int delete = 2131558619;
+ // aapt resource value: 0x7f0d00d1
+ public const int create_mix_from_song = 2131558609;
- // aapt resource value: 0x7f0d0107
- public const int delete_playlist = 2131558663;
+ // aapt resource value: 0x7f0d010d
+ public const int create_playlist = 2131558669;
- // aapt resource value: 0x7f0d0121
- public const int deleted_file = 2131558689;
+ // aapt resource value: 0x7f0d0113
+ public const int create_synced = 2131558675;
- // aapt resource value: 0x7f0d00d3
- public const int download = 2131558611;
+ // aapt resource value: 0x7f0d0112
+ public const int create_youtube = 2131558674;
- // aapt resource value: 0x7f0d0119
- public const int download_albumart = 2131558681;
+ // aapt resource value: 0x7f0d013b
+ public const int dark_theme = 2131558715;
- // aapt resource value: 0x7f0d0132
- public const int download_directory = 2131558706;
+ // aapt resource value: 0x7f0d00dc
+ public const int delete = 2131558620;
+
+ // aapt resource value: 0x7f0d0108
+ public const int delete_playlist = 2131558664;
+
+ // aapt resource value: 0x7f0d0122
+ public const int deleted_file = 2131558690;
+
+ // aapt resource value: 0x7f0d00d4
+ public const int download = 2131558612;
// aapt resource value: 0x7f0d011a
- public const int download_meta = 2131558682;
+ public const int download_albumart = 2131558682;
+
+ // aapt resource value: 0x7f0d0133
+ public const int download_directory = 2131558707;
+
+ // aapt resource value: 0x7f0d011b
+ public const int download_meta = 2131558683;
+
+ // aapt resource value: 0x7f0d00ee
+ public const int download_path_error = 2131558638;
// aapt resource value: 0x7f0d00ed
- public const int download_path_error = 2131558637;
+ public const int download_path_not_set = 2131558637;
- // aapt resource value: 0x7f0d00ec
- public const int download_path_not_set = 2131558636;
+ // aapt resource value: 0x7f0d0121
+ public const int download_queue = 2131558689;
- // aapt resource value: 0x7f0d0120
- public const int download_queue = 2131558688;
+ // aapt resource value: 0x7f0d00f0
+ public const int downloading = 2131558640;
- // aapt resource value: 0x7f0d00ef
- public const int downloading = 2131558639;
+ // aapt resource value: 0x7f0d0153
+ public const int downloading_notification = 2131558739;
- // aapt resource value: 0x7f0d0152
- public const int downloading_notification = 2131558738;
+ // aapt resource value: 0x7f0d0125
+ public const int downloading_status = 2131558693;
- // aapt resource value: 0x7f0d0124
- public const int downloading_status = 2131558692;
+ // aapt resource value: 0x7f0d0150
+ public const int downloading_update = 2131558736;
- // aapt resource value: 0x7f0d014f
- public const int downloading_update = 2131558735;
-
- // aapt resource value: 0x7f0d00d2
- public const int edit_metadata = 2131558610;
-
- // aapt resource value: 0x7f0d00ff
- public const int element = 2131558655;
+ // aapt resource value: 0x7f0d00d3
+ public const int edit_metadata = 2131558611;
// aapt resource value: 0x7f0d0100
- public const int elements = 2131558656;
+ public const int element = 2131558656;
+
+ // aapt resource value: 0x7f0d0101
+ public const int elements = 2131558657;
// aapt resource value: 0x7f0d0090
public const int exo_controls_fastforward_description = 2131558544;
@@ -7648,80 +7648,80 @@ namespace Opus
// aapt resource value: 0x7f0d0085
public const int fab_transformation_sheet_behavior = 2131558533;
- // aapt resource value: 0x7f0d00e5
- public const int featured = 2131558629;
+ // aapt resource value: 0x7f0d00e6
+ public const int featured = 2131558630;
- // aapt resource value: 0x7f0d00b7
- public const int filter = 2131558583;
+ // aapt resource value: 0x7f0d00b8
+ public const int filter = 2131558584;
- // aapt resource value: 0x7f0d00e7
- public const int folders = 2131558631;
+ // aapt resource value: 0x7f0d00e8
+ public const int folders = 2131558632;
// aapt resource value: 0x7f0d0086
public const int hide_bottom_view_on_scroll_behavior = 2131558534;
- // aapt resource value: 0x7f0d00b2
- public const int home = 2131558578;
-
- // aapt resource value: 0x7f0d00c2
- public const int hour = 2131558594;
+ // aapt resource value: 0x7f0d00b3
+ public const int home = 2131558579;
// aapt resource value: 0x7f0d00c3
- public const int hours = 2131558595;
+ public const int hour = 2131558595;
- // aapt resource value: 0x7f0d0122
- public const int initialization = 2131558690;
-
- // aapt resource value: 0x7f0d012d
- public const int later = 2131558701;
-
- // aapt resource value: 0x7f0d00d6
- public const int list_songs = 2131558614;
-
- // aapt resource value: 0x7f0d00ea
- public const int lives = 2131558634;
-
- // aapt resource value: 0x7f0d00fd
- public const int local_playlist_empty = 2131558653;
-
- // aapt resource value: 0x7f0d00f9
- public const int local_playlists = 2131558649;
-
- // aapt resource value: 0x7f0d0140
- public const int log_in = 2131558720;
-
- // aapt resource value: 0x7f0d0141
- public const int log_out = 2131558721;
-
- // aapt resource value: 0x7f0d013f
- public const int logged_in = 2131558719;
-
- // aapt resource value: 0x7f0d0133
- public const int max_download = 2131558707;
-
- // aapt resource value: 0x7f0d0134
- public const int max_download_dialog = 2131558708;
+ // aapt resource value: 0x7f0d00c4
+ public const int hours = 2131558596;
// aapt resource value: 0x7f0d0123
- public const int metadata = 2131558691;
+ public const int initialization = 2131558691;
- // aapt resource value: 0x7f0d011d
- public const int metdata_error_noid = 2131558685;
+ // aapt resource value: 0x7f0d012e
+ public const int later = 2131558702;
- // aapt resource value: 0x7f0d00c0
- public const int minute = 2131558592;
+ // aapt resource value: 0x7f0d00d7
+ public const int list_songs = 2131558615;
- // aapt resource value: 0x7f0d00c1
- public const int minutes = 2131558593;
+ // aapt resource value: 0x7f0d00eb
+ public const int lives = 2131558635;
- // aapt resource value: 0x7f0d00e3
- public const int more = 2131558627;
+ // aapt resource value: 0x7f0d00fe
+ public const int local_playlist_empty = 2131558654;
+
+ // aapt resource value: 0x7f0d00fa
+ public const int local_playlists = 2131558650;
+
+ // aapt resource value: 0x7f0d0141
+ public const int log_in = 2131558721;
+
+ // aapt resource value: 0x7f0d0142
+ public const int log_out = 2131558722;
+
+ // aapt resource value: 0x7f0d0140
+ public const int logged_in = 2131558720;
+
+ // aapt resource value: 0x7f0d0134
+ public const int max_download = 2131558708;
+
+ // aapt resource value: 0x7f0d0135
+ public const int max_download_dialog = 2131558709;
+
+ // aapt resource value: 0x7f0d0124
+ public const int metadata = 2131558692;
// aapt resource value: 0x7f0d011e
- public const int mount_error = 2131558686;
+ public const int metdata_error_noid = 2131558686;
+
+ // aapt resource value: 0x7f0d00c1
+ public const int minute = 2131558593;
+
+ // aapt resource value: 0x7f0d00c2
+ public const int minutes = 2131558594;
+
+ // aapt resource value: 0x7f0d00e4
+ public const int more = 2131558628;
// aapt resource value: 0x7f0d011f
- public const int mount_error_action = 2131558687;
+ public const int mount_error = 2131558687;
+
+ // aapt resource value: 0x7f0d0120
+ public const int mount_error_action = 2131558688;
// aapt resource value: 0x7f0d0040
public const int mr_button_content_description = 2131558464;
@@ -7798,59 +7798,59 @@ namespace Opus
// aapt resource value: 0x7f0d0087
public const int mtrl_chip_close_icon_content_description = 2131558535;
- // aapt resource value: 0x7f0d010f
- public const int new_playlist = 2131558671;
+ // aapt resource value: 0x7f0d0110
+ public const int new_playlist = 2131558672;
- // aapt resource value: 0x7f0d00bd
- public const int next_loading = 2131558589;
+ // aapt resource value: 0x7f0d00be
+ public const int next_loading = 2131558590;
- // aapt resource value: 0x7f0d012f
- public const int no = 2131558703;
+ // aapt resource value: 0x7f0d0130
+ public const int no = 2131558704;
+
+ // aapt resource value: 0x7f0d00f7
+ public const int no_channel = 2131558647;
// aapt resource value: 0x7f0d00f6
- public const int no_channel = 2131558646;
-
- // aapt resource value: 0x7f0d00f5
- public const int no_lives = 2131558645;
-
- // aapt resource value: 0x7f0d0143
- public const int no_permission = 2131558723;
-
- // aapt resource value: 0x7f0d00f4
- public const int no_playlist = 2131558644;
-
- // aapt resource value: 0x7f0d00f2
- public const int no_result = 2131558642;
-
- // aapt resource value: 0x7f0d00e8
- public const int no_song = 2131558632;
+ public const int no_lives = 2131558646;
// aapt resource value: 0x7f0d0144
- public const int no_song_mix = 2131558724;
+ public const int no_permission = 2131558724;
+
+ // aapt resource value: 0x7f0d00f5
+ public const int no_playlist = 2131558645;
// aapt resource value: 0x7f0d00f3
- public const int no_track = 2131558643;
+ public const int no_result = 2131558643;
- // aapt resource value: 0x7f0d013e
- public const int not_log = 2131558718;
+ // aapt resource value: 0x7f0d00e9
+ public const int no_song = 2131558633;
- // aapt resource value: 0x7f0d0149
- public const int not_streamable = 2131558729;
+ // aapt resource value: 0x7f0d0145
+ public const int no_song_mix = 2131558725;
- // aapt resource value: 0x7f0d00bc
- public const int nothing = 2131558588;
+ // aapt resource value: 0x7f0d00f4
+ public const int no_track = 2131558644;
- // aapt resource value: 0x7f0d00bf
- public const int off = 2131558591;
+ // aapt resource value: 0x7f0d013f
+ public const int not_log = 2131558719;
- // aapt resource value: 0x7f0d012b
- public const int ok = 2131558699;
+ // aapt resource value: 0x7f0d014a
+ public const int not_streamable = 2131558730;
- // aapt resource value: 0x7f0d00c5
- public const int open_youtube = 2131558597;
+ // aapt resource value: 0x7f0d00bd
+ public const int nothing = 2131558589;
- // aapt resource value: 0x7f0d013b
- public const int others = 2131558715;
+ // aapt resource value: 0x7f0d00c0
+ public const int off = 2131558592;
+
+ // aapt resource value: 0x7f0d012c
+ public const int ok = 2131558700;
+
+ // aapt resource value: 0x7f0d00c6
+ public const int open_youtube = 2131558598;
+
+ // aapt resource value: 0x7f0d013c
+ public const int others = 2131558716;
// aapt resource value: 0x7f0d0088
public const int password_toggle_content_description = 2131558536;
@@ -7867,188 +7867,188 @@ namespace Opus
// aapt resource value: 0x7f0d008c
public const int path_password_strike_through = 2131558540;
- // aapt resource value: 0x7f0d00c7
- public const int paused = 2131558599;
+ // aapt resource value: 0x7f0d00c8
+ public const int paused = 2131558600;
- // aapt resource value: 0x7f0d0118
- public const int pick_album_local = 2131558680;
-
- // aapt resource value: 0x7f0d00cd
- public const int play = 2131558605;
-
- // aapt resource value: 0x7f0d00d7
- public const int play_in_order = 2131558615;
-
- // aapt resource value: 0x7f0d00cf
- public const int play_last = 2131558607;
+ // aapt resource value: 0x7f0d0119
+ public const int pick_album_local = 2131558681;
// aapt resource value: 0x7f0d00ce
- public const int play_next = 2131558606;
-
- // aapt resource value: 0x7f0d00c6
- public const int playing = 2131558598;
-
- // aapt resource value: 0x7f0d0106
- public const int playlist_add_song_not_found = 2131558662;
-
- // aapt resource value: 0x7f0d0104
- public const int playlist_already_saved = 2131558660;
-
- // aapt resource value: 0x7f0d0101
- public const int playlist_empty = 2131558657;
-
- // aapt resource value: 0x7f0d0105
- public const int playlist_not_found = 2131558661;
-
- // aapt resource value: 0x7f0d00b4
- public const int playlists = 2131558580;
-
- // aapt resource value: 0x7f0d00e4
- public const int queue = 2131558628;
+ public const int play = 2131558606;
// aapt resource value: 0x7f0d00d8
- public const int random_play = 2131558616;
+ public const int play_in_order = 2131558616;
- // aapt resource value: 0x7f0d00f8
- public const int remove = 2131558648;
+ // aapt resource value: 0x7f0d00d0
+ public const int play_last = 2131558608;
+
+ // aapt resource value: 0x7f0d00cf
+ public const int play_next = 2131558607;
+
+ // aapt resource value: 0x7f0d00c7
+ public const int playing = 2131558599;
+
+ // aapt resource value: 0x7f0d0107
+ public const int playlist_add_song_not_found = 2131558663;
+
+ // aapt resource value: 0x7f0d0105
+ public const int playlist_already_saved = 2131558661;
// aapt resource value: 0x7f0d0102
- public const int remove_from_playlist = 2131558658;
+ public const int playlist_empty = 2131558658;
- // aapt resource value: 0x7f0d00d4
- public const int remove_from_queue = 2131558612;
-
- // aapt resource value: 0x7f0d00f7
- public const int remove_search = 2131558647;
-
- // aapt resource value: 0x7f0d00d5
- public const int remove_track_from_playlist = 2131558613;
-
- // aapt resource value: 0x7f0d0103
- public const int removed_from_playlist = 2131558659;
-
- // aapt resource value: 0x7f0d00c8
- public const int removed_from_queue = 2131558600;
-
- // aapt resource value: 0x7f0d00da
- public const int rename = 2131558618;
-
- // aapt resource value: 0x7f0d0108
- public const int rename_playlist = 2131558664;
+ // aapt resource value: 0x7f0d0106
+ public const int playlist_not_found = 2131558662;
// aapt resource value: 0x7f0d00b5
- public const int repeat = 2131558581;
+ public const int playlists = 2131558581;
+
+ // aapt resource value: 0x7f0d00e5
+ public const int queue = 2131558629;
+
+ // aapt resource value: 0x7f0d00d9
+ public const int random_play = 2131558617;
+
+ // aapt resource value: 0x7f0d00f9
+ public const int remove = 2131558649;
+
+ // aapt resource value: 0x7f0d0103
+ public const int remove_from_playlist = 2131558659;
+
+ // aapt resource value: 0x7f0d00d5
+ public const int remove_from_queue = 2131558613;
+
+ // aapt resource value: 0x7f0d00f8
+ public const int remove_search = 2131558648;
+
+ // aapt resource value: 0x7f0d00d6
+ public const int remove_track_from_playlist = 2131558614;
+
+ // aapt resource value: 0x7f0d0104
+ public const int removed_from_playlist = 2131558660;
// aapt resource value: 0x7f0d00c9
- public const int save_as_playlist = 2131558601;
+ public const int removed_from_queue = 2131558601;
+
+ // aapt resource value: 0x7f0d00db
+ public const int rename = 2131558619;
+
+ // aapt resource value: 0x7f0d0109
+ public const int rename_playlist = 2131558665;
+
+ // aapt resource value: 0x7f0d00b6
+ public const int repeat = 2131558582;
+
+ // aapt resource value: 0x7f0d00ca
+ public const int save_as_playlist = 2131558602;
+
+ // aapt resource value: 0x7f0d010f
+ public const int save_folder_playlist = 2131558671;
// aapt resource value: 0x7f0d010e
- public const int save_folder_playlist = 2131558670;
-
- // aapt resource value: 0x7f0d010d
- public const int save_playlist = 2131558669;
+ public const int save_playlist = 2131558670;
// aapt resource value: 0x7f0d0073
public const int search_menu_title = 2131558515;
- // aapt resource value: 0x7f0d00ee
- public const int set_path = 2131558638;
-
- // aapt resource value: 0x7f0d00b9
- public const int settings = 2131558585;
+ // aapt resource value: 0x7f0d00ef
+ public const int set_path = 2131558639;
// aapt resource value: 0x7f0d00ba
- public const int show_queue = 2131558586;
+ public const int settings = 2131558586;
+
+ // aapt resource value: 0x7f0d00bb
+ public const int show_queue = 2131558587;
+
+ // aapt resource value: 0x7f0d00e3
+ public const int shuffle = 2131558627;
// aapt resource value: 0x7f0d00e2
- public const int shuffle = 2131558626;
+ public const int shuffle_all = 2131558626;
- // aapt resource value: 0x7f0d00e1
- public const int shuffle_all = 2131558625;
+ // aapt resource value: 0x7f0d00bf
+ public const int sleep_timer = 2131558591;
- // aapt resource value: 0x7f0d00be
- public const int sleep_timer = 2131558590;
-
- // aapt resource value: 0x7f0d00e6
- public const int songs = 2131558630;
+ // aapt resource value: 0x7f0d00e7
+ public const int songs = 2131558631;
// aapt resource value: 0x7f0d008d
public const int status_bar_notification_info_overflow = 2131558541;
- // aapt resource value: 0x7f0d00de
- public const int stop_sync = 2131558622;
+ // aapt resource value: 0x7f0d00df
+ public const int stop_sync = 2131558623;
- // aapt resource value: 0x7f0d0109
- public const int stop_syncing = 2131558665;
+ // aapt resource value: 0x7f0d010a
+ public const int stop_syncing = 2131558666;
// aapt resource value: 0x7f0d003d
public const int summary_collapsed_preference_list = 2131558461;
- // aapt resource value: 0x7f0d00dc
- public const int sync = 2131558620;
-
// aapt resource value: 0x7f0d00dd
- public const int sync_now = 2131558621;
+ public const int sync = 2131558621;
- // aapt resource value: 0x7f0d0135
- public const int sync_remove = 2131558709;
+ // aapt resource value: 0x7f0d00de
+ public const int sync_now = 2131558622;
- // aapt resource value: 0x7f0d00f0
- public const int syncing = 2131558640;
+ // aapt resource value: 0x7f0d0136
+ public const int sync_remove = 2131558710;
- // aapt resource value: 0x7f0d0153
- public const int tap_details = 2131558739;
+ // aapt resource value: 0x7f0d00f1
+ public const int syncing = 2131558641;
- // aapt resource value: 0x7f0d0137
- public const int theme = 2131558711;
+ // aapt resource value: 0x7f0d0154
+ public const int tap_details = 2131558740;
// aapt resource value: 0x7f0d0138
- public const int theme_dialog = 2131558712;
+ public const int theme = 2131558712;
- // aapt resource value: 0x7f0d00c4
- public const int timer = 2131558596;
+ // aapt resource value: 0x7f0d0139
+ public const int theme_dialog = 2131558713;
- // aapt resource value: 0x7f0d0146
- public const int timout = 2131558726;
-
- // aapt resource value: 0x7f0d0113
- public const int title = 2131558675;
-
- // aapt resource value: 0x7f0d0142
- public const int undo = 2131558722;
-
- // aapt resource value: 0x7f0d011b
- public const int undo_change = 2131558683;
-
- // aapt resource value: 0x7f0d00e0
- public const int unfork = 2131558624;
-
- // aapt resource value: 0x7f0d010a
- public const int unfork_playlist = 2131558666;
+ // aapt resource value: 0x7f0d00c5
+ public const int timer = 2131558597;
// aapt resource value: 0x7f0d0147
- public const int unknow = 2131558727;
+ public const int timout = 2131558727;
- // aapt resource value: 0x7f0d00bb
- public const int up_next = 2131558587;
+ // aapt resource value: 0x7f0d0114
+ public const int title = 2131558676;
- // aapt resource value: 0x7f0d014d
- public const int up_to_date = 2131558733;
+ // aapt resource value: 0x7f0d0143
+ public const int undo = 2131558723;
- // aapt resource value: 0x7f0d0125
- public const int up_to_date_status = 2131558693;
+ // aapt resource value: 0x7f0d011c
+ public const int undo_change = 2131558684;
- // aapt resource value: 0x7f0d014b
- public const int update = 2131558731;
+ // aapt resource value: 0x7f0d00e1
+ public const int unfork = 2131558625;
+
+ // aapt resource value: 0x7f0d010b
+ public const int unfork_playlist = 2131558667;
+
+ // aapt resource value: 0x7f0d0148
+ public const int unknow = 2131558728;
+
+ // aapt resource value: 0x7f0d00bc
+ public const int up_next = 2131558588;
+
+ // aapt resource value: 0x7f0d014e
+ public const int up_to_date = 2131558734;
+
+ // aapt resource value: 0x7f0d0126
+ public const int up_to_date_status = 2131558694;
// aapt resource value: 0x7f0d014c
- public const int update_message = 2131558732;
+ public const int update = 2131558732;
- // aapt resource value: 0x7f0d014a
- public const int update_no_internet = 2131558730;
+ // aapt resource value: 0x7f0d014d
+ public const int update_message = 2131558733;
- // aapt resource value: 0x7f0d0150
- public const int updating = 2131558736;
+ // aapt resource value: 0x7f0d014b
+ public const int update_no_internet = 2131558731;
+
+ // aapt resource value: 0x7f0d0151
+ public const int updating = 2131558737;
// aapt resource value: 0x7f0d003e
public const int v7_preference_off = 2131558462;
@@ -8056,35 +8056,38 @@ namespace Opus
// aapt resource value: 0x7f0d003f
public const int v7_preference_on = 2131558463;
- // aapt resource value: 0x7f0d013d
- public const int version = 2131558717;
+ // aapt resource value: 0x7f0d013e
+ public const int version = 2131558718;
- // aapt resource value: 0x7f0d0131
- public const int volume = 2131558705;
+ // aapt resource value: 0x7f0d0132
+ public const int volume = 2131558706;
- // aapt resource value: 0x7f0d0139
- public const int white_theme = 2131558713;
+ // aapt resource value: 0x7f0d013a
+ public const int white_theme = 2131558714;
- // aapt resource value: 0x7f0d012e
- public const int yes = 2131558702;
+ // aapt resource value: 0x7f0d012f
+ public const int yes = 2131558703;
- // aapt resource value: 0x7f0d0145
- public const int youtube_endpoint = 2131558725;
+ // aapt resource value: 0x7f0d0146
+ public const int youtube_endpoint = 2131558726;
- // aapt resource value: 0x7f0d00fc
- public const int youtube_loading_error = 2131558652;
+ // aapt resource value: 0x7f0d00fd
+ public const int youtube_loading_error = 2131558653;
- // aapt resource value: 0x7f0d00fe
- public const int youtube_playlist_empty = 2131558654;
+ // aapt resource value: 0x7f0d00ff
+ public const int youtube_playlist_empty = 2131558655;
- // aapt resource value: 0x7f0d00fa
- public const int youtube_playlists = 2131558650;
+ // aapt resource value: 0x7f0d00fb
+ public const int youtube_playlists = 2131558651;
- // aapt resource value: 0x7f0d00b6
- public const int youtube_search = 2131558582;
+ // aapt resource value: 0x7f0d00b7
+ public const int youtube_search = 2131558583;
- // aapt resource value: 0x7f0d0116
- public const int youtubeid = 2131558678;
+ // aapt resource value: 0x7f0d0117
+ public const int youtubeid = 2131558679;
+
+ // aapt resource value: 0x7f0d00b2
+ public const int yt_api_key = 2131558578;
static String()
{
diff --git a/Opus/Resources/values/credentials.xml b/Opus/Resources/values/credentials.xml
index 94d84a2..87f5868 100644
--- a/Opus/Resources/values/credentials.xml
+++ b/Opus/Resources/values/credentials.xml
@@ -1,5 +1,9 @@
+
+
112086459272-59scolco82ho7d6hcieq8kmdjai2i2qd.apps.googleusercontent.com
Q8vVJRc5Cofeuj1-BxAg5qta
+
+ AIzaSyBLrLr_rxAJrBu5cJw0hnWZ2hyN9eqg8-M
\ No newline at end of file