Beispiel #1
0
 // Remember to add an instance of the AudioService
 // to your IServiceCollection when you initialize your bot
 public LucaModule(ServerManager servers, AniList myanimelist, IConfigurationRoot config, Random rand)
 {
     _servers     = servers;
     _myanimelist = myanimelist;
     _config      = config;
     _rand        = rand;
 }
Beispiel #2
0
        /// <summary>
        /// Return the correct anime list based on the default value.
        /// </summary>
        /// <returns>The retrieved AnimeList</returns>
        private static AnimeList GetAnimeList()
        {
            var act = Settings.DefaultAnime;

            try {
                AnimeList list;
                switch (act?.Provider)
                {
                case "MyAnimeList":
                    list = AnimeList.Load(new MyAnimeList(act.Credentials));
                    break;

                case "Kitsu":
                    list = AnimeList.Load(new Kitsu(act.Credentials));
                    break;

                case "AniList":
                    var cli = new AniList(act);
                    cli.TokenExpired += OnAniListTokenExpired;
                    list              = AnimeList.Load(cli);
                    break;

                default:
                    return(null);
                }
                return(list);
            }
            catch (Exception e) {
                Debug.WriteLine(e.InnerException?.Message ?? e.Message);
                Debug.WriteLine(e.InnerException?.StackTrace ?? e.StackTrace);
                var md = new MessageDialog(Win, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.YesNo,
                                           "An error was encountered while loading the default anime list: \n" + (e.InnerException?.Message ?? e.Message) +
                                           "\n Open the settings window?")
                {
                    WindowPosition = WindowPosition.Center
                };
                if (md.Run() == (int)ResponseType.Yes)
                {
                    md.Destroy();
                    var s = new SettingsWindow(false)
                    {
                        WindowPosition = WindowPosition.Center
                    };
                    if (s.Run() == (int)ResponseType.Accept)
                    {
                        SettingsChanged();
                    }
                    s.Destroy();
                }
                else
                {
                    md.Destroy();
                }
                return(null);
            }
        }
        private void _MusicInfo()
        {
            var vm = new VM音乐();

            vm.List = new ObservableCollection <番组>(AniList.Select(a => a.番组));

            var win = new View.W音乐(vm);

            win.Show();
        }
Beispiel #4
0
        public async Task SetUp()
        {
            Program.UserSettings = Settings.Load();

            // Make sure there is an account called trackr2@anilist in settings file
            var act = Program.UserSettings.Accounts.FirstOrDefault(x => x.Provider == "AniList" && x.Username == Username);

            Assert.AreNotEqual(act, null);

            _aniList = new AniList(act);
            Assert.True(await _aniList.VerifyCredentials());
            Assert.AreEqual(_aniList.Username, Username);             // Run this with this account
        }
 private void _Finish()
 {
     if (Selected != null)
     {
         Selected.完结    = true;
         Selected.番组.完结 = true;
         if (!Selected.在线)
         {
             moveDirectory(Selected);
         }
         DbModel.SaveChanges();
         AniList.Remove(Selected);
     }
 }
Beispiel #6
0
        public static async Task BuildServices()
        {
            // TODO : Rewrite useraccountfactory
            List <UserAccountModel> userAccounts = GetAllUserAccounts();
            List <Task>             tasks        = new List <Task>();

            services = new Dictionary <int, IApiService>();
            foreach (var account in userAccounts)
            {
                tasks.Add(Task.Run(async() =>
                {
                    switch (account.Service)
                    {
                    case ServiceType.ANILIST:
                        {
                            IApiService service = new AniList();
                            var additionalinfo  = JsonConvert.DeserializeObject <Tuple <string, string> >(account.AdditionalOption.ToString());
                            await service.VerifyAccount(additionalinfo.Item2);
                            lock (services)
                            {
                                services.Add(account.Id, service);
                                if (account.IsDefaultService)
                                {
                                    CurrentService = service;
                                }
                            }
                            break;
                        }

                    case ServiceType.MYANIMELIST:
                        {
                            break;
                        }

                    case ServiceType.KITSU:
                        {
                            break;
                        }

                    default: break;
                    }
                }));
            }
            await Task.WhenAll(tasks);
        }
        public frmMain()
        {
            IEnumerator AniList;   // List of animations.
            String      Voice;     // The current voice.
            String      WinFolder; // Windows Folder

            // Required for Windows Form Designer support
            InitializeComponent();

            // Obtain the Windows folder location.
            WinFolder =
                Environment.SystemDirectory.Substring(
                    0,
                    Environment.SystemDirectory.IndexOf("System32"));

            // Try loading a character.
            TestAgent.Characters.Load(
                "Merlin",
                @WinFolder + @"MSAgent\Chars\Merlin.acs");

            // Make the character the current speaker.
            CurrentSpeaker = TestAgent.Characters["Merlin"];

            // Get the animation list for this character.
            AniList = TestAgent.Characters["Merlin"].AnimationNames.GetEnumerator();

            // Load the animation list into the CurrentSpeaker command
            // list.
            while (AniList.MoveNext())
            {
                Voice = (String)AniList.Current;
                Voice = Voice.Replace("_", "underscore");
                CurrentSpeaker.Commands.Add((String)AniList.Current,
                                            AniList.Current,
                                            Voice,
                                            true,
                                            false);
            }
        }
