用 Go 编写的 Legimi 电子书的简单替代下载器。
基本上是用 Lua 重写了以前的下载器。
这完全是非官方的,我与 Legimi 没有任何关系。
笔记
这仍在进行中,但是已经可以使用了。
您可以在背景中找到有关它是如何产生的更多信息。
只需从发布部分下载存档,解压并使其可执行(如果需要): $ chmod +x legimi-go
。当然,您可以将安装目录添加到PATH
变量中,以便能够从任何地方运行它。
或者,如果您安装了 Go,则可以使用go install
命令安装它:
$ go install github.com/tp86/legimi-go@ < version >
可以是版本中的特定版本标签或latest
以从main
分支获取代码。请注意, main
分支可能包含未完成的功能。不过,我正在尽力只提交工作代码。
要查看使用情况,请调用:
$ legimi-go --help
所有命令行开关都是可选的。
--config path
配置文件的路径。默认值为"$HOME/.config/legimi-go/config.ini"
。配置文件包含您的凭据和由 Legimi 服务分配的 Kindle ID。它将在第一次命令运行时自动创建(缺少目录),因此通常不需要手动修改它。如果您不想将登录名和密码存储在文件中,可以在命令行中提供凭据(请参阅--login
和--password
开关)。
提示
您可以创建许多配置文件,以便您可以轻松地在多个帐户之间切换。
--login login
您的 Legimi 登录信息。如果您不提供从命令行登录的信息,则会从配置文件中读取。如果配置文件中也缺少它,系统会要求您在命令执行期间提供它。然后它将存储在配置文件中,因此您不必在将来的命令运行期间重复它。如果您确实从命令行提供登录,则不会将其写入配置文件。
--password password
你的雷吉米密码。适用与登录相同的逻辑。请注意,登录名和密码以纯文本形式存储在配置文件中。
--debug
启用调试模式。在调试模式下,有关交换的请求和响应的选定信息将打印到 stderr。目前,最有用的信息可能包含在会话响应中。
笔记
您可以使用一个( -config
)或两个破折号( --config
)来指定开关。
可用的命令有:
list
列出当前在 Legimi 书架上的书籍。
download
下载给定 ID 的书籍。可以通过列出书籍来获取书籍 ID(书籍条目行中的第一个值)。
version
打印合法版本。
提供命令是强制性的,没有默认命令。
第一次命令调用时,系统将提示您提供凭据(如果未通过命令行开关提供,请参见上文)和 Kindle 序列号(Kindle 中的设置 -> 设备选项 -> 设备信息)。 Legimi Kindle Id 将被自动查询并存储在配置文件中以供将来使用。
列出书架上的书籍
$ legimi-go list
如果您是第一次运行脚本,或者传递还没有凭据的配置文件,系统将提示您输入登录名和密码。
下载选定的书籍
$ legimi-go download < book-id >
下载的书籍将保存到当前工作目录中的
文件中。
提示
您可以在下载之前cd
进入已安装的 Kindle documents
目录,以避免复制文件。
将文件复制到 Kindle 的documents
目录
如果您在documents
目录中下载了书籍,则此选项是可选的。
显然,仅支持官方 Legimi 应用程序的部分功能。
大多数错误响应尚未识别/处理。这在未来应该会得到改善。
脚本无意创建 Legimi 服务未知的帐户或注册设备。您应该为此使用官方应用程序。设备注册有效,但可能会导致问题。
如果您想知道订阅期内还剩多少图书下载,可以使用-debug
开关并在Session response
部分下查找downloads left
信息。如果您尝试下载的书籍超出限制,Legimi 服务将阻止下载。
如果某些内容未按预期工作,请尝试使用-debug
开关来获取更多信息。
还应该检查官方 Legimi 应用程序,因为它是一个参考点。使用官方应用程序也有可能解决问题(#3(评论))。
官方 Legimi 应用程序不支持 Linux。我希望能够从 Linux 下载电子书,而无需在操作系统之间切换(甚至不需要安装 Windows)。
下载器的第一个版本是用 Lua 创建的。它工作得很好,但事实证明有时很难安装(依赖项安装到不同的路径)。它也很难维护,并且会导致 Legimi 协议更新出现问题。因此,我决定用Go重写脚本。我希望它的安装、使用和维护会更加容易。
我根据Legimi官方应用和服务之间交换的流量提取了下载书籍的逻辑。因此,肯定存在缺失的部分和功能。此外,不支持大多数错误响应。有关更多缺失功能,请参阅限制。