Beispiel #1
0
        public static async Task <Pixeez.Objects.UserBase> GetAjaxUser(this long id, Pixeez.Tokens tokens = null)
        {
            Pixeez.Objects.UserBase result = null;
            if (tokens == null)
            {
                tokens = await CommonHelper.ShowLogin();
            }
            if (tokens == null)
            {
                return(result);
            }

            var url       = GetAjaxUserUrl(id);
            var json_text = await Application.Current.GetRemoteJsonAsync(url);

            if (!string.IsNullOrEmpty(json_text))
            {
                try
                {
                    var user = JToken.Parse(json_text).ToObject <AjaxUserData>();
                    if (!user.Error)
                    {
                        var info = await tokens.GetUserInfoAsync(id.ToString());

                        if (info is Pixeez.Objects.UserInfo)
                        {
                            info.Cache();
                            info.user.Cache();
                            result = info.user;
                        }
                    }
                }
                catch (Exception ex) { ex.ERROR("GetAjaxUser"); }
            }
            return(result);
        }
Beispiel #2
0
        public static async Task <List <Pixeez.Objects.Work> > SearchIllustById(this long id, Pixeez.Tokens tokens = null, bool fuzzy = false)
        {
            List <Pixeez.Objects.Work> result = null;

            if (tokens == null)
            {
                tokens = await CommonHelper.ShowLogin();
            }
            if (tokens == null)
            {
                return(result);
            }

            var url       = GetAjaxIllustUrl(id);
            var json_text = await Application.Current.GetRemoteJsonAsync(url);

            if (!string.IsNullOrEmpty(json_text))
            {
                try
                {
                    var work = JToken.Parse(json_text).ToObject <AjaxIllustData>();
                    if (!work.Error)
                    {
                        var illust = work.Illust;

                        #region Get/Set user
                        var userbase = await illust.UserId.GetUser();// ?? await illust.UserId.GetAjaxUser();

                        Pixeez.Objects.NewUser new_user = userbase is Pixeez.Objects.NewUser ? userbase as Pixeez.Objects.NewUser : null;
                        Pixeez.Objects.User    user     = userbase is Pixeez.Objects.User ? user = userbase as Pixeez.Objects.User : null;
                        if (userbase != null)
                        {
                            var avatar = userbase.GetAvatarUrl();
                            if (new_user == null)
                            {
                                new_user = new Pixeez.Objects.NewUser()
                                {
                                    Id                 = userbase.Id,
                                    Account            = userbase.Account,
                                    Name               = userbase.Name,
                                    Email              = userbase.Email,
                                    is_followed        = userbase.is_followed,
                                    profile_image_urls = new Pixeez.Objects.ImageUrls()
                                    {
                                        Small = avatar, Medium = avatar
                                    },
                                };
                            }
                            if (user == null)
                            {
                                user = new Pixeez.Objects.User()
                                {
                                    Id               = userbase.Id,
                                    Account          = userbase.Account,
                                    Name             = userbase.Name,
                                    Email            = userbase.Email,
                                    is_followed      = userbase.is_followed,
                                    ProfileImageUrls = new Pixeez.Objects.ProfileImageUrls()
                                    {
                                        medium = avatar
                                    },
                                };
                            }
                        }
                        #endregion

                        #region Set Image Urls
                        var image_urls = new Pixeez.Objects.ImageUrls();
                        if (illust.ImageUrls is AjaxIllustImageUrls)
                        {
                            image_urls.Small        = illust.ImageUrls.Mini;
                            image_urls.Px128x128    = illust.ImageUrls.Thumbnail;
                            image_urls.SquareMedium = illust.ImageUrls.Thumbnail;
                            image_urls.Medium       = illust.ImageUrls.Medium;
                            image_urls.Px480mw      = illust.ImageUrls.Medium;
                            image_urls.Large        = illust.ImageUrls.Large;
                            image_urls.Original     = illust.ImageUrls.Original;
                        }
                        #endregion

                        #region Get MetaPages
                        var pages_url = GetAjaxMetaPageUrl(id);
                        List <Pixeez.Objects.Page> pages = illust.PageCount > 1 ? await GetMetaPages(pages_url, tokens) : null;

                        var meta_pages = pages is List <Pixeez.Objects.Page>?pages.Select(p => new Pixeez.Objects.MetaPages()
                        {
                            ImageUrls = p.ImageUrls
                        }) : null;

                        #endregion

                        #region Get Tags
                        var tags = illust.MoreTags.Select(t => new Pixeez.Objects.Tag()
                        {
                            Name = t.Original, TranslatedName = t.Translated
                        }).ToArray();
                        #endregion

                        #region Create IllustWork
                        var i = new Pixeez.Objects.IllustWork()
                        {
                            Type      = "illust",
                            Id        = id,
                            user      = userbase == null ? null : new_user,
                            Title     = illust.Title,
                            Caption   = illust.Caption,
                            Width     = illust.Width,
                            Height    = illust.Height,
                            ImageUrls = image_urls,
                            PageCount = illust.PageCount,
                            Metadata  = new Pixeez.Objects.Metadata()
                            {
                                Pages = pages
                            },
                            CreatedTime     = illust.CreateTime,
                            ReuploadedTime  = illust.UploadTime.ToString(),
                            SanityLevel     = illust.SanityLevel.ToString(),
                            total_bookmarks = illust.BookmarkCount,
                            total_view      = illust.ViewCount,
                            tags            = tags,
                            meta_pages      = meta_pages is IEnumerable <Pixeez.Objects.MetaPages>?meta_pages.ToArray() : null,
                                                  meta_single_page = new Pixeez.Objects.MetaSinglePage()
                            {
                                OriginalImageUrl = image_urls.Original
                            },
                        };
                        await i.RefreshIllustBookmarkState();

                        i.Cache();
                        #endregion

                        result = new List <Pixeez.Objects.Work>()
                        {
                            i
                        };
                    }
                    else
                    {
                        work.Message.ShowToast("GetIllustById");
                    }
                }
                catch (Exception ex) { ex.ERROR("SearchIllustById"); }
            }
            return(result);
        }
