本地记录软件 MarkAll 以及最近做了啥

前言

前文:想做个本地标记应用

啊,上面这篇文章居然是去年四月写的……简单来说,去年这个时候我想写个本地的标记软件,用于记录「读过的书」、「看过的影视」……诸如此类的东西。

与各类在线服务相比,我希望「无需观众也不必审查」。至于备份,将数据拖出来保存一下就行了。而与笔记、Excel 等记录方式相较,我希望数据的内容能够丰富点,数据的展示能更直观点 —— 甚至应该基于数据做点可视化以及激励机制,比如记录数据按时间、类别的折线图,「你今年已经玩过 3 部黄油,快来和我一起成为每年通关 100 部黄油的现充吧」这样的亲切激励提示。

除了这些想要做的,最重要的应当是使用者数据的冷启动。其一是应当提供一个途径,让使用者能够便利地从之前使用的服务迁移过来。其二就是数据的添加方式应该要尽量简洁点。当然,整个软件的操作都应该简洁点。如果操作太复杂,大家根本就没打开使用它的欲望。最后,数据也应该能够便利地导出 —— 甚至可以提供多种格式数据的导出。

这是前言。

与之前的对比

去年做了第一个版本,标记内容的数据仅支持纯文本。数据的添加与编辑使用的是「直接操作 JSON 数据」以及简单的「文本表单」。体验很差,我自己都没打开的欲望。

值得一提的是做了豆瓣数据的导入。

前阵子将这一块抽出来写了个包 hqweay/douban-getter

然后又写了个 hexo 的豆瓣数据展示插件:hqweay/hexo-douban-getter

博文:Hexo 插件 hexo-douban-getter —— 展示豆瓣标记数据

打算把这个玩具做成毕业设计,于是寒假重新改了下。最近将数据的增改操作做得稍微直观了点。但是使用起来始终偶有卡顿,可能是平台的限制以及我自己能力的不足……要是这点不能好好解决一下,这玩意实在没有啥做下去的必要……

与去年相比,我现在有了些新的想法。

数据组织方式

其一是之前数据的组织方式是模板(类别)、条目、标签这三种。模板就是「书籍」、「专辑」、「景点」……这类东西。

模板可以自定义,比如书籍,对于出版读物,模板的属性可能就有作者、出版日期、出版社……而对于网络读物,模板的属性可能就是作者、发表网站……

条目就是模板下的一个具体项。

标签则是组织条目的一个属性。标签可以用来组织所有的条目 —— 包括不同模板下的条目。比如有个「快乐」标签。我读了一本书可能赶到快乐,看了部电影也可能感到快乐……

这些是之前考虑的组织方式。现在则觉得要不要添加一个属性来组织模板。比如「文件夹」这类东西,用于归类某一类模板。比如上面提到的「出版读物」、「网络读物」都可以归类于「书籍」这一个文件夹下。

感觉没有必要。模板似乎不会多到需要再组织。

其次就是要不要做个模板之间的组合与继承?比如模板 A 可以继承模板 B 的属性,模板 C 可以作为模板 D 的一个属性……

感觉没必要,这样会很复杂诶……

模板的属性

之前模板的属性只有一项:文本。

我将属性扩展了一下,现在可以使用:

  • LIST_TEXT
  • LIST_IMAGE
  • LIST_URL
  • DATE
  • RATE
  • ENUM

第一,属性可以用文本、图片,网址、时间、评分、枚举。文本、图片和网址都用的 LIST、也即每个属性对应的这些数据都可以有一个或多个。

比如这里的封面只需要一张图,而截图可以有多张,它们都用的是 LIST_IMAGE

第二,除了这些数据,是不是也可以用文件、地理位置等类型的数据呢……

感觉地理位置有必要做一下,给定经纬度,在界面上显示地图 —— 这才能发挥软件(对比文本)的优势嘛……

第三就是这些用户在添加这些数据时的操作应该尽可能简单。

比如 LIST_IMAGE 数据的添加,我写了个本地拖动添加图片。

用户拖动图片至上传栏后,图片会拷贝至 MarkAll 的用户目录保存,然后将图片的索引保存至条目的元数据。

第四,还有模板本身的添加和编辑。

值得提一下的就是这里的 RATEENUM,相比文本和图片,都有一个额外的属性。RATE 是评分的最大值,ENUM 是枚举的范围。

数据的展示

数据的展示现在是卡片流,自我感觉稍微好看点。但是感觉应该再做个没有样式的纯数据列表展示……那样的话,同样的窗口下,显示的数据更多,可能会提高一点效率……

基于此,是不是可以做下主题?

TODO OR NOT

搜索

搜索还没做。感觉比较麻烦,还没考虑。但这个必须要做啊……

用户

就上面这些内容,答辩的时候不太好忽悠……考虑做个用户模块,丰富下内容 —— 当然还是单机。

现在有两个思路,一是要不要做成多用户?有必要吗?

二是可以根据用户来做一些激励。比如设置用户名为「小明」,到时候就可以提示「小明,你今天又标记了一部小黄片,太棒了!继续努力!」诸如此类的。

引导页

优先级靠后。

可视化等

这个一直没做是因为自己的数据结构一直在变动,毕竟我设计的时候考虑不到那么周全,经常写着写着才觉得「这个字段要是放这似乎能方便点」……

没关系,慢慢来……

分享

可以和可视化一起做,比如生成一张统计图表的图片,然后使用者可以在社交媒体分享这张图片……

其次,甚至可以生成静态网页……

备份

因为用的 lowDB,把 JSON 数据拖出来备份一下就好了……考虑要不要把备份操作放到软件内。

其它

仓库:hqweay/MarkAll

不一定所有想法都做得出来,尽力吧……

至少做到答辩的时候能稍微吹一吹……