private string GetUrls(string jsondata, IList <BaseItem> bis)
        {
            var fd = JsonConvert.DeserializeObject <JsonData_Fanbox_Post>(jsondata);

            if (null != fd.body && null != fd.body.items)
            {
                foreach (var po in fd.body.items)
                {
                    var pi = new FanboxItem()
                    {
                        PID           = po.id,
                        Fee           = po.feeRequired.ToString(),
                        Title         = GlobalMethord.RemoveLastDot(GlobalMethord.ReplacePath(po.title)),
                        CoverPic      = po.coverImageUrl,
                        CoverPicThumb = po.coverImageUrl,
                        IsLiked       = po.isLiked
                    };
                    GlobalData.VM_MA.PostTitle = pi.Title;
                    if (DateTime.TryParse(po.publishedDatetime, out DateTime dt))
                    {
                        pi.CreateDate = dt;
                    }
                    if (DateTime.TryParse(po.updatedDatetime, out dt))
                    {
                        pi.UpdateDate = dt;
                    }
                    if (GlobalMethord.OverPayment(int.Parse(pi.Fee)) || GlobalMethord.OverTime(pi.UpdateDate))
                    {
                        pi.Skip = true;
                    }

                    if (null != po.body)
                    {
                        switch (po.type)
                        {
                        case "file":
                        {
                            if (!string.IsNullOrEmpty(po.body.text))
                            {
                                pi.Comments.Add(po.body.text);
                                pi.Comments.Add(string.Empty);
                            }
                            foreach (var finfo in po.body.files)
                            {
                                pi.ContentUrls.Add(finfo.url);
                                var fn = $"{finfo.name}.{finfo.extension}";
                                pi.FileNames.Add(fn);
                                pi.Comments.Add($"<{GlobalLanguage.Text_FilePref} {fn} ({GetSize(finfo.size)})>");
                            }
                        }
                        break;

                        case "image":
                        {
                            if (!string.IsNullOrEmpty(po.body.text))
                            {
                                pi.Comments.Add(po.body.text);
                                pi.Comments.Add(string.Empty);
                            }
                            int index = 1;
                            foreach (var iinfo in po.body.images)
                            {
                                pi.MediaUrls.Add(iinfo.originalUrl);
                                var fn = $"{index++}.{iinfo.extension}";
                                pi.MediaNames.Add(fn);
                                pi.Comments.Add($"<{GlobalLanguage.Text_ImagePref} {fn} ({iinfo.width}x{iinfo.height}px)>");
                            }
                        }
                        break;

                        case "article":
                        {
                            int index_pic = 1;
                            foreach (var binfo in po.body.blocks)
                            {
                                switch (binfo.type)
                                {
                                case "p":
                                    pi.Comments.Add(binfo.text);
                                    break;

                                case "file":
                                    if (null != po.body.fileMap && po.body.fileMap.TryGetValue(binfo.fileId, out FileItem fitem))
                                    {
                                        pi.ContentUrls.Add(fitem.url);
                                        var fn = $"{fitem.name}.{fitem.extension}";
                                        pi.FileNames.Add(fn);
                                        pi.Comments.Add($"<{GlobalLanguage.Text_FilePref} {fn} ({GetSize(fitem.size)})>");
                                    }
                                    break;

                                case "image":
                                    if (null != po.body.imageMap && po.body.imageMap.TryGetValue(binfo.imageId, out ImageItem iitem))
                                    {
                                        pi.MediaUrls.Add(iitem.originalUrl);
                                        var fn = $"{index_pic++}.{iitem.extension}";
                                        pi.MediaNames.Add(fn);
                                        pi.Comments.Add($"<{GlobalLanguage.Text_ImagePref} {fn} ({iitem.width}x{iitem.height}px)>");
                                    }
                                    break;

                                case "embed":
                                    if (null != po.body.embedMap && po.body.embedMap.TryGetValue(binfo.embedId, out EmbedItem eitem))
                                    {
                                        pi.Comments.Add(string.Empty);
                                        if (eitem.serviceProvider == "twitter" && !string.IsNullOrEmpty(GlobalData.VM_MA.Artist.Twitter))
                                        {
                                            pi.Comments.Add($"<{GlobalLanguage.Text_LinkPref} {GlobalData.VM_MA.Artist.Twitter}/{eitem.contentId} >");
                                        }
                                        else if (eitem.serviceProvider == "fanbox")
                                        {
                                            pi.Comments.Add($"<{GlobalLanguage.Text_LinkPref} {GlobalData.VM_MA.Artist.PostUrl}/posts/{eitem.contentId.Split('/').Last()} >");
                                        }
                                        else
                                        {
                                            pi.Comments.Add($"<{GlobalLanguage.Text_LinkPref} {eitem.serviceProvider} ({eitem.contentId})>");
                                        }
                                        pi.Comments.Add(string.Empty);
                                    }
                                    break;
                                }
                            }
                        }
                        break;

                        case "text":
                        {
                            if (!string.IsNullOrEmpty(po.body.text))
                            {
                                pi.Comments.Add(po.body.text);
                            }
                        }
                        break;
                        }
                    }
                    bis.Add(pi);
                    GlobalData.VM_MA.PostCount++;
                }
                return(fd.body.nextUrl ?? null);
            }
            return(null);
        }
