Giter Site home page Giter Site logo

pixeval's Introduction

logo

Pixeval

基于.NET 8 和 WinUI 3 的强大、快速、漂亮的Pixiv第三方桌面程序

🌏: 简体中文EnglishРусский


基于WinUI3的Pixeval已经正在开发中,而作为旧的WPF版本除严重问题以外不再进行大量维护,请适时切换到新版Pixeval。

仅支持 Windows 10(版本 1809 - 内部版本 17763)及更高版本。 可以通过以下步骤查看。右键点击“开始”按钮,选择然后选择系统;或者在“设置”中,依次选择“系统”>“系统信息”,此时页面中的Windows规格下可以看到相关信息。

更多详细信息请前往 项目主页 查看

WinUI3版本提供了更好的UI,更好的项目结构以及更好的开发体验,如果你想要了解目前的开发进度,可以通过以下方法来下载并编译该项目:

环境要求

  1. 拥有git环境
  2. 安装Visual Studio 2022(Roslyn 4.x要求必须是VS17.x,即VS2022)。 如果已安装请确认是VS2022的最新版本,因为负载里.NET SDK的版本和VS的版本有关,低版本可能不包含.NET8 SDK。
  3. 工具-获取工具与功能工作负载中选择 .NET 桌面开发,并在安装对话框的“安装详细信息”窗格中,选择位于列表底部的“Windows 应用 SDK C# 模板”。(可以参考安装适用于 Windows 应用 SDK 的工具

运行项目

  1. 用Git克隆本项目
  2. 如果 Pixeval 不是启动项目,请将其设置为启动项目
  3. 构建并运行
  • 如果失败可以尝试重新生成解决方案或者重启Visual Studio 2022

参与开发的要求

  1. 对Windows XAML Framework的基本了解,要了解更多相关信息请看 XAML概述
  2. 对C#和.NET开发的一定了解以及开发经验
  3. 具有不依赖文档阅读代码的能力

项目版本控制

本项目采用一个简单的Git分支模型:当您在进行开发的时候,请基于main创建新的分支,新的分支格式必须遵循{user}/{qualifier}/{desc},其中{user}是您的用户名。

代码内容 qualifier desc
漏洞修复 fix 漏洞的简要叙述
新功能 feature 新特性的简要叙述
重构或者代码质量提升 refactor 重构部分的简要叙述

如果您的贡献包含不止一种上面提到的类型,则应当遵循和您的贡献最为相关的一项,并在commit信息中提及其他类型上的贡献

在开发完成后,请发布 Pull Request 请求合并到main分支

项目结构

  1. Pixeval 项目包含了项目本身的逻辑及布局代码
  2. Pixeval.Controls 包含了一些耦合度较低的控件
  3. Pixeval.CoreApi 包含了项目需要的Pixiv API
  4. Pixeval.SourceGen 包含了设置相关的代码生成器
  5. Pixeval.Utilities 包含了通用的工具代码

反馈问题(按照推荐程度优先级排序)

  1. github 提交新的Issue
  2. [email protected] 发送邮件
  3. 加入QQ群815791942来面对面的和开发者反馈问题

鸣谢(排名不分先后)

Toolkit Contributors

Made with contrib.rocks.

支持作者

如果你感觉该项目帮助到了你,欢迎前往爱发电赞助我,你的支持是我维护项目的动力,谢谢!

JetBrains

本项目重度依赖于 JetBrains ReSharper,感谢JetBrains s.r.o为本项目提供 开源许可证,如果你同样对开发充满热情并且经常使用JetBrains s.r.o的产品,你也可以尝试通过JetBrains官方渠道 申请 开源许可证以供核心开发者使用

pixeval's People

Contributors

bropines avatar controlnet avatar dylech30th avatar lasmgratel avatar pinghigh avatar poker-sang avatar rigil-kentaurus avatar spacetimee avatar summpot avatar wulunshijian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pixeval's Issues

一大堆bug

看链接
https://youtu.be/l0CUkCMBXGU
问题包括:

  • 在窗口很小的情况下左侧导航栏无法完全显示(可以添加滚动条)
  • 在窗口很小的情况下点开图片详情无法退出(包括esc键都不行)
  • 日推很容易出现重复图片 之前测试甚至遇到了8张重复
  • 有的时候会莫名其妙出现白图(可能是上面那条的关系)
  • 点开之后列表会一直刷新
  • 点开一张图要点很多次
  • 用户新作那个icon和其他icon明显不一样
  • 小按钮需要tooltip来提示作用

