Beispiel #1
0
        private async Task <MangadexChapter> GetChapterId(Chapter chapter, MangadexSeries mangadexSeries)
        {
            var html = new HtmlWeb {
                UserAgent = "NaniWeb/1.0"
            };
            var mangadexId = 0;

            for (var i = 0; i < 3; i++)
            {
                int.TryParse((await html.LoadFromWebAsync($"{MangadexSeriesPage}/{mangadexSeries.MangadexId}")).DocumentNode.Descendants("div")
                             .Where(element => element.Attributes.Contains("data-group") && element.GetAttributeValue("data-group", string.Empty) == _settingsKeeper.GetSetting("MangadexGroupId").Value)
                             .SingleOrDefault(element => element.GetAttributeValue("data-chapter", string.Empty) == chapter.ChapterNumber.ToString(CultureInfo.InvariantCulture))?
                             .GetAttributeValue("data-id", string.Empty), out var result);

                mangadexId = result;

                if (mangadexId > 0)
                {
                    break;
                }

                await Task.Delay(TimeSpan.FromSeconds(2));
            }

            return(new MangadexChapter {
                Chapter = chapter, ChapterId = chapter.Id, MangadexId = mangadexId
            });
        }
Beispiel #2
0
        public async Task <MangadexChapter> UploadChapter(Chapter chapter, MangadexSeries mangadexSeries, Stream stream)
        {
            if (!bool.Parse(_settingsKeeper.GetSetting("EnableMangadexAutoUpload").Value))
            {
                return new MangadexChapter
                       {
                           ChapterId  = chapter.Id,
                           MangadexId = 0,
                           Chapter    = chapter
                       }
            }
            ;

            var request       = new MultipartFormDataContent();
            var mangaId       = new StringContent(mangadexSeries.MangadexId.ToString());
            var chapterName   = new StringContent(chapter.Name);
            var volumeNumber  = new StringContent(chapter.Volume > 0 ? chapter.Volume.ToString() : string.Empty);
            var chapterNumber = new StringContent(chapter.ChapterNumber.ToString(CultureInfo.InvariantCulture));
            var groupId       = new StringContent(_settingsKeeper.GetSetting("MangadexGroupId").Value);
            var groupId2      = new StringContent(string.Empty);
            var groupId3      = new StringContent(string.Empty);
            var langId        = new StringContent(1.ToString());
            var fileStream    = new StreamContent(stream);

            mangaId.Headers.ContentType           = null;
            chapterName.Headers.ContentType       = null;
            volumeNumber.Headers.ContentType      = null;
            chapterNumber.Headers.ContentType     = null;
            groupId.Headers.ContentType           = null;
            groupId2.Headers.ContentType          = null;
            groupId3.Headers.ContentType          = null;
            langId.Headers.ContentType            = null;
            fileStream.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse("form-data; name=\"file\"; filename=\"file.zip\"");
            fileStream.Headers.ContentType        = MediaTypeHeaderValue.Parse("application/octet-stream");

            request.Add(mangaId, "\"manga_id\"");
            request.Add(chapterName, "\"chapter_name\"");
            request.Add(volumeNumber, "\"volume_number\"");
            request.Add(chapterNumber, "\"chapter_number\"");
            request.Add(groupId, "\"group_id\"");
            request.Add(groupId2, "\"group_id_2\"");
            request.Add(groupId3, "\"group_id_3\"");
            request.Add(langId, "\"lang_id\"");
            request.Add(fileStream);

            await Login();

            await _client.PostAsync(MangadexChapterUploadAddress, request);

            await Logout();

            return(await GetChapterId(chapter, mangadexSeries));
        }
Beispiel #3
0
        public async Task UpdateChapterInfo(Chapter chapter, MangadexSeries mangadexSeries, MangadexChapter mangadexChapter)
        {
            if (bool.Parse(_settingsKeeper.GetSetting("EnableMangadexAutoUpload").Value))
            {
                using (var stream = new MemoryStream())
                {
                    var request       = new MultipartFormDataContent();
                    var mangaId       = new StringContent(mangadexSeries.MangadexId.ToString());
                    var chapterName   = new StringContent(chapter.Name);
                    var volumeNumber  = new StringContent(chapter.Volume > 0 ? chapter.Volume.ToString() : string.Empty);
                    var chapterNumber = new StringContent(chapter.ChapterNumber.ToString(CultureInfo.InvariantCulture));
                    var groupId       = new StringContent(_settingsKeeper.GetSetting("MangadexGroupId").Value);
                    var groupId2      = new StringContent(0.ToString());
                    var groupId3      = new StringContent(0.ToString());
                    var langId        = new StringContent(1.ToString());
                    var oldFile       = new StringContent(string.Empty);
                    var fileStream    = new StreamContent(stream);

                    mangaId.Headers.ContentType           = null;
                    chapterName.Headers.ContentType       = null;
                    volumeNumber.Headers.ContentType      = null;
                    chapterNumber.Headers.ContentType     = null;
                    groupId.Headers.ContentType           = null;
                    groupId2.Headers.ContentType          = null;
                    groupId3.Headers.ContentType          = null;
                    langId.Headers.ContentType            = null;
                    oldFile.Headers.ContentType           = null;
                    fileStream.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse("form-data; name=\"file\"; filename=\"\"");
                    fileStream.Headers.ContentType        = MediaTypeHeaderValue.Parse("application/octet-stream");

                    request.Add(mangaId, "\"manga_id\"");
                    request.Add(chapterName, "\"chapter_name\"");
                    request.Add(volumeNumber, "\"volume_number\"");
                    request.Add(chapterNumber, "\"chapter_number\"");
                    request.Add(groupId, "\"group_id\"");
                    request.Add(groupId2, "\"group_id_2\"");
                    request.Add(groupId3, "\"group_id_3\"");
                    request.Add(langId, "\"lang_id\"");
                    request.Add(oldFile, "\"old_file\"");
                    request.Add(fileStream);

                    await Login();

                    await _client.PostAsync($"{MangadexChapterEditAddress}&id={mangadexChapter.MangadexId}", request);
                    await Logout();
                }
            }
        }