Exemple #2
0
        private bool?GetUrls(string pid, List <BaseItem> bis)
        {
            try
            {
                var jfp = JsonConvert.DeserializeObject <JsonData_Fantia_Post>(GetWebCode($"https://fantia.jp/api/v1/posts/{pid}"));
                if (null != jfp.post)
                {
                    FantiaItem fi = new FantiaItem();
                    if (DateTime.TryParse(jfp.post.posted_at, out DateTime dt))
                    {
                        fi.CreateDate = dt;
                    }
                    if (DateTime.TryParse(jfp.post.converted_at, out dt))
                    {
                        fi.UpdateDate = dt;
                    }

                    if (GlobalMethord.OverTime(fi.UpdateDate))
                    {
                        return(false);
                    }
                    fi.FID   = jfp.post.id.ToString();
                    fi.Title = GlobalMethord.RemoveAllDot(GlobalMethord.ReplacePath(jfp.post.title));
                    GlobalData.VM_MA.PostTitle = fi.Title;
                    if (!string.IsNullOrEmpty(jfp.post.comment))
                    {
                        fi.Comments.Add(jfp.post.comment);
                        fi.Comments.Add(string.Empty);
                    }
                    if (null != jfp.post.thumb)
                    {
                        fi.CoverPic      = jfp.post.thumb.original;
                        fi.CoverPicThumb = jfp.post.thumb.ogp;
                    }
                    if (DateTime.TryParse(jfp.post.deadline, out dt))
                    {
                        fi.DeadDate = dt.ToString("yyyy/MM/dd HH:mm:ss");
                    }
                    else
                    {
                        fi.DeadDate = "---";
                    }

                    foreach (var ct in jfp.post.post_contents)
                    {
                        var fee = 0;
                        if (null != ct.plan)
                        {
                            fee = ct.plan.price;
                        }
                        var stitle = $"${fee}_{GlobalMethord.RemoveAllDot(GlobalMethord.ReplacePath(ct.title))}";
                        fi.Comments.Add("------------------------------------------------------------------------------------------");
                        fi.Comments.Add(stitle);
                        fi.Comments.Add(string.Empty);
                        if (ct.visible_status == "visible")
                        {
                            if (ct.category != "blog" && !string.IsNullOrEmpty(ct.comment))
                            {
                                fi.Comments.Add(ct.comment);
                                fi.Comments.Add(string.Empty);
                            }
                            if (ct.category == "photo_gallery")
                            {
                                var imgs = ct.post_content_photos;
                                foreach (var img in imgs)
                                {
                                    var imgUrl = img.url.original;
                                    if (!string.IsNullOrEmpty(img.comment))
                                    {
                                        fi.Comments.Add(img.comment);
                                    }
                                    var ffn = imgUrl.Substring(0, imgUrl.IndexOf("?Key"));
                                    var ext = ffn.Substring(ffn.LastIndexOf('.'));
                                    var fn  = $"{img.id}{ext}";
                                    fi.Comments.Add($"<{GlobalLanguage.Text_ImagePref} {fn}>");
                                    fi.FileNames.Add(fn);
                                    fi.ContentUrls.Add(imgUrl);
                                    fi.Fees.Add($"{fee}");
                                    fi.PTitles.Add(stitle);
                                }
                            }
                            else if (ct.category == "file")
                            {
                                fi.Comments.Add($"<{GlobalLanguage.Text_FilePref} {ct.filename}>");
                                fi.FileNames.Add(ct.filename);
                                fi.ContentUrls.Add($"https://fantia.jp{ct.download_uri}");
                                fi.Fees.Add($"{fee}");
                                fi.PTitles.Add(stitle);
                            }
                            else if (ct.category == "blog")
                            {
                                try
                                {
                                    JObject dd = JsonConvert.DeserializeObject(ct.comment) as JObject;
                                    JArray  ja = JArray.Parse(dd["ops"].ToString());

                                    foreach (var js in ja)
                                    {
                                        var     ss   = js.SelectToken("insert");
                                        dynamic stem = ss;
                                        if (ss.Type == JTokenType.String)
                                        {
                                            fi.Comments.Add(stem.Value.Replace("\\n", Environment.NewLine));
                                        }
                                        else if (ss.Type == JTokenType.Object)
                                        {
                                            string imgUrl = stem.fantiaImage.url;
                                            var    ffn    = imgUrl.Substring(0, imgUrl.IndexOf("?Key"));
                                            var    ext    = ffn.Substring(ffn.LastIndexOf('.'));
                                            var    fn     = $"{stem.fantiaImage.id}{ext}";
                                            fi.Comments.Add($"<{GlobalLanguage.Text_ImagePref} {fn}>");
                                            fi.FileNames.Add(fn);
                                            fi.ContentUrls.Add($"https://fantia.jp{stem.fantiaImage.original_url}");
                                            fi.Fees.Add($"{fee}");
                                            fi.PTitles.Add(stitle);
                                        }
                                        else
                                        {
                                            throw new Exception("Blog type unknown: " + ss.Type.ToString());
                                        }
                                    }
                                }
                                catch
                                {
                                    throw;
                                }
                            }
                        }
                    }
                    bis.Add(fi);
                    GlobalData.VM_MA.PostCount++;
                    GlobalData.VM_DL.AddFantiaCommand.Execute(fi);
                    do
                    {
                        System.Threading.Thread.Sleep(1000);
                    } while (GlobalData.VM_DL.WaitDownloading);

                    return(true);
                }
                return(null);
            }
            catch
            {
                throw;
            }
        }
