示例#1
0
        public RocksmithService()
        {
            rocksmithDir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "rocksmith"));

            Config = JsonCommon.Load <RocksmithConfig>(Path.Combine(rocksmithDir.FullName, "rocksmith.json"));
            Queue  = new RocksmithQueue(rocksmithDir.FullName, Config.UserLimit);
        }
示例#2
0
        public StreamingService(BotService bot, RocksmithService rocksmith)
        {
            // Бот
            Bot       = bot;
            Rocksmith = rocksmith;

            // Настройки приложения
            JObject settings = JsonCommon.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "settings.json"));

            contentProviders = new List <ContentProvider>();
            Broadcast        = new Broadcast();

            JToken streamingConfigs = settings["streaming"];

            if (!streamingConfigs.IsNullOrEmpty())
            {
                if (!streamingConfigs["twitch"].IsNullOrEmpty())
                {
                    Twitch = new TwitchConnector(Bot, JsonConvert.DeserializeObject <TwitchConnectorConfig>(streamingConfigs["twitch"].ToString()));
                }
                if (!streamingConfigs["youtube"].IsNullOrEmpty())
                {
                    Youtube = new YoutubeConnector(Bot, JsonConvert.DeserializeObject <YoutubeConnectorConfig>(streamingConfigs["youtube"].ToString()));
                }
            }

            InitProviders((JObject)settings["providers"]);
            InitWidgetsSchemes(settings["scheme"].ToString());
            InitBroadcastHandlers();
        }
示例#3
0
        public void Init(string fileName)
        {
            JObject data = JsonCommon.Load(fileName);

            Config     = fileName;
            ConfigData = data;

            ProcessID  = -1;
            ProgramID  = ConfigData["id"].ToString();
            Module     = ConfigData["module"].ToString();
            LastStatus = GetLastStatus();
            Version    = new Version(ConfigData["version"]?.ToString() ?? "0.0.0");
        }
示例#4
0
        private void InitWidgetsSchemes(string current)
        {
            WidgetsSchemes = new List <WidgetsScheme>();

            string fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "widgets");

            string[] files = Directory.GetFiles(fileName, "*.json");
            foreach (string file in files)
            {
                WidgetsSchemes.Add(JsonCommon.Load <WidgetsScheme>(file));
            }

            WidgetsScheme = WidgetsSchemes.FirstOrDefault(s => s.Name == current);
        }
示例#5
0
        private ETLUpdateRecord AddUpdateRecord(string file)
        {
            string extension = Path.GetExtension(file).Replace(".", string.Empty);
            string fileName  = Path.GetFileName(file);
            // На программу подразумевается одна конфигурация и один модуль
            ETLProcess prc = pumps.FirstOrDefault(p => extension.IsMatch("json")
                ? p.Config == fileName
                : p.Module == fileName);

            // В реестре закачка отсутствует, есть только программный модуль
            if (prc == null && extension.IsMatch("dll"))
            {
                return(null);
            }

            ETLUpdateRecord rec = null;

            switch (extension)
            {
            case "json":
                JObject data      = JsonCommon.Load(file);
                string  programID = prc == null ? data["id"].ToString() : prc.ProgramID;

                rec = new ETLUpdateRecord {
                    Config    = fileName,
                    Module    = data["module"].ToString(),
                    ProgramID = programID
                };

                Updates[programID] = rec;
                break;

            case "dll":
                // Если записи нет, то добавляем, иначе нужный модуль уже должен быть прописан в обновление
                if (!Updates.ContainsKey(prc.ProgramID))
                {
                    rec = new ETLUpdateRecord {
                        ProgramID = prc.ProgramID,
                        Module    = fileName
                    };

                    Updates.Add(prc.ProgramID, rec);
                }
                break;
            }

            return(rec);
        }