建议:

  • 模糊效果会让图片朝着右下角移动 不知道是design还是咋地
  • 添加瀑布预览图效果(就是跟着图片的大小缩放的container而不是固定的)

在每日推荐中下载多图作品容易出现空文件夹

如题,在每日推荐中下载多图作品容易出现空文件夹,无论是直接点击下载还是添加到下载列表再按下载,等待较长时间、挂代理后依然如此。测试版本为1.3.0,1.0.2挂代理后似乎无此现象,应该能排除网络因素。
复制ID在客户端中搜索后下载出现该问题概率极大减小。

另:希望对无论是直接点击下载还是添加到下载列表再按下载都有个进度条或者进度汇总,以及明确的挂/不挂代理设置。

挂代理方式为SSR客户端的全局代理模式,应该是改IE(系统)的代理设置。

登录账号时出现的问题

错误日志:

System.NullReferenceException: Object reference not set to an instance of an object.
   at Pixeval.Persisting.Identity.Parse(String password, TokenResponse token) in C:\NotSystem\Coding\projects\visualstudio\csharp\Pixeval\Persisting\Identity.cs:line 50
   at Pixeval.Persisting.Authentication.Authenticate(String name, String pwd) in C:\NotSystem\Coding\projects\visualstudio\csharp\Pixeval\Persisting\Authentication.cs:line 42
   at Pixeval.SignIn.Login_OnClick(Object sender, RoutedEventArgs e) in C:\NotSystem\Coding\projects\visualstudio\csharp\Pixeval\SignIn.xaml.cs:line 57

登录界面输入账号密码后,出现Object reference not set to an instance of an object的红色字样。
希望能够解决,十分感谢。

1.4.0无法正常打开

测试环境:Win10 1809 LTSC x64
之前版本正常。
已经按照README.txt的指示成功安装了.NET Core 3.0 Runtime,版本为3.1.2 Desktop Runtime
症状为点击后无任何输出,甚至任务管理器中没有可见进程。

在系统的事件查看器->Windows日志->应用程序中发现如下有关报错条目:
Description: A .NET Core application failed.
Application: Pixeval.exe
Path: D:\Pixeval\Pixeval.exe
Message: Error:
An assembly specified in the application dependencies manifest (Pixeval.deps.json) was not found:
package: 'PropertyChanged.Fody', version: '3.2.1'
path: 'lib/netstandard1.0/PropertyChanged.dll'

事件日志给出的详细信息:
日志名称: Application
来源: .NET Runtime
日期: 2020/3/13 7:52:20
事件 ID: 1023
任务类别: 无
级别: 错误
关键字: 经典
用户: 暂缺
计算机: DESKTOP-2AQ4VC6
描述:
Description: A .NET Core application failed.
Application: Pixeval.exe
Path: D:\Pixeval\Pixeval.exe
Message: Error:
An assembly specified in the application dependencies manifest (Pixeval.deps.json) was not found:
package: 'PropertyChanged.Fody', version: '3.2.1'
path: 'lib/netstandard1.0/PropertyChanged.dll'

事件 Xml:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name=".NET Runtime" />
    <EventID Qualifiers="0">1023</EventID>
    <Level>2</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2020-03-12T23:52:20.112752400Z" />
    <EventRecordID>16833</EventRecordID>
    <Channel>Application</Channel>
    <Computer>DESKTOP-2AQ4VC6</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Description: A .NET Core application failed.
Application: Pixeval.exe
Path: D:\Pixeval\Pixeval.exe
Message: Error:
  An assembly specified in the application dependencies manifest (Pixeval.deps.json) was not found:
    package: 'PropertyChanged.Fody', version: '3.2.1'
    path: 'lib/netstandard1.0/PropertyChanged.dll'

</Data>
  </EventData>
</Event>

1

更新:压缩包中\Pixeval\Pixeval.exe运行失败,\Piveval\publish\Pixeval.exe运行正常,不过未在该正常版本的设置中发现“现在可以在设置里选择不使用直连了”,无论是搜索ID下载还是每日推荐右键下载也没发现进度指示……每日推荐中多图作品下载直接变成了根本就没下,但对同一作品搜索ID手动下载完全正常,不知何故。
TIM截图20200313081235