Beispiel #3
0
 public static async Task <Pixeez.Objects.Metadata> GetMetaData(this Pixeez.Objects.Work work, Pixeez.Tokens tokens = null)
 {
     if (work is Pixeez.Objects.Work)
     {
         return(await GetMetaData(GetAjaxMetaPageUrl(work.Id), tokens));
     }
     else
     {
         return(null);
     }
 }
Beispiel #4
0
        public static async Task <Pixeez.Objects.Metadata> GetMetaData(this string url, Pixeez.Tokens tokens = null)
        {
            var pages = await GetMetaPages(url, tokens);

            if (pages is List <Pixeez.Objects.Page> && pages.Count > 0)
            {
                return(new Pixeez.Objects.Metadata()
                {
                    Pages = pages
                });
            }
            else
            {
                return(null);
            }
        }
Beispiel #5
0
        public static async Task <List <Pixeez.Objects.MetaPages> > GetMetaPages(this Pixeez.Objects.Work work, Pixeez.Tokens tokens = null)
        {
            List <Pixeez.Objects.MetaPages> result = null;

            if (work is Pixeez.Objects.Work)
            {
                var pages_url = GetAjaxMetaPageUrl(work.Id);
                List <Pixeez.Objects.Page> pages = work.PageCount > 1 ? await GetMetaPages(pages_url, tokens) : null;

                result = pages is List <Pixeez.Objects.Page>?pages.Select(p => new Pixeez.Objects.MetaPages()
                {
                    ImageUrls = p.ImageUrls
                }).ToList() : null;
            }
            return(result);
        }
Beispiel #6
0
 public static async Task <List <Pixeez.Objects.Page> > GetMetaPages(this Pixeez.Objects.NormalWork work, Pixeez.Tokens tokens = null)
 {
     if (work is Pixeez.Objects.Work)
     {
         return(await GetMetaPages(GetAjaxMetaPageUrl(work.Id), tokens));
     }
     else
     {
         return(null);
     }
 }
