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