进不去。

.net装了,以前还能点进去用,现在打开能看到后台闪了一下,然后就没了。。。

1.5.0使用中遇到的两个问题。

测试环境Win10 x64 1809 LTSC
已经按照指示正确安装.NET Core Runtime。
开启了直连。

问题1:在每日推荐右键中下载某些图片时容易出现 Object Reference not set to an instance of an object提示,频率大概是每10个作品左右出现一次,如下:
1
点击重新下载后或事后单独搜索ID时可以正确下载,虽然该错误提示还是被保留。(测试样例图片ID为80013092)

问题2:每日推荐中点击一些作品时会发生本来应该弹出的浏览框闪退(鼠标不松开是可以留着这个框的,但是一松开就没了),但是单独搜索ID时正常。(测试样例图片ID为54744535)

未发现其他更加详细的可供调试或者问题分析的信息。

还是笔记本的显示问题

今天下载新文件夹后打开笔记本底部还是显示不出下载按钮标签等,而且不知道为啥右击图片也没有复制选项了 笔记本分辨率1366X768

下载时的一个小bug

现在的路径命名方式是地址\[作者名字]作品ID.jpg/png

但是当作者名字内含有\/:*?"<>|时会下载失败,这个该如何解决呢?

1.6.1更新陷入无限循环

测试环境同前,这次自动更新没有报错,但是更新进度条走完后版本没有变动。
观察文件如下。
TIM截图20200316070718

请问后期可否增加对Fanbox的支持?

大佬您好,请问后期可否增加对 Pixiv Fanbox 的支持,目前饭盒里的图片名称被进行了混淆加密,如果用批量存图工具存图,顺序会被打乱,不知道能否支持对饭盒图片的批量重命名下载,保持帖子名称及原有的图片顺序,谢谢~

1.5.0中遇到的问题

(1)组图无法翻页,只能查看第一张
(2)点击图片标签搜索的功能似乎没有了?日语苦手表示很依赖这个功能

有些图片颜色偏色

