FeelUOwn icon indicating copy to clipboard operation
FeelUOwn copied to clipboard

支持在 fuo 文件里面给每一首歌曲写备注

Open cosven opened this issue 3 years ago • 0 comments

本来的背景

虾米平台有些歌单,歌单的作者非常细心,给每首歌都写了推荐语。这是一笔宝贵的财富,我们想把它保存下来。 而在 FeelUOwn 生态里面,fuo 文件是用来保存歌单的,但里面只存了音乐的基本元信息,没有存推荐语等。

思考解决方案

直接的想法是我们扩展一下 fuo 文件的语法。那语法怎么设计呢? 之前有一个关于 fuo 文件增强的 FEP:https://github.com/feeluown/FeelUOwn/issues/302 里面提到 fuo 文件设计的考虑准则 在对比方案中,我们主要考虑几个点

  1. 可读性,可以人肉阅读并编辑
  2. 有较好地容错性:一行/块数据地方出错,不应该影响整个文件的解析
  3. 程序解析方便
  4. 一个 fuo 文件内容可能不只是 songs,还可能有 albums,artists

可能的解决方案

  1. 类似 Emacs 的 org mode
fuo://xiami/albums/2102704879   # ゼルダの伝説 ブレス オブ ザ ワイルド SOUND SELECTION - Nintendo Sound Team
#+begin_comment
今天又熬夜了。不过满满的回忆 ~

这种咋办呢?
#+end_comment

fuo://netease/songs/316486      # 野孩子 - 杨千嬅 - 千嬅盛放 - 03:44

我觉得把,这种方案太丑了。可读性不好

  1. 使用缩进
fuo://xiami/albums/2102704879   # ゼルダの伝説 ブレス オブ ザ ワイルド SOUND SELECTION - Nintendo Sound Team
  :comment:::
  今天又熬夜了。不过满满的回忆 ~

  (不过换行咋办呢?)
  :marks::
  [1:00] 卡卡利特村是我最喜欢发呆的村子
  [2:05] 每到晚上,我就开始爬山,山上不会遇到人马等怪物

fuo://netease/songs/316486      # 野孩子 - 杨千嬅 - 千嬅盛放 - 03:44
  1. 缩进 + url + query
fuo://xiami/albums/2102704879   # ゼルダの伝説 ブレス オブ ザ ワイルド SOUND SELECTION - Nintendo Sound Team
  /title
  /remark  #: format=markdown,arg_list=x,arg_list=y                                                                      今天又熬夜了。不过满满的回忆 ~
    生活最难的时候就是怀疑自己。

    不过换行咋办呢?

  /flags
    [1:00] 卡卡利特村是我最喜欢发呆的村子
    [2:05] 每到晚上,我就开始爬山,山上不会遇到人马等怪物

fuo://netease/songs/316486      # 野孩子 - 杨千嬅 - 千嬅盛放 - 03:44

美观上勉强还行,遇到换行其实也不是特别优雅。 另外,程序解析的时候,由于内容没有 start/end 标记,似乎不好很好解析。 再另外,yaml 的缩进,其实就有人吐槽,毕竟人肉写空格来缩进总不是那么的靠谱。

抛开方案本身,还需要思考的问题

  1. 一个 fuo 文件,理想情况下会存哪些东西?
  2. 把推荐语记录在 fuo 文件中,是给作者自己看,还是分享给大家看? 一个想法:如果想把推荐语分享给大家,那把推荐语与 comment id 关联起来可能是不错的方式。

一些思考

fuo 文件本质或许是一种文本标记语言。

cosven avatar Jan 27 '21 17:01 cosven