Beispiel #8
0
        private async void OnOkButton(object o, EventArgs args)
        {
            UserPass cred;

            Api.Api api;
            bool    res;          // result of credential verification

            _okButton.Sensitive = false;
            // what type of account are we recreating?
            switch (_type.ActiveText)
            {
            case "MyAnimeList":
            case "Kitsu":
                if (_type.ActiveText == "MyAnimeList")
                {
                    cred = new UserPass(_username.Text, _password.Text);
                    api  = new MyAnimeList(cred);
                }
                else if (_type.ActiveText == "Kitsu")
                {
                    if (!_editing)
                    {
                        _email = _username.Text;
                    }
                    cred = new UserPass(_email, _password.Text);
                    api  = new Kitsu(cred);
                }
                else
                {
                    throw new NotImplementedException();
                }

                try {
                    res = Task.Run(() => api.VerifyCredentials()).Result;
                }
                // ApiRequestException, WebException...
                catch (Exception e) {
                    var ed = new MessageDialog(null, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.OkCancel,
                                               e.InnerException?.Message ?? e.Message)
                    {
                        WindowPosition = WindowPosition.Center
                    };
                    var ret = ed.Run();
                    ed.Destroy();
                    Debug.WriteLine("[Exception] " + (e.InnerException?.Message ?? e.Message));
                    Debug.WriteLineIf(e.InnerException != null, e.InnerException?.StackTrace);

                    if (ret == (int)ResponseType.Cancel)
                    {
                        Respond(ResponseType.Reject);
                    }
                    _okButton.Sensitive = true;
                    return;
                }

                if (res)
                {
                    if (api.GetType() == typeof(Kitsu))
                    {
                        Result = new Account(api.Name, api.Username, cred, ((Kitsu)api).Email);
                    }
                    else
                    {
                        Result = new Account(api.Name, api.Username, cred);
                    }
                    Respond(ResponseType.Accept);
                }
                else                           // Invalid username or password!
                {
                    var ed = new MessageDialog(null, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.OkCancel,
                                               "Invalid username or password.")
                    {
                        WindowPosition = WindowPosition.Center
                    };
                    var ret = ed.Run();
                    ed.Destroy();
                    if (ret == (int)ResponseType.Cancel)
                    {
                        Respond(ResponseType.Reject);
                    }
                    else
                    {
                        _okButton.Sensitive = true;
                    }
                }
                break;

            case "AniList":
                var pin = RequestAniListToken();
                cred = new UserPass(null, pin);
                var account = new Account(AniList.Identifier, null, cred);
                api = new AniList(account);
                ((AniList)api).TokenExpired += Program.OnAniListTokenExpired;

                try {
                    res = await api.VerifyCredentials();
                }
                catch (Exception e) {
                    var ed = new MessageDialog(null, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.Ok,
                                               e.InnerException?.Message ?? e.Message)
                    {
                        WindowPosition = WindowPosition.Center
                    };
                    ed.Run();
                    ed.Destroy();
                    Respond(ResponseType.Reject);
                    Debug.WriteLine("[Exception] " + (e.InnerException?.Message ?? e.Message));
                    return;
                }

                if (res)
                {
                    account.Username = api.Username;
                    Result           = account;
                    Respond(ResponseType.Accept);
                }
                else
                {
                    var ed = new MessageDialog(null, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.Ok,
                                               "An invalid authentication pin was entered.")
                    {
                        WindowPosition = WindowPosition.Center
                    };
                    ed.Run();
                    ed.Destroy();
                    Respond(ResponseType.Reject);
                }
                break;

            default:
                Debug.Fail($"The account type {_type.ActiveText} has not been implemented.");
                Respond(ResponseType.Reject);
                break;
            }
        }