2)XLG)3T9SP}GLQ%@G2UL(N

在浏览的时候颜色偏色,直接复制的话也会偏色。但是下载下来就不会偏色。

有些图片会偏色,有些不会。

功能建议

  • 在图片浏览界面,如果可以Ctrl+鼠标滚轮缩放图片的话就舒服了
  • 在图片浏览界面,作者界面,最好能加个按钮可以直接用浏览器访问对应的网页
  • 在搜索界面,画师作品界面,最好可以直接在这个界面里面调整排序方式。比如说在搜索关键词的时候用收藏数排序,在画师作品界面里用时间排序
  • 画师首页到画师作品列表,如果可以用鼠标滚轮直接切换感觉会舒服很多
  • 在开启G-Sync的时候会掉帧
  • 好像在一个作品有多张图(图集)的时候,图集访问没有用,还是只能看到第一张
  • 单个作品页面,看不到评论,也发表不了评论
  • 图片列表加载速度慢
  • 最好可以提供自定义下载文件名,比如说画师id-作品id而不是默认的仅作品id
  • 最好可以提供直接从图片浏览界面直接复制图片本身的功能,这样发图片到QQ群就更容易了

界面内容显示不全,做一下适配???

浏览了一下Issues中的相似建议,确实加了几个滚动条(最开始我下载的版本连侧边栏的滚动条都没有。。。),但是不是考虑一下不使用强制分辨率而根据不同的设备自动适配呢,这样似乎更加有效(当然好像这样修改工作量比较大,但只加几个滚动条似乎有些治标不治本)。

另外,每次登录时Pixiv事务局都会发邮件来说您有新的登录活动,UWP似乎不存在这个问题,使用cookies或者用些缓存???

FeedBack

一些图片搜索界面的控制功能

某些 Vim 语法(陆续还会接着点菜)
直接在搜索界面键入/搜索关键字

二次搜索并过滤,类似 MC 中 JEI/NEI 双击搜索框高亮搜索物品的操作
其他图片亮度调小

左下角显示一个信息框展示正在输入的命令(或许可以把进度之类的东西一块放过来)

大神Pixeval不能运行

已经点击压缩包的链接下载并安装.NET Core v3.1,但是不能运行Pixeval是什么原因啊是NET Core必须要下载3.0版本的么好,还是下载完NET Core v3.1还要在文件夹里点击某个文件在运行Pixeval啊我是电脑白痴

1.6.0自动更新报错。

如图。下载的是Release里的那个,下载时间是2020-3-15 UTC+8 11:35
无标题
不过重启后倒是成功升级为1.6.1。

一些建议

  • 保留下载历史,并且可以从那里直接访问下载目录,或者可以删除已下载的文件;
  • sauceNAO的拖动区域增加到全屏;
  • 在单次访问图片的时候,点击下载按钮会让下载按钮变灰,且不可用,不然不知道自己下载了几个重复的图了;
  • 缩略图加载,浏览单张图片时可以先加载缩略图,后台下载原图,等到原图下载好了之后再换上清晰的原图。

功能建议III

  • 收藏和关注添加切换private功能
  • 图片组中下载图片时文件名增加序号,否则后下载的图片会自动覆盖先下载的图片

编译环境需要注意些什么吗

image
PixivHelper.cs 老是会引发异常

此异常最初是在此调用堆栈中引发的:
    Pixeval.Core.GalleryIterator.<MoveNextAsync>d__7.MoveNext() (位于 [GalleryIterator.cs] 中)(navigate-to-context:0)
	System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
	System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore<TResult>.GetResult(short)
	Pixeval.Core.GalleryIterator.<MoveNextAsync>d__7.System.Threading.Tasks.Sources.IValueTaskSource<bool>.GetResult(short)
	System.Runtime.CompilerServices.ValueTaskAwaiter<TResult>.GetResult()
    Pixeval.Core.PixivHelper.DoIterate<T>(Pixeval.Core.IPixivIterator<T>, System.Collections.Generic.ICollection<T>, bool) (位于 [PixivHelper.cs] 中)(navigate-to-context:5)
	System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    Pixeval.Core.PixivHelper.DoIterate<T>(Pixeval.Core.IPixivIterator<T>, System.Collections.Generic.ICollection<T>, bool) (位于 [PixivHelper.cs] 中)(navigate-to-context:7)

本地复现步骤:点击我的收藏.
虽然想一想release环境不会有啥问题~

反馈一个关于图片加载的问题

比如说我进入我的收藏,页面右边会加载出所有图片,但是我把页面向下滚动之后再滚动回去,之前加载的图片会需要再次加载,另外我在滚动页面的时候会出现粘滞感,感觉不是很流畅

一个问题

为什么软件图片加载很慢,打开了好久还没有加载。

复制功能不工作

  1. 点击作品后右键复制后 粘贴出来的还是之前复制的东西 偶尔能粘贴成功但找不出规律
    还出现了复制之后粘贴出之前复制失败的图片的情况
  2. 我的任务栏设置了自动隐藏 点击作品弹出的窗口后再下移鼠标 弹出的任务栏会被作品的窗口遮住无法点击
  3. 点击作品弹出的窗口的右下方下载分享那一排按钮有时会消失
    System: Win 10 1909

窗口分辨率超过显示器极限

在使用时该程序的默认分辨率以超出我电脑的分辨率(1920x1080),人工缩放会导致窗口显示不完整,希望作者改改代码,不在强制分辨率,采用自动兼容。

功能建议 II

  • 仓库大小太大了,我 Clone 了 131.66 MB
  • 窗口高度不能小于 830px 否则左侧工具栏会消失一部分,缩放不是按比例的
  • 搜索框太小了
  • 给每张图片都加个进度条
  • 登录页同步 pixiv 登录页的背景图
  • 登录页设置代理
  • 搜索建议
    搜索建议可以使用 https://www.pixiv.net/rpc/cps.php?keyword=xxx,要求 Cookie,返回一个 JSON
    记得搜索建议不要卡主窗口
  • 浏览历史记录

无法登陆的问题

System.NullReferenceException: Object reference not set to an instance of an object.
at Pixeval.SignIn.SignIn_OnClosing(Object sender, CancelEventArgs e) in C:\NotSystem\Coding\projects\visualstudio\csharp\Pixeval\SignIn.xaml.cs:line 36
at System.Threading.Tasks.Task.<>c.b__139_0(Object state)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.Run()
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run()
at Pixeval.App.Main()

在点击Pixeval打开后,输入了账号密码没有办法登陆,显示「An error occurred while sending the request」

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.