Beispiel #7
0
        /// <summary>
        /// Will 404 when not login, so function failed :-(
        /// </summary>
        /// <param name="url"></param>
        /// <param name="tokens"></param>
        /// <returns></returns>
        public static async Task <List <Pixeez.Objects.Page> > GetMetaPages(this string url, Pixeez.Tokens tokens = null)
        {
            List <Pixeez.Objects.Page> result = null;

            var pages_json_text = await Application.Current.GetRemoteJsonAsync(url);

            if (!string.IsNullOrEmpty(pages_json_text))
            {
                var pages = JToken.Parse(pages_json_text).ToObject <AjaxMetaPages>();

                if (!pages.Error)
                {
                    if (pages.Pages.Count > 0)
                    {
                        result = new List <Pixeez.Objects.Page>();
                    }
                    foreach (var page in pages.Pages)
                    {
                        var p = new Pixeez.Objects.Page()
                        {
                            ImageUrls = new Pixeez.Objects.ImageUrls()
                            {
                                Px128x128    = page.ImageUrls.Thumbnail,
                                SquareMedium = page.ImageUrls.Thumbnail,
                                Small        = page.ImageUrls.Small,
                                Medium       = page.ImageUrls.Medium,
                                Px480mw      = page.ImageUrls.Medium,
                                Large        = page.ImageUrls.Large,
                                Original     = page.ImageUrls.Original,
                            }
                        };
                        result.Add(p);
                    }
                }
            }
            return(result);
        }
Beispiel #8
0
        public static async Task <Pixeez.Objects.UgoiraInfo> GetUgoiraMetaInfo(this long id, Pixeez.Tokens tokens = null)
        {
            Pixeez.Objects.UgoiraInfo result = null;
            try
            {
                if (tokens == null)
                {
                    tokens = await CommonHelper.ShowLogin();
                }
                var meta = await tokens.GetUgoiraMetadata(id);

                result = meta.Metadata;
                if (string.IsNullOrEmpty(result.Src) && !string.IsNullOrEmpty(result.Urls.Medium))
                {
                    result.Src = result.Urls.Medium;
                }
                if (string.IsNullOrEmpty(result.OriginalSrc) && !string.IsNullOrEmpty(result.Src))
                {
                    result.OriginalSrc = result.Src.Replace("600x600", "1920x1080");
                }
            }
            catch (Exception ex) { ex.ERROR($"GetUgoiraMetaInfo_{id}"); }
            return(result);
        }
Beispiel #9
0
        public static async Task <List <Pixeez.Objects.UserBase> > SearchUserById(this long id, Pixeez.Tokens tokens = null)
        {
            var result = new List <Pixeez.Objects.UserBase>();

            if (tokens == null)
            {
                tokens = await CommonHelper.ShowLogin();
            }
            if (tokens == null)
            {
                return(result);
            }

            var user = await GetAjaxUser(id, tokens);

            if (user is Pixeez.Objects.UserBase)
            {
                result.Add(user);
            }

            return(result);
        }
Beispiel #10
0
        public static async Task <Pixeez.Objects.UserBase> GetAjaxUserProfile(this long id, Pixeez.Tokens tokens = null)
        {
            Pixeez.Objects.UserBase result = null;
            if (tokens == null)
            {
                tokens = await CommonHelper.ShowLogin();
            }
            if (tokens == null)
            {
                return(result);
            }

            var url       = GetAjaxUserProfileUrl(id);
            var json_text = await Application.Current.GetRemoteJsonAsync(url);

            if (!string.IsNullOrEmpty(json_text))
            {
                try
                {
                    var user = JToken.Parse(json_text).ToObject <AjaxUserProfileData>();
                    if (!user.Error)
                    {
                        var profile = user.Profile;
                        if (profile is AjaxUserProfile)
                        {
                            var user_profile = new Pixeez.Objects.Profile();
                            user_profile.Contacts = new Pixeez.Objects.Contacts();
                            //user_profile.id

                            //result = profile.user;
                        }
                    }
                }
                catch (Exception ex) { ex.ERROR("GetAjaxUserProfile"); }
            }
            return(result);
        }
