Esempio n. 1
0
        private async static Task Harvest_SingToJehovah_Vocal_Links()
        {
            var tasks = new List <Task>();

            var languageDiscs = new Dictionary <string, List <string> >();
            var languageCodes = new Dictionary <string, string>();
            var discCodes     = new Dictionary <string, string>();

            for (int i = 1; i <= 6; i++)
            {
                var currentDisc     = string.Format("Disc {0}", i);
                var currentDiscCode = $"iasnv{i}";
                discCodes.Add(currentDiscCode, currentDisc);

                var harvestLink = $"https://www.jw.org/apps/TRGCHlZRQVNYVrXF?booknum=0&output=json&pub={currentDiscCode}&fileformat=MP3%2CAAC&alllangs=1&langwritten=E&txtCMSLang=E";

                var jsonString = await DownloadUtility.GetAsync(harvestLink);

                var model = JsonConvert.DeserializeObject <dynamic>(jsonString);

                foreach (var item in model.languages)
                {
                    var languageCode = item.Name;
                    var language     = model.languages[item.Name]["name"].Value;

                    languageCodes[languageCode] = language;

                    await MusicHarverster.HarvestMusicLinks("iasnv", currentDiscCode, languageCode);

                    if (languageDiscs.ContainsKey(languageCode))
                    {
                        languageDiscs[languageCode].Add(currentDiscCode);
                    }
                    else
                    {
                        languageDiscs[languageCode] = new List <string>(new[] { currentDiscCode });
                    }
                }
            }

            if (!Directory.Exists($"../../media/Music/Vocals/iasnv"))
            {
                Directory.CreateDirectory($"../../media/music/Vocals/iasnv");
            }

            File.WriteAllText($"../../media/Music/Vocals/index.json", JsonConvert.SerializeObject(
                                  new [] { new { Key = "iasnv", Value = "Sing to Jehovah (2009)" } }));


            File.WriteAllText($"../../media/Music/Vocals/iasnv/index.json", JsonConvert.SerializeObject(
                                  languageDiscs.Select(x => new
            {
                Key   = x.Key,
                Value = languageCodes[x.Key]
            }).ToList()));

            foreach (var discs in languageDiscs)
            {
                if (!Directory.Exists($"../../media/Music/Vocals/iasnv/{discs.Key}"))
                {
                    Directory.CreateDirectory($"../../media/Music/Vocals/iasnv/{discs.Key}");
                }

                File.WriteAllText($"../../media/Music/Vocals/iasnv/{discs.Key}/index.json", JsonConvert.SerializeObject(
                                      discs.Value.Select(x => new
                {
                    Key   = x,
                    Value = discCodes[x]
                })));
            }
        }
Esempio n. 2
0
        private async static Task Harvest_Bible_Links()
        {
            var tasks = new List <Task>();

            var languageEditionsMapping = new Dictionary <string, List <string> >();
            var languageCodes           = new Dictionary <string, string>();

            foreach (var edition in bibleCodes)
            {
                var editionCode = edition.Key;

                var harvestLink = $"https://www.jw.org/apps/TRGCHlZRQVNYVrXF?booknum=0&output=json&pub={editionCode}&fileformat=MP3%2CAAC&alllangs=1&langwritten=E&txtCMSLang=E";

                var jsonString = await DownloadUtility.GetAsync(harvestLink);

                var model = JsonConvert.DeserializeObject <dynamic>(jsonString);

                foreach (var item in model.languages)
                {
                    var languageCode = item.Name;
                    var language     = model.languages[item.Name]["name"].Value;

                    bool result = false;
                    languageCodes[languageCode] = language;

                    try
                    {
                        result = await BibleHarvester.HarvestBibleLinks(languageCode, editionCode);
                    }
                    catch { }

                    if (result)
                    {
                        if (languageEditionsMapping.ContainsKey(languageCode))
                        {
                            languageEditionsMapping[languageCode].Add(edition.Key);
                        }
                        else
                        {
                            languageEditionsMapping[languageCode] = new List <string>(new[] { edition.Key });
                        }
                    }
                }
            }


            if (!Directory.Exists($"../../media/Audio/Bible"))
            {
                Directory.CreateDirectory($"../../media/Audio/Bible");
            }

            File.WriteAllText($"../../media/Audio/Bible/languages.json", JsonConvert.SerializeObject(
                                  languageEditionsMapping.Select(x => new
            {
                Key   = x.Key,
                Value = languageCodes[x.Key]
            }).ToList()));

            foreach (var languageEditionsMap in languageEditionsMapping)
            {
                if (!Directory.Exists($"../../media/Audio/Bible/{languageEditionsMap.Key}"))
                {
                    Directory.CreateDirectory($"../media/Audio/Bible/{languageEditionsMap.Key}");
                }

                File.WriteAllText($"../../media/Audio/Bible/{languageEditionsMap.Key}/editions.json", JsonConvert.SerializeObject(
                                      languageEditionsMap.Value.Select(x => new
                {
                    Key   = x,
                    Value = bibleCodes[x]
                })));
            }
        }
Esempio n. 3
0
        internal static async Task <bool> HarvestBibleLinks(string languageCode, string editionCode)
        {
            var dir  = $"../../media/Audio/Bible/{languageCode}/{editionCode}";
            var file = $"{dir}/index.json";

            if (File.Exists(file))
            {
                return(true);
            }

            var harvestLink = $"https://www.jw.org/apps/TRGCHlZRQVNYVrXF?output=json&pub={editionCode}&fileformat=MP3%2CAAC&alllangs=0&langwritten={languageCode}&txtCMSLang=E";

            var jsonString = await DownloadUtility.GetAsync(harvestLink);

            dynamic model;

            try
            {
                model = JsonConvert.DeserializeObject <dynamic>(jsonString);
            }
            catch
            {
                return(false);
            }

            var bibleBooks = new Dictionary <int, BibleBook>();
            var bookFiles  = model.files[languageCode].MP3;

            foreach (var bookFile in bookFiles)
            {
                string url = bookFile.file.url;

                if (bookFile.track == 0 ||
                    url.EndsWith(".zip"))
                {
                    continue;
                }

                int bookNumber = bookFile.booknum;

                if (!bibleBooks.ContainsKey(bookNumber))
                {
                    bibleBooks[bookNumber] = new BibleBook()
                    {
                        BookNumber = bookFile.booknum,
                        Name       = bookFile.title.ToString().Split('-')[0].Trim()
                    };
                }

                bibleBooks[bookNumber].Chapters.Add(new BibleChapter()
                {
                    Chapter = $"Chapter {bookFile.track}",
                    Url     = bookFile.file.url
                });
            }



            if (bibleBooks.Count > 0)
            {
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }

                File.WriteAllText(file, JsonConvert.SerializeObject(bibleBooks.Select(x => x.Value)));

                return(true);
            }

            return(false);
        }