#music #records #discogs #vinyl #user-token

app cogsy

基于curses的CLI Discogs客户端

14个版本

0.2.2 2021年8月1日
0.2.1 2021年5月3日
0.2.0 2021年3月10日
0.1.12 2021年3月1日
0.1.3 2020年9月20日

#797数据库接口

每月45 次下载

LGPL-2.1

5MB
3.5K SLoC

cogsy

一个基于curses的、用Rust编写的命令行本地Discogs客户端

cogsy logo

version downloads

关于

Cogsy是一个基于curses的命令行应用程序,用于跟踪您的Discogs收藏。它查询Discogs API,并允许您在无需浏览器的情况下离线查看这些信息。它还添加了跟踪您的收听历史记录等附加功能,并以美观的方式显示给您。

对于不了解情况的人,Discogs 是一个网站/市场,音乐爱好者可以在其中收集和出售实体音乐媒介,如黑胶唱片和CD。

Cogsy已进入0.2.0版本!要查看新功能,请跳转到用法部分。

此应用的功能包括

  • 使用用户的用户名和应用程序令牌查询Discogs数据库。(预计将进行OAuth集成,但不是优先事项。)
  • 将数据存储在数据库中,并在应用程序启动时以TUI的形式显示。
  • 记录用户的收听历史记录,并在需要时显示。

Cogsy的目标受众不可否认地并不大。它针对的是那些每天使用计算机终端的用户,并且也是拥有黑胶/CD收藏的音乐爱好者。话虽如此,如果您不属于上述人群,但此应用程序仍然吸引您,不妨试试!

注意:此应用程序无法更改用户的收藏或进行购买,并且没有计划支持此功能。所有这些都必须在Discogs本身完成。

要求

  • cargo v1.46.0或更高版本(官方Rust构建工具和包管理器)

  • rustc v1.46.0或更高版本(官方Rust编译器)

  • gcc v10或更高版本(用于链接,rustc不会自行进行链接)

  • Discogs帐户(显然)

    • 注意:您的Discogs收藏必须有一个名为“所有”的文件夹。如果没有它,将破坏Cogsy的许多功能。

必须预先安装以下C共享库

  • libsqlite3或您发行版的等效库。
  • openssl(应该已经存在)
  • ncurses

大多数安装错误源于链接器无法在您的系统上找到相应的.so文件。寻找缺失的包并安装其dev版本。这应该可以解决大多数错误。

您可以使用 rustup 工具链管理器安装所有内容,官方Rust 安装页面 提供了相关说明。

对于Linux用户,建议您从您的发行版仓库安装 rustup。这对于Arch Linux用户尤其适用,因为Rust AUR软件包使用的是Arch包装的Rust版本。使用官方渠道安装的Cargo不会被 makepkg 检测到。

对于Arch Linux用户

pacman -S rustup
rustup default stable/nightly

阅读关于Rust的Arch Wiki文章以获取更多信息。

安装

macOS、Windows和Linux

Cogsy目前在Windows 10上由于依赖ncurses而损坏。目前正在修复此错误。Windows用户可以在Cygwin或WSL上运行它来绕过这个问题,但我还没有测试这种方法。

稳定的工具链可以编译Cogsy,但过去一些依赖项使用了仅限nightly的功能,导致在稳定版编译时出现错误。因此,我建议您默认使用nightly工具链。

要切换到nightly工具链,请运行

rustupdefault nightly

Cogsy可以从crates.io安装,这是官方的Rust软件包注册表

cargoinstall cogsy

此命令也可用于在新版本发布时更新Cogsy。您的数据应保持完好。

对于Arch Linux用户,Cogsy现在可在AUR上使用。

git clone https://aur.archlinux.org/cogsy.git
cd cogsy
makepkg -si

或者使用您喜欢的AUR辅助工具

paru-S cogsy

从源代码构建(请不要这样做,请使用cargo)

git clone https://github.com/cartoon-raccoon/cogsy
cd cogsy
make install

如果有人愿意为他们的发行版打包此应用,请让我知道,然后继续。

此应用已在Arch Linux、Void Linux、Pop!-OS和Fedora上进行测试。正在对macOS和Windows进行测试。

注意:Cogsy仍在开发中,并且仍被视为不稳定。它只有在所有三个目标操作系统上都运行良好时才会进入1.0.0版本。

设置

此应用需要一些设置:要访问Discogs API,它需要一个用户令牌。要获取此令牌,请转到您的Discogs账户设置 > 开发者 > 生成新令牌。将生成的字符串复制到您的剪贴板。

首次启动时,应用将询问您的用户凭据:您的用户名、您的令牌和您的时间区。要将令牌粘贴到终端,您可能需要使用Ctrl-Shift-V而不是Ctrl-V。输入这些信息后,应用将从Discogs获取您的信息并启动。

首次启动后,将创建一个config.toml文件,可在以下位置找到

Linux: /home/username/.config/cogsy/config.toml

MacOS: /Users/username/Library/Application Support/rs.cartoon-raccoon.cogsy/config.toml

Windows: C:\Users\username\AppData\Roaming\cartoon-raccoon\cogsy\config.toml

配置文件包含您在首次启动时输入的信息。

注意:Discogs API支持OAuth2,并且正在考虑为此应用集成OAuth2,但可能性不大,我认为使用此类框架不适合这种小型命令行应用的精神。您将不得不在可预见的未来使用您的用户令牌。

使用方法

从v0.2.0开始,Cogsy有很多新功能和修复,还有更多即将推出。由于功能列表变得非常长,现在它有了自己的手册页。

请参阅此处的文档。

贡献

请随意fork此仓库并发送pull request。整个项目目前是单个人工的,我将很高兴接受任何贡献。

问题和错误

  • 当运行 update 时,应用会冻结
    • 这是正常行为。Cogsy使用阻塞API查询Discogs,这意味着在更新过程运行时,整个应用会被暂停。目前没有计划实现异步行为。
  • 大型收藏可能会明显减慢应用的速度
    • 显示数据的计算是懒加载的,即只有在命令调用时才会从数据库加载数据并进行处理。没有任何预先计算和缓存。目前正在实现这一功能。

如果有任何其他问题,请提出问题,我将尽力回复和修复。

未来功能

以下任何功能都不能保证实现。

  • 添加一个price命令,允许用户设置他们为专辑支付的金额,并添加一个屏幕以显示他们花在音乐收藏上的增加金额,以sparkview图的形式展示。已编写解析命令的代码,现在只需实现即可。
  • 从CSV文件读取用户收藏数据的功能(Discogs支持以CSV格式下载收藏数据)。这对拥有大型收藏的用户来说将非常有用。
  • 在收听历史中显示专辑历史的功能(目前实现在专辑弹出窗口内部)。
  • 替代更新算法。
  • OAuth2集成(可能性不大)。

您可以在笔记部分查看完整的待办事项列表。

致谢

gyscos,为用户界面构建提供了Cursive库。感谢这个了不起的crate,以及你在Reddit上的帮助。

Cogsy受到了NerdyPepper的dijo的极大启发。是这个项目激发了我学习Rust的兴趣,这是我第一次构建的项目,不仅在Rust中,而且在任何编程语言中都是第一次。这个项目的整个存在都归功于他。谢谢您,先生。

依赖项

~36–50MB
~873K SLoC