Beispiel #11
0
        public static async Task <Pixeez.Objects.UserBase> GetAjaxUserProfile(this string id, Pixeez.Tokens tokens = null)
        {
            long uid = 0;

            if (!string.IsNullOrEmpty(id) && long.TryParse(id, out uid))
            {
                return(await GetAjaxUserProfile(uid, tokens));
            }
            else
            {
                return(null);
            }
        }
        private async void ShowResultInline(Pixeez.Tokens tokens, string content, string filter = "", string next_url = "", bool append = false)
        {
            try
            {
                if (string.IsNullOrEmpty(content))
                {
                    return;
                }

                ResultItems.Wait();
                var setting = Application.Current.LoadSetting();
                if (!append)
                {
                    ResultItems.Clear(setting.BatchClearThumbnails);
                    id_user.Clear();
                    id_illust.Clear();
                }

                var no_filter     = string.IsNullOrEmpty(filter);
                var filter_string = no_filter ? string.Empty : $" ({filter.Replace("users入り", "+ Favs")})";
                ResultExpander.Header = $"Search Results{filter_string}, {content}";

                if (content.StartsWith("UserID:", StringComparison.CurrentCultureIgnoreCase))
                {
                    SearchFilter.Visibility = Visibility.Collapsed;

                    var     query   = Regex.Replace(content, @"^UserId: *?(\d+).*?$", "$1", RegexOptions.IgnoreCase).Trim();
                    var     id      = Convert.ToInt64(query);
                    dynamic related = setting.UsingAjaxAPI ? null : await tokens.GetUsersAsync(Convert.ToInt64(query));

                    if (related == null)
                    {
                        related = await id.SearchUserById(tokens);
                    }

                    if (related is List <Pixeez.Objects.UserBase> )
                    {
                        foreach (Pixeez.Objects.UserBase user in related)
                        {
                            if (id_user.Contains(user.Id))
                            {
                                continue;
                            }
                            id_user.Add(user.Id);
                            user.Cache();
                            user.AddTo(ResultItems.Items, next_url);
                            this.DoEvents();
                        }
                        this.DoEvents();
                    }
                }
                else if (content.StartsWith("IllustID:", StringComparison.CurrentCultureIgnoreCase))
                {
                    var     query   = Regex.Replace(content, @"^IllustID: *?(\d+).*?$", "$1", RegexOptions.IgnoreCase).Trim();
                    var     id      = Convert.ToInt64(query);
                    dynamic related = setting.UsingAjaxAPI ? null : await tokens.GetWorksAsync(id) ?? await tokens.GetIllustDetailAsync(id);

                    if (related == null)
                    {
                        related = await id.SearchIllustById(tokens);
                    }
                    next_url = string.Empty;

                    if (related is List <Pixeez.Objects.Work> )
                    {
                        foreach (Pixeez.Objects.Work illust in related)
                        {
                            if (id_illust.Contains(illust.Id))
                            {
                                continue;
                            }
                            id_illust.Add(illust.Id);
                            illust.Cache();
                            illust.AddTo(ResultItems.Items, next_url);
                            this.DoEvents();
                        }
                        this.DoEvents();
                    }
                }
                else if (content.StartsWith("User:"******"^User:(.*?)$", "$1", RegexOptions.IgnoreCase).Trim();
                    query = string.IsNullOrEmpty(filter) ? query : $"{query} {filter}";
                    var related = string.IsNullOrEmpty(next_url) ? await tokens.SearchUserAsync(query) :
                                  await tokens.AccessNewApiAsync <Pixeez.Objects.UsersSearchResult>(next_url);

                    next_url = related.next_url ?? string.Empty;

                    if (related is Pixeez.Objects.UsersSearchResult)
                    {
                        ResultExpander.Tag = next_url;
                        foreach (var user in related.Users)
                        {
                            if (id_user.Contains(user.User.Id))
                            {
                                continue;
                            }
                            user.User.Cache();
                            user.User.AddTo(ResultItems.Items, next_url);
                            id_user.Add(user.User.Id);
                            this.DoEvents();
                        }
                        this.DoEvents();
                    }
                }
                else if (content.StartsWith("Fuzzy:", StringComparison.CurrentCultureIgnoreCase))
                {
                    var query = Regex.Replace(content, @"^Fuzzy:(.*?)$", "$1", RegexOptions.IgnoreCase).Trim();
                    query = string.IsNullOrEmpty(filter) ? query : $"{query} {filter}";
                    var related = string.IsNullOrEmpty(next_url) ? await tokens.SearchIllustWorksAsync(query, "title_and_caption") :
                                  await tokens.AccessNewApiAsync <Pixeez.Objects.Illusts>(next_url);

                    if (related is Pixeez.Objects.Illusts)
                    {
                        ResultExpander.Tag = next_url;
                        foreach (var illust in related.illusts)
                        {
                            if (id_illust.Contains(illust.Id))
                            {
                                continue;
                            }
                            illust.Cache();
                            illust.AddTo(ResultItems.Items, next_url);
                            id_illust.Add(illust.Id);
                            this.DoEvents();
                        }
                        this.DoEvents();
                    }
                }
                else if (content.StartsWith("Tag:", StringComparison.CurrentCultureIgnoreCase))
                {
                    var query = Regex.Replace(content, @"^Tag:(.*?)$", "$1", RegexOptions.IgnoreCase).Trim();
                    query = string.IsNullOrEmpty(filter) ? query : $"{query} {filter}";
                    var related = string.IsNullOrEmpty(next_url) ? await tokens.SearchIllustWorksAsync(query, "exact_match_for_tags") :
                                  await tokens.AccessNewApiAsync <Pixeez.Objects.RecommendedRootobject>(next_url);

                    next_url = related.next_url ?? string.Empty;

                    if (related is Pixeez.Objects.Illusts && related.illusts is Array)
                    {
                        ResultExpander.Tag = next_url;
                        foreach (var illust in related.illusts)
                        {
                            if (id_illust.Contains(illust.Id))
                            {
                                continue;
                            }
                            illust.Cache();
                            illust.AddTo(ResultItems.Items, related.next_url);
                            id_illust.Add(illust.Id);
                            this.DoEvents();
                        }
                        this.DoEvents();
                    }
                }
                else if (content.StartsWith("Fuzzy Tag:", StringComparison.CurrentCultureIgnoreCase))
                {
                    var query = Regex.Replace(content, @"^Fuzzy Tag:(.*?)$", "$1", RegexOptions.IgnoreCase).Trim();
                    query = string.IsNullOrEmpty(filter) ? query : $"{query} {filter}";
                    var related = string.IsNullOrEmpty(next_url) ? await tokens.SearchIllustWorksAsync(query, "partial_match_for_tags") : await tokens.AccessNewApiAsync <Pixeez.Objects.RecommendedRootobject>(next_url);

                    next_url = related.next_url ?? string.Empty;

                    if (related is Pixeez.Objects.Illusts && related.illusts is Array)
                    {
                        ResultExpander.Tag = next_url;
                        foreach (var illust in related.illusts)
                        {
                            if (id_illust.Contains(illust.Id))
                            {
                                continue;
                            }
                            illust.Cache();
                            illust.AddTo(ResultItems.Items, related.next_url);
                            id_illust.Add(illust.Id);
                            this.DoEvents();
                        }
                        this.DoEvents();
                    }
                }
                else if (content.StartsWith("Caption:", StringComparison.CurrentCultureIgnoreCase))
                {
                    var query = Regex.Replace(content, @"^Caption:(.*?)$", "$1", RegexOptions.IgnoreCase).Trim();
                    query = string.IsNullOrEmpty(filter) ? query : $"{query} {filter}";
                    var related = string.IsNullOrEmpty(next_url) ? await tokens.SearchIllustWorksAsync(query, "title_and_caption") : await tokens.AccessNewApiAsync <Pixeez.Objects.RecommendedRootobject>(next_url);

                    next_url = related.next_url ?? string.Empty;

                    if (related is Pixeez.Objects.Illusts && related.illusts is Array)
                    {
                        ResultExpander.Tag = next_url;
                        foreach (var illust in related.illusts)
                        {
                            if (id_illust.Contains(illust.Id))
                            {
                                continue;
                            }
                            illust.Cache();
                            illust.AddTo(ResultItems.Items, related.next_url);
                            id_illust.Add(illust.Id);
                            this.DoEvents();
                        }
                        this.DoEvents();
                    }
                }
                ResultItems.UpdateTilesImage();

                if (ResultItems.Items.Count() == 1 && no_filter)
                {
                    ResultItems.SelectedIndex = 0;
                    Commands.Open.Execute(ResultItems);
                }
                if (ResultItems.Items.Count() <= 1 && no_filter)
                {
                    if (ResultItems.Items.Count() <= 0)
                    {
                        $"Searching \"{Contents}\" No Result".ShowToast("INFO");
                    }

                    if (ParentWindow != null)
                    {
                        this.DoEvents();
                        await Task.Delay(1);

                        ParentWindow.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                ResultItems.Fail();
                if (ex is NullReferenceException)
                {
                    $"Searching \"{Contents}\" No Result".ShowToast("WARNING", tag: "ShowResultInline");
                }
                else
                {
                    ex.Message.ShowToast("ERROR", tag: "ShowResultInline");
                }
            }
            finally
            {
                if (ParentWindow is ContentWindow)
                {
                    ResultItems.Ready();
                    (ParentWindow as MetroWindow).AdjustWindowPos();
                }
            }
        }
Beispiel #13
0
        private async void Login_Click(object sender, RoutedEventArgs e)
        {
            if (ParentWindow == null)
            {
                ParentWindow = Window.GetWindow(this) as PixivLoginDialog;
            }

            setting             = Application.Current.LoadSetting();
            Pixeez.Auth.TimeOut = setting.DownloadHttpTimeout;

            var  user         = edUser.Text.Trim();
            var  pass         = edPass.Password.Trim();
            var  proxy        = edProxy.Text.Trim();
            bool useproxy     = chkUseProxy.IsChecked == true ? true : false;
            bool useproxydown = chkUseProxyDown.IsChecked == true ? true : false;

            if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(pass))
            {
                try
                {
                    LoginWait.Show();
                    if (ParentWindow is PixivLoginDialog)
                    {
                        //ParentWindow.DialogResult = false;
                    }

                    btnLogin.IsEnabled        = false;
                    btnCancel.IsEnabled       = false;
                    edUser.IsEnabled          = false;
                    edPass.IsEnabled          = false;
                    edProxy.IsEnabled         = false;
                    chkUseProxy.IsEnabled     = false;
                    chkUseProxyDown.IsEnabled = false;

                    // Create Tokens
                    var proxyserver = proxy;
                    if (!useproxy)
                    {
                        proxyserver = string.Empty;
                    }
                    var accesstoken  = Application.Current.AccessToken();
                    var refreshtoken = Application.Current.RefreshToken();

                    //var deviceId = Application.Current.GetDeviceId();
                    tokens = Pixeez.Auth.AuthorizeWithAccessToken(accesstoken, proxy, setting.ProxyBypass, useproxy);
                    var result = await Pixeez.Auth.AuthorizeAsync(user, pass, refreshtoken, proxyserver, setting.ProxyBypass, useproxy);

                    if (!string.IsNullOrEmpty(result.Authorize.AccessToken))
                    {
                        accesstoken = result.Authorize.AccessToken;
                        tokens      = result.Tokens;

                        setting.AccessToken        = tokens.AccessToken;
                        setting.RefreshToken       = tokens.RefreshToken;
                        setting.ExpTime            = result.Key.KeyExpTime.ToLocalTime();
                        setting.ExpiresIn          = result.Authorize.ExpiresIn.Value;
                        setting.Update             = DateTime.Now.ToFileTime().FileTimeToSecond();
                        setting.UsingProxy         = useproxy;
                        setting.DownloadUsingProxy = useproxydown;
                        setting.Proxy = proxy;
                        await Task.Delay(1);

                        this.DoEvents();
                        setting.User   = user;
                        setting.Pass   = pass;
                        setting.MyInfo = result.Authorize.User;
                        setting.Save();
                    }

                    if (tokens is Pixeez.Tokens && !string.IsNullOrEmpty(tokens.AccessToken))
                    {
                        if (ParentWindow is PixivLoginDialog)
                        {
                            ParentWindow.AccessToken  = tokens.AccessToken;
                            ParentWindow.RefreshToken = tokens.RefreshToken;
                            ParentWindow.Tokens       = tokens;
                            ParentWindow.DialogResult = true;
                            CloseWindow();
                        }
                    }
                }
                catch (Exception ex)
                {
                    //await ex.Message.ShowMessageBoxAsync("ERROR");
                    ex.Message.ShowMessageBox("ERROR");
                }
                finally
                {
                    btnLogin.IsEnabled        = true;
                    btnCancel.IsEnabled       = true;
                    edUser.IsEnabled          = true;
                    edPass.IsEnabled          = true;
                    edProxy.IsEnabled         = true;
                    chkUseProxy.IsEnabled     = true;
                    chkUseProxyDown.IsEnabled = true;
                    LoginWait.Hide();
                }
            }
        }