Git Product home page Git Product logo

keqingniuza's Introduction

logo

刻记牛杂店 最终版

本项目已停止维护,最后发布的最终版是一个独立的、没有后续更新的版本。

仍可在关于界面更新图片和卡池信息,相关信息由 寻空 提供,但不能保证服务的稳定。

功能介绍

  • 祈愿记录加载及分析
  • 每日/每周任务提醒
  • 自动演奏风物之诗琴

使用教程

阅读使用手册

相关开源项目

image-20211014080448738

keqingniuza's People

Contributors

scighost avatar tremblingmoenew 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

keqingniuza's Issues

添加实时便笺出现“无法找到与此错误代码关联的文本”

老板好!
我下载了最新的客户端,设置了管理员运行。
然后按照说明导入了证书,设置了cookie,能够正确显示出树脂和派遣任务了。
但是点击固定到开始菜单的时候就报错,也没有错误代码,Log里也没有任何记录。

系统是Win10 21H1 64位企业版
截图如下
QQ截图20211102221356

流浪大地乐团找不到窗口

我用的是外服,点刷新显示没有找到原神的窗口,另外统计里好像没有新手池,尝试导入excel也看不到

一些建议

代码层面:
像下面这种XAML,在DataTemplate里面

<TextBlock FontSize="12" Foreground="{Binding Brush}" Text="{Binding Name}" />
<TextBlock FontSize="12" Foreground="{Binding Brush}" Text="[" />
<TextBlock FontSize="12" Foreground="{Binding Brush}" Text="{Binding Num}" />
<TextBlock FontSize="12" Foreground="{Binding Brush}" Text="]" />

可以简化为

<TextBlock FontSize="12" Foreground="{Binding Brush}">
    <TextBlock.Text>
        <MulitBinding StringFormat="{}{0}[{1}]" FallBackValue="">
            <Binding Path="Name"/>
            <Binding Path="Num"/>
        </MulitBinding>
    </TextBlock.Text>
</TextBlock>

FallbackValue置空,这样在没有数据时不会显示"[]",控件的数量也从4个减少到了1个


这里用来显示角色图片的ImageBrush

<Border.Background>
    <ImageBrush ImageSource="{Binding Thumb, Converter={StaticResource ImageConverter}}" />
</Border.Background>

最好加上

<Border.Background>
    <ImageBrush 
        ImageSource="{Binding Thumb, Converter={StaticResource ImageConverter}}" 
        RenderOptions.BitmapScalingMode="HighQuality"/>
</Border.Background>

尽管渲染速度会变慢,但是图片精细度会高很多,锯齿也能减少

外服路径切换错误

外服无法切换路径 (@"AppData\LocalLow\miHoYo\原神\output_log.txt" 至 @"AppData\LocalLow\miHoYo\Genshin Impact\output_log.txt")

未将对象引用设置到对象的实例

遇到这个问题,先运行启动器检查一下更新;
没有解决,再换一个目录重新下载一遍;
还是没解决,看一下 Log 下的日志,如果有下面这一句:
位置 D:\a\KeqingNiuza\KeqingNiuza\src\KeqingNiuza\ViewModel\WishSummaryViewModel.cs:行号 26

别问了,我是真的没办法。
好几个人找到我,发了抽卡记录,同样的版本,同样的文件,就是不能复现,我能怎么办,我也很绝望啊。

关于规范祈愿记录导出格式的建议

原神2.3版本的新卡池「角色活动祈愿-2」的 gacha_type=400 ,考虑到以后可能会出更多的卡池,我认为可以制定一个各软件通用的祈愿记录导出格式的规范,方便各个软件间的数据互通。也包含了我的一点私货

通用格式需要考虑兼容性和拓展性,现有软件中用户基数最大的 genshin-wish-export 使用了Excel文件作为导出格式,所以我认为把Excel文件作为通用格式的基础是最合理的。刻记牛杂店 在此基础上新增了一列 祈愿 Id ,保存了这一重要的字段。

在兼容上述格式的前提下考虑拓展性,可以把共享保底的数据放在同一个表中,新增一列 祈愿类型 ,既不丢失原始数据,也能直观展示抽卡记录和保底情况。同时新增一个 原始数据 表,方便软件的导入。