Exemple #3
0
        private void GetUrls_Loop(int pid, List <BaseItem> bis)
        {
            try
            {
                var jfp = JsonConvert.DeserializeObject <JsonData_Fantia_Post>(GetWebCode($"https://fantia.jp/api/v1/posts/{pid}"));
                if (null != jfp.post)
                {
                    FantiaItem fi = new FantiaItem()
                    {
                        FID   = jfp.post.id.ToString(),
                        Title = GlobalMethord.RemoveAllDot(GlobalMethord.ReplacePath(jfp.post.title)),
                    };
                    GlobalData.VM_MA.PostTitle = fi.Title;
                    if (DateTime.TryParse(jfp.post.posted_at, out DateTime dt))
                    {
                        fi.CreateDate = dt;
                    }
                    if (DateTime.TryParse(jfp.post.converted_at, out dt))
                    {
                        fi.UpdateDate = dt;
                    }

                    if (!string.IsNullOrEmpty(jfp.post.comment))
                    {
                        fi.Comments.Add(jfp.post.comment);
                        fi.Comments.Add(string.Empty);
                    }
                    if (null != jfp.post.thumb)
                    {
                        fi.CoverPic      = jfp.post.thumb.original;
                        fi.CoverPicThumb = jfp.post.thumb.ogp;
                    }
                    if (DateTime.TryParse(jfp.post.deadline, out dt))
                    {
                        fi.DeadDate = dt.ToString("yyyy/MM/dd HH:mm:ss");
                    }
                    else
                    {
                        fi.DeadDate = "---";
                    }

                    var contents = jfp.post.post_contents;
                    foreach (var ct in contents)
                    {
                        var fee = 0;
                        if (null != ct.plan)
                        {
                            fee = ct.plan.price;
                        }
                        var stitle = $"${fee}_{GlobalMethord.RemoveAllDot(GlobalMethord.ReplacePath(ct.title))}";
                        fi.Comments.Add("------------------------------------------------------------------------------------------");
                        fi.Comments.Add(stitle);
                        fi.Comments.Add(string.Empty);
                        if (ct.visible_status == "visible")
                        {
                            if (!string.IsNullOrEmpty(ct.comment))
                            {
                                fi.Comments.Add(ct.comment);
                                fi.Comments.Add(string.Empty);
                            }
                            if (ct.category == "photo_gallery")
                            {
                                var imgs = ct.post_content_photos;
                                foreach (var img in imgs)
                                {
                                    var imgUrl = img.url.original;

                                    if (!string.IsNullOrEmpty(img.comment))
                                    {
                                        fi.Comments.Add(img.comment);
                                    }
                                    var ffn = imgUrl.Substring(0, imgUrl.IndexOf("?Key"));
                                    var ext = ffn.Substring(ffn.LastIndexOf('.'));
                                    var fn  = $"{img.id}{ext}";
                                    fi.Comments.Add($"<{GlobalLanguage.Text_ImagePref} {fn}>");
                                    fi.FileNames.Add(fn);
                                    fi.ContentUrls.Add(imgUrl);
                                    fi.Fees.Add($"{fee}");
                                    fi.PTitles.Add(stitle);
                                }
                            }
                            else if (ct.category == "file")
                            {
                                fi.Comments.Add($"<{GlobalLanguage.Text_FilePref} {ct.filename}>");
                                fi.FileNames.Add(ct.filename);
                                fi.ContentUrls.Add($"https://fantia.jp{ct.download_uri}");
                                fi.Fees.Add($"{fee}");
                                fi.PTitles.Add(stitle);
                            }
                        }
                    }
                    bis.Add(fi);
                    GlobalData.VM_MA.PostCount++;
                    if (null != jfp.post.links && null != jfp.post.links.previous)
                    {
                        if (!DateTime.TryParse(jfp.post.links.previous.converted_at, out DateTime dtp))
                        {
                            if (!DateTime.TryParse(jfp.post.links.previous.posted_at, out dtp))
                            {
                                GetUrls_Loop(jfp.post.links.previous.id, bis);
                                return;
                            }
                        }
                        if (!GlobalMethord.OverTime(dtp))
                        {
                            GetUrls_Loop(jfp.post.links.previous.id, bis);
                        }
                    }
                }
            }
            catch
            {
                throw;
            }
        }