示例#6
0
        /// <summary>
        /// args[0] - id закачки;
        /// args[1] - тип конфигурации: -h - история, -s - строка -f - файл
        /// args[2] - конфигурация: в зависимости от args[1] это строка конфигурации или имя файла
        /// </summary>
        static void Main(string[] args)
        {
            try
            {
                context = new ETLContext(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config", "ETLSettings.json"));
                context.Initialize();
                context.DB.Connect();

                decimal sessNo = Convert.ToDecimal(args[0]);
                historyRecord = context.History[sessNo];

                JObject config = null;
                switch (args[1])
                {
                case "-f":
                    config = JsonCommon.Load(Path.Combine(context.Settings.Registry.ProgramsPath, args[2]));
                    break;

                case "-h":
                    config = (JObject)JsonConvert.DeserializeObject(historyRecord.config);
                    break;

                case "-s":
                    config = (JObject)JsonConvert.DeserializeObject(args[2]);
                    break;
                }

                if (config == null)
                {
                    return;
                }

                // Инициализация
                Init(sessNo, config["id"].ToString(), config["module"].ToString());

                // Выполнение
                Exec(sessNo, config);
            }
            catch (Exception ex)
            {
                Logger.WriteToTrace($"Критическая ошибка загрузки закачки: {ex}", TraceMessageKind.CriticalError);
            }
            finally
            {
                program?.Dispose();
                Logger.CloseLogFile();
            }
        }
示例#7
0
        private void Init()
        {
            // Загрузка текстовых команд
            commandList = new List <string>();

            JObject settings = JsonCommon.Load(Path.Combine(botDir.FullName, "bot.json"));

            if (!settings.IsNullOrEmpty())
            {
                LogMessages  = Convert.ToBoolean(settings["logMessages"]);
                commandList  = JsonConvert.DeserializeObject <List <string> >(settings["commands"].ToString());
                SoundTimeout = Convert.ToInt32(settings["soundTimeout"].ToString());
            }

            // Загрузка звуковых команд
            soundCommandList = JsonCommon.Load <Dictionary <string, string> >(Path.Combine(botDir.FullName, "sound.json"));
        }
示例#8
0
        public void CachePlaylists()
        {
            localPlaylists = new List <LocalPlaylist>();
            playlists      = new List <PlaylistInfo>();

            FileInfo[] files = new DirectoryInfo(playlistsDir).GetFiles("*.json");
            if (files.Length == 0)
            {
                return;
            }

            int id = 0;

            foreach (FileInfo file in files)
            {
                LocalPlaylist playlist = JsonCommon.Load <LocalPlaylist>(file.FullName);
                playlist.ID = $"{id}";

                int trackId = 0;
                foreach (LocalTrack track in playlist.Tracks)
                {
                    track.ID = $"{id}:{trackId++}";
                }

                localPlaylists.Add(playlist);

                id++;
            }

            localPlaylists.ForEach(p => {
                playlists.Add(new PlaylistInfo {
                    Type  = ProviderType.Local,
                    ID    = p.ID,
                    Title = p.Title,
                    Cover = $"api/content/playlistCover?id={p.ID}"
                });
            });
        }
示例#9
0
        /// <summary>
        /// Инициализация списка закачек
        /// </summary>
        private void InitPumpsList()
        {
            Logger.WriteToTrace("Формирование списка закачек.");

            Pumps = new List <ETLProcess>();

            string[]      pumpConfigs = Directory.GetFiles(Context.Settings.Registry.ProgramsPath);
            List <string> ids         = new List <string>();

            foreach (string pumpConfig in pumpConfigs)
            {
                try
                {
                    string  fileName = Path.GetFileName(pumpConfig);
                    JObject data     = JsonCommon.Load(pumpConfig);
                    string  id       = data["id"].ToString();

                    // Если уже существует закачка с таким ID
                    if (ids.Contains(id))
                    {
                        Logger.WriteToTrace($"Закачка с ID = \"{id}\" (\"{fileName}\") уже существует.", TraceMessageKind.Warning);
                        continue;
                    }

                    // Процесс инициализируется данными конфигурации
                    ETLProcess prc = new ETLProcess(pumpConfig, Context.History);

                    // Сохраняется конфиг закачки с описанием
                    Pumps.Add(prc);
                    ids.Add(id);
                }
                catch (Exception ex)
                {
                    Logger.WriteToTrace($"Ошибка при формировании реестра закачек: {ex}.", TraceMessageKind.Error);
                }
            }
        }