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); }
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); }
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); } }
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); } }
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); }
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); } }
/// <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); }
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); }
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); }
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); }
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(); } } }
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(); } } }