Exemple #4
0
        public async override Task<ResultMessage> GetPostIDs(string uid)
        {
            try
            {
                string ss = ChangeUnicode(await GetAPI(string.Format(_postUrl, uid)));
                List<BaseItem> pis = new List<BaseItem>();
                while (true)
                {
                    var jpp = JsonConvert.DeserializeObject<JsonData_Patreon_Post>(ss);
                    if (null != jpp.data && null != jpp.included && null != jpp.meta)
                    {
                        var incll = jpp.included.ToList();
                        for (int i = 0; i < jpp.data.Length; i++)
                        {
                            if (DateTime.TryParse(jpp.data[i].attributes.published_at, out DateTime dt))
                            {
                                if (GlobalMethord.OverTime(dt))
                                {
                                    return ResultHelper.NoError(pis);
                                }
                            }

                            PatreonItem pi = new PatreonItem()
                            {
                                CreateDate = dt,
                                UpdateDate = dt,
                                PID = jpp.data[i].id,
                                Title = GlobalMethord.RemoveLastDot(GlobalMethord.ReplacePath(jpp.data[i].attributes.title)),
                                IsLiked = jpp.data[i].attributes.current_user_has_liked,
                                PLink = jpp.data[i].attributes.url
                            };
                            GlobalData.VM_MA.PostTitle = pi.Title;
                            if (!string.IsNullOrEmpty(jpp.data[i].attributes.content))
                            {
                                pi.Comments.Add(await GetWebContent(_htmlImg.Replace(jpp.data[i].attributes.content, "")));
                            }
                            else if (!string.IsNullOrEmpty(jpp.data[i].attributes.content_teaser_text))
                            {
                                pi.Comments.Add(jpp.data[i].attributes.content_teaser_text);
                            }
                            if (jpp.data[i].attributes.current_user_can_view)
                            {
                                if (null != jpp.data[i].attributes.image)
                                {
                                    pi.CoverPicThumb = jpp.data[i].attributes.image.thumb_url;
                                }
                                if (null != jpp.data[i].attributes.embed)
                                {
                                    pi.Comments.Add($"<{GlobalLanguage.Text_LinkPref} {jpp.data[i].attributes.embed.url} >");
                                }

                                if (null != jpp.data[i].relationships.media)
                                {
                                    for (int j = 0; j < jpp.data[i].relationships.media.data.Length; j++)
                                    {
                                        var inclu = incll.Find(x => x.id == jpp.data[i].relationships.media.data[j].id);
                                        if (string.IsNullOrEmpty(inclu.attributes.file_name))
                                        {
                                            inclu.attributes.file_name = "default.";
                                            if (!string.IsNullOrEmpty(inclu.attributes.mimetype))
                                            {
                                                var tep = inclu.attributes.mimetype.Split('/');
                                                if (tep.Length == 2)
                                                {
                                                    inclu.attributes.file_name += tep[1];
                                                }
                                                else
                                                {
                                                    inclu.attributes.file_name += inclu.attributes.mimetype;
                                                }
                                            }
                                            else
                                                inclu.attributes.file_name += "png";
                                        }
                                        else if (inclu.attributes.file_name.StartsWith("https://"))
                                        {
                                            continue;
                                        }
                                        pi.ContentUrls.Add(inclu.attributes.image_urls.original);
                                        pi.FileNames.Add(inclu.attributes.file_name);
                                        pi.Comments.Add($"<{GlobalLanguage.Text_FilePref} {inclu.attributes.file_name}>");
                                    }
                                }
                            }
                            pis.Add(pi);
                            GlobalData.VM_MA.PostCount++;
                        }
                        if (null != jpp.meta.pagination.cursors)
                        {
                            ss = ChangeUnicode(await GetAPI(string.Format(_nextUrl, uid, jpp.meta.pagination.cursors.next)));
                            continue;
                        }
                        return ResultHelper.NoError(pis);
                    }
                    return ResultHelper.IOError();
                }
            }
            catch (Exception ex)
            {
                GlobalMethord.ErrorLog(ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine + "-----------------------------------------------");
                return ResultHelper.UnKnownError();
            }
        }