IEnumerator GetChannelsList()
        {
            yield return(null);

            UnityWebRequest www = UnityWebRequest.Get("https://radio.assistant.moe/Channels/");

            Misc.Logger.Info("Requesting channels list...");
            channelSelectionViewController.SetLoadingState(true);

            yield return(www.SendWebRequest());

            if (www.isNetworkError || www.isHttpError)
            {
                Misc.Logger.Error(www.error);
            }
            else
            {
#if DEBUG
                Misc.Logger.Info("Received response!");
#endif
                JSONNode node = JSON.Parse(www.downloadHandler.text);

                _channelInfos.Clear();
                List <ChannelInfo> channelInfos = new List <ChannelInfo>();

                if (node["channels"].Count == 0)
                {
                    Misc.Logger.Error($"No channels available");
                    yield break;
                }

                for (int i = 0; i < node["channels"].Count; i++)
                {
                    channelInfos.Add(new ChannelInfo(node["channels"][i]));
                }

                currentChannel = 0;

                Misc.Logger.Info("Requesting channel infos...");

                _channelClients.ForEach(x =>
                {
                    if (x != null)
                    {
                        x.Abort();
                        x.ReceivedResponse -= ReceivedResponse;
                        x.ChannelException -= ChannelException;
                    }
                });
                _channelClients.Clear();

                var groupedChannels = channelInfos.GroupBy(x => new { x.ip, x.port }).ToList();

                for (int i = 0; i < groupedChannels.Count; i++)
                {
                    RadioClient client = new GameObject("RadioClient").AddComponent <RadioClient>();

                    client.channelInfos      = groupedChannels[i].ToList();
                    client.ReceivedResponse += ReceivedResponse;
                    client.ChannelException += ChannelException;
                    _channelClients.Add(client);
                }

                _channelClients.ForEach(x => x.GetRooms());
                Misc.Logger.Info("Requested channel infos!");
            }
        }