Using youtube API key instead of signed in account in order to make the app usable the time to fix the loggin system.

This commit is contained in:
Tristan Roux
2019-04-24 21:37:02 +02:00
parent 7ab9376c12
commit 32bc918610
11 changed files with 458 additions and 419 deletions

View File

@@ -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

View File

@@ -656,7 +656,7 @@ namespace Opus.Api
/// <returns></returns>
public static async Task<(List<PlaylistItem>, string)> GetOwnedYoutubePlaylists(List<PlaylistItem> SyncedPlaylists, System.Action<PlaylistItem, int> UiCallback)
{
if (!await MainActivity.instance.WaitForYoutube())
if (!await MainActivity.instance.WaitForYoutube() || YoutubeManager.IsUsingAPI)
return (null, "Error"); //Should have a better error handling
List<PlaylistItem> YoutubePlaylists = new List<PlaylistItem>();

View File

@@ -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;

View File

@@ -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
/// <summary>

View File

@@ -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<bool> WaitForYoutube()
public async Task<bool> 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()));

View File

@@ -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;

View File

@@ -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)

View File

@@ -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))

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.sdg.opus" android:installLocation="preferExternal" android:versionName="3.2.6" android:versionCode="36">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.sdg.opus" android:installLocation="preferExternal" android:versionName="3.2.7" android:versionCode="37">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

View File

@@ -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()
{

View File

@@ -1,5 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<!--<string name="clientID">112086459272-pkkbf816tnpblraqf6lng4r3hapus6uu.apps.googleusercontent.com</string>-->
<string name="clientID">112086459272-59scolco82ho7d6hcieq8kmdjai2i2qd.apps.googleusercontent.com</string>
<string name="clientSecret">Q8vVJRc5Cofeuj1-BxAg5qta</string>
<string name="yt_api_key">AIzaSyBLrLr_rxAJrBu5cJw0hnWZ2hyN9eqg8-M</string>
</resources>