具体规范如下(同一表中的数据以 Id 升序排列):

Excel表名及内容
如果有新的卡池种类,就新增祈愿表

表名 内容
统计分析 尽情发挥
角色活动祈愿 301, 400
武器活动祈愿 302
常驻祈愿 200
新手祈愿 100
原始数据 全部数据

祈愿表结构
共享保底的池子根据祈愿类型区分

时间 名称 类别 星级 总次数 保底内 祈愿 Id 祈愿类型
2021-02-17 18:45:09 以理服人 武器 3 233 77 1613556360008291100 301

原始数据表结构
以官方json结构为标准,现有字段按字母顺序排列

count gacha_type id item_id item_type lang name rank_type time uid
1 301 1613556360008291100 武器 zh-cn 以理服人 3 2021-02-17 18:45:09 123456789

以我自己的祈愿记录为例子:原神祈愿记录_123456789.xlsx

以上仅为提出想法时的草案,更详细更规范的内容看下一条

未将对象引用设置到对象的实例

问题在 2.2.0.1 版本依旧存在

Log输出如下

[Warning] [21-11-11 23:27:09.089 | KeqingNiuza 2.2.0.1 | 773B25FDFA4AC3D615F79DFBDCB2850B] [ChangeViewContent]
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 KeqingNiuza.View.WishSummaryView..ctor() 位置 D:\a\KeqingNiuza\KeqingNiuza\src\KeqingNiuza\View\WishSummaryView.xaml.cs:行号 31
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   在 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   在 System.Activator.CreateInstance(Type type, Boolean nonPublic)
   在 System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
   在 System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   在 System.Reflection.Assembly.CreateInstance(String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   在 KeqingNiuza.ViewModel.MainWindowViewModel.ChangeViewContent(String className) 位置 D:\a\KeqingNiuza\KeqingNiuza\src\KeqingNiuza\ViewModel\MainWindowViewModel.cs:行号 514

[Warning] [21-11-11 23:27:39.997 | KeqingNiuza 2.2.0.1 | 773B25FDFA4AC3D615F79DFBDCB2850B] [ChangeViewContent]
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 KeqingNiuza.View.WishSummaryView..ctor() 位置 D:\a\KeqingNiuza\KeqingNiuza\src\KeqingNiuza\View\WishSummaryView.xaml.cs:行号 31
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   在 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   在 System.Activator.CreateInstance(Type type, Boolean nonPublic)
   在 System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
   在 System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   在 System.Reflection.Assembly.CreateInstance(String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   在 KeqingNiuza.ViewModel.MainWindowViewModel.ChangeViewContent(String className) 位置 D:\a\KeqingNiuza\KeqingNiuza\src\KeqingNiuza\ViewModel\MainWindowViewModel.cs:行号 514


首次加载数据后出错

UserData里明明是有数据的但仍报错
TaergetInvocationException:调用的目标发生了异常
NullReferenceException:没有数据

希望增加米游社便笺数据查看功能

米游社我的角色里面加了个便笺,可以随时查看树脂恢复,每日任务,探索派遣的状态,比自己设定准多了。
自己抓了下包,应该能用米游社签到的cookie直接请求。
下面是我自己抓的示例

GET /game_record/app/genshin/api/dailyNote?role_id=100000000&server=cn_gf01 HTTP/1.1
Host: api-takumi.mihoyo.com
Connection: close
DS: 1xxxxxxxxx,1xxxxx,cxxxxxxxxxxxxxxxxxxxxxxxxxx #这行看不懂
x-rpc-app_version: 2.13.1
x-rpc-client_type: 5
Cookie:account_id=200000000;  cookie_token= ;ltoken= 


#末尾要留两换行不然没有respond……不知道为什么

可否考虑增加每个池子抽了多少抽出了啥的统计

result

类似这样。

脚本跑出来,发现想起了好些事情,虽然未必是多美好的回忆(

如果真的要加这个功能,最后一列可能需要处理一下,不然氪佬的结果大概会很长。

你写了个很好用的东西,非常感谢。

群晖使用webdav还原数据提示 登录失败:Method Not Allowed(405)

在家里的群晖NAS上启动了一个WebDav服务器,在内网是能用的。但是在外网换了一台电脑后,登录时无法使用,弹出登录失败:Method Not Allowed(405)提示。

可以确认NAS的端口都是开启的,防火墙,端口转发均已正确配置,使用windows资源管理器自带的添加网络位置可以正常连接webdav服务器,打开备份文件。

希望能给提醒功能自定义设置提前时间

目前是在倒计时结束/恢复满时提醒。
希望能够加入提前几个小时/天,离恢复满还差多少个这样的设置。
很多提醒需要有一定的提前量,比如深渊和体力,到点后就不太来得及了。
ps:我目前利用手动设置提前量的方式实现,但是会影响使用重置功能

希望加入自定义抽卡记录网页的选项

当前版本必须要pc端安装原神才能够使用,我认为可以增加一个选项让用户输入Url来获取相关的信息,不必要再安装一个原神(手机、PS、云游戏)会相对更实用一点。谢谢

可以支持外服吗?

用国服账号试用了一下,非常好用,比之前那种导出excel再上传到网站上显示方便多了。但我发现这个似乎并不支持外服账号,我登录外服账号后,执行 更换UID > 添加UID > 加载数据 之后,还是加载了刚才国服的数据,希望可以支持外服客户端。

细节说明:我是在一台电脑上同时安装了原神国服和国际服的客户端。安装第一个国服客户端时,安装路径默认是在C:\Program Files\Genshin Impact。如果想在同一台机器上同时安装国际服客户端,需要在安装国际服客户端时手动修改安装路径,比如改成C:\Program Files\Genshin Impact USA,否则会覆盖掉之前安装的国服客户端。不知道这款软件是本身就不支持外服账号还是说只会加载安装到默认路径C:\Program Files\Genshin Impact下的原神客户端?
还有一个路径相关的信息是,国服的数据文件在C:\Users\用户名\AppData\LocalLow\miHoYo\原神\output_log.txt,外服的在C:\Users\用户名\AppData\LocalLow\miHoYo\Genshin Impact\output_log.txt

建议新增一种任务提醒的计时类型,下次提醒时间为第 N 天的 N 点钟

在 2.0 版本以后,水晶矿和魔晶矿的刷新时间从 72 小时改为刷新后第三日服务器时间 0:00;
此外,像每周找 NPC 买圣遗物狗粮是固定每周四 04:00 刷新的;

因此希望有这么一个类型的提醒设定:比如挖矿,我按了重置按钮以后,时间会重置成第三天的 8:00;比如买狗粮,我按了重置后,时间重置为第七天后的 8:00。
这两种都是同一种类型的倒计时,即用户设定两个变量:
① 间隔天数 A,设定为 1 就是第二天,设定为 2 就是第三天;
② 几点提醒 B,比如 04:00 或者 08:00;
比如 A=2,B=04:00,就是第三天的 4 点提醒,且按了重置按钮以后也会把下次提醒时间重置为第三天 4 点

当然,这个需求目前靠修改计时里的“下次触发时间”也可以做到,但稍显麻烦

更新祈愿记录时 visit too frequently

点击加载数据按钮,加载失败,并显示以下提示:
image

日志内容如下:

[Error] [21-11-25 13:55:35.425 | KeqingNiuza 2.2.0 | 1F04B272906BBB40EE5230FCD4DE2EF5] [UpdateWishData]
System.ArgumentException: visit too frequently
   在 KeqingNiuza.Core.Wish.WishLogExporter.GetWishLogList(QueryParam param, Int64 lastId) 位置 D:\a\KeqingNiuza\KeqingNiuza\src\KeqingNiuza.Core\Wish\WishLogExporter.cs:行号 117
   在 KeqingNiuza.Core.Wish.WishLogExporter.<>c__DisplayClass7_0.<GetAllLog>b__0() 位置 D:\a\KeqingNiuza\KeqingNiuza\src\KeqingNiuza.Core\Wish\WishLogExporter.cs:行号 49
   在 System.Threading.Tasks.Task.Execute()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 KeqingNiuza.Core.Wish.WishLogExporter.<GetAllLog>d__7.MoveNext() 位置 D:\a\KeqingNiuza\KeqingNiuza\src\KeqingNiuza.Core\Wish\WishLogExporter.cs:行号 57
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 KeqingNiuza.ViewModel.MainWindowViewModel.<LoadDataFromUrl>d__41.MoveNext() 位置 D:\a\KeqingNiuza\KeqingNiuza\src\KeqingNiuza\ViewModel\MainWindowViewModel.cs:行号 398
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 KeqingNiuza.ViewModel.MainWindowViewModel.<UpdateWishData>d__38.MoveNext() 位置 D:\a\KeqingNiuza\KeqingNiuza\src\KeqingNiuza\ViewModel\MainWindowViewModel.cs:行号 298

坚果云数据

备份到坚果云的数据并不能自行选择加载哪一个吗,

有一个小小的请求,新增一个删除祈愿记录或者从指定祈愿开始计算祈愿数据的功能

首先感谢作者提供这个优秀的软件

我有个小小的请求,增加一个删除祈愿或者从指定时间开始计算祈愿数据的功能

理由:
由于缺失6个月之前的记录,导致我能获取到的第一个角色祈愿的记录不准确。因此希望能够增加一个删除部分祈愿或者从某次祈愿开始计算祈愿的功能,这样可以是统计数据及概率更加准确。例如,让用户选择或输入从某个祈愿ID开始计算祈愿数据。

再次感谢作者完成这个软件

记录遗漏

游戏内数据祈愿历史是全的。

删除已有用户数据后重新加载数据后正常

个人猜测是牛杂店更新时从官方API call到的数据不全,然后官方数据正常后阿晴只从最新的记录时间戳处做了更新,导致没有更新之前缺少的数据?

问题确认,删除数据样本

潜在的错误

WishEventList中的EndTime属性值不严谨
"2020-10-18T17:59:00+08:00"
应修改为
"2020-10-18T17:59:59+08:00"
在卡池最后一分钟内仍可抽卡
但此时抽到的卡的数据可能不会被处理

[
  {
    "WishType": 301,
    "Name": "杯装之诗",
    "Version": 1.0,
    "StartTime": "2020-09-28T06:00:00+08:00",
    "EndTime": "2020-10-18T17:59:00+08:00",
    "UpStar5": [
      "温迪"
    ],
    "UpStar4": [
      "芭芭拉",
      "菲谢尔",
      "香菱"
    ]
  }
]

HTTP 401

image
https://dav.jianguoyun.com/dav/
这个服务器地址不对嘛
才注册的账号
密码不会不对吧
用户名一栏填了用户名和邮箱,两个都401
还是云备份已经无了

定时提醒功能建议加入恢复速度

现在1个"恢复间隔"回复1个,对于洞天宝钱这种回复速度是xx/小时的需要计算

建议添加一个恢复速度选项(默认为1),洞天宝钱这种情况可以修改倍率

请问,可否自行添加曲目?

之前玩模拟钢琴类游戏收集了不少的MIDI,尝试自行添加曲目到KeqingNiuza\bin\resource\midi里,但是没有成功。可否增加自行添加曲目的功能??

官方数据库异常导致读取以后的数据产生错误,希望增加删除功能

10月2日晚胡桃池子开放以后,官方祈愿历史数据异常,在此期间同步祈愿数据的小伙伴的数据无法进行删除,等明日官方数据库恢复以后再同步可能会存在相同数据,希望增加现有数据的删除功能。当然,如果明日数据恢复以后再同步不产生问题,请把这个issue关闭。

忽略第一个五星希望只不显示抽数而不直接隐藏该五星

在我看来“忽略第一个 5 星”是因为历史数据没有保存的情况下为了统计抽数的准确性没办法的操作。
目前选择“忽略第一个 5 星”之后会直接在主界面的 5 星记录里隐藏了第一个五星,然而我感觉还是希望能一眼就看到所有抽到的五星,知道自己之前抽出过啥。所以希望“隐藏第一个 5 星”之后记录里的第一个五星还是会显示在主界面,只是不显示抽数或者抽数用特定字符代替。

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.