订阅者:从命令行自动下载 Linux Journal (v2.0)
有句老话说,“任何值得做的事情,都值得自动化”——或者类似的话。下载和阅读Linux Journal一直都是值得做的事情,现在您可以使用我们的 autolj 脚本将其自动化,您可以从这里获取(已更新至 2.0 版本,有关功能增强列表,请参阅本文末尾)。
按照下面几个简单的步骤,您就可以轻松地每月下载整本杂志的 PDF、.epub 或 .mobi 文件。在新版本 2.0 的脚本中,我们添加了让您能够从终端窗口中提取最新一期Linux Journal文章的功能(有时一次只阅读一篇文章可以更容易地阅读我们精彩的长篇杂志!)
1) 首先下载脚本并将其保存在某个位置;~/bin 是一个不错的选择。您可以随意命名它;不需要命名为 autolj.sh。
2) 打开终端/shell 并执行以下命令
$ chmod +x ~/bin/autolj.sh
$ ~/bin/autolj.sh --init
Enter the email and zip/postal code associated
with your Linux Journal subscription
EMail: you@example.com # Enter your email address
Zip : 88888 # Enter your zip/postal code
Creating initial config file.
Change your preferences in '/home/YOU/.config/autolj.cfg'.
Sample crontab configuration is in '/home/YOU/.config/autolj.crontab'.
如果您想每个月从 cron 自动运行脚本,您可以这样做
$ cp /home/YOU/.config/autolj.crontab mycrontab
$ crontab -l >>mycrontab
$ crontab <mycrontab
$ rm mycrontab
首次运行脚本时,请使用 --init
命令行选项来初始化脚本的配置文件。它将提示您输入与您的 Linux Journal 订阅关联的电子邮件和邮政编码。
它将该信息保存在名为 ~/.config/autolj.cfg 的文件中(如果您使用不同的名称保存脚本,则配置文件的基本名称将与您保存脚本时使用的名称匹配)。
您可以使用手头上的任何文本编辑器编辑配置文件,或者您可以重新运行带有 --init
选项的脚本以重新创建配置文件(您所做的任何现有更改都将丢失)。
配置文件是一个 bash 脚本,由 autolj 脚本加载,因此请在文件中保持有效的 bash 语法。配置文件包含一些您可能也想更改的其他选项(显示每个选项的默认值)
doctypes
— 指定要下载的文档类型(PDF、EPUB、MOBI)(doctypes="pdf"
)。save_dir
— 指定存储下载内容的目录(save_dir='$HOME/linuxjournal/issues'
)。save_file
— 指定用于下载文件的名称(save_file='LJ-$(printf %03d ${inum})-$year-$(printf %02d ${month}).${doc}'
)。notify_msg
— 指定在通知新下载时使用的消息(notify_msg='The $(date +%B --date ${month}/1) ${year} Linux Journal ${doc^^}\\nhas been downloaded.'
)。do_notify
— 指定脚本是否应尝试通知您新的下载(do_notify=1
)。
您可能已经注意到 save_dir
、save_file
和 notify_msg
变量都用单引号引起来(这意味着当脚本加载配置文件时,它们引用的变量不会被评估)。相反,脚本在需要时评估它们。当字符串被 eval 时,将设置以下变量
inum
— 期号。month
— 期刊月份,以数字表示。year
— 期刊年份。doc
— 文档类型(pdf、epub 或 mobi)。
通过在需要时评估字符串,您可以自定义下载内容的位置以及它们的命名方式。
以下是一些您可以执行的操作示例
# Download all types:
doctypes="epub mobi pdf"
# Organize downloads by document type:
# $HOME/linuxjournal/epub - epubs go here
# $HOME/linuxjournal/mobi - mobis go here
# $HOME/linuxjournal/pdf - pdfs go here
save_dir='$HOME/linuxjournal/${doc}'
# Organize downloads by month-year:
# $HOME/linuxjournal/1-2018 - January
# $HOME/linuxjournal/10-2018 - October
save_dir='$HOME/linuxjournal/${month}-${year}'
# Organize downloads by year-month (make sure month is 2 digits):
# $HOME/linuxjournal/2018-01 - January
# $HOME/linuxjournal/2018-10 - October
save_dir='$HOME/linuxjournal/${year}-$(printf %02d ${month})'
# Use the month name in the downloaded file:
# Linux-Journal-January-2018.pdf
# Linux-Journal-October-2018.pdf
save_file='Linux-Journal-$(date +%B ${month}/1)-$year.${doc}'
# Change the notification message.
notify_msg='The new LJ is here! The new LJ is here!
↪${month}-${year}-${doc}.'
# Disable notifications.
do_notify=0
如果您从 cron 运行脚本,并且您的系统可以将电子邮件发送到您监控的帐户,那么当脚本设法下载任何新期刊文件时,您将收到通知。
如果您的系统上安装了 notify-send
程序,则脚本还将在下载任何文件时“尝试”向您的桌面发送通知(通知是在屏幕右下方弹出的窗口)。
我使用“尝试”这个词,是因为如果您从 cron 运行脚本,notify-send
可能无法工作。如果您想禁用 notify-send
的使用,请在配置文件中将 do_notify
设置为零。
如果您不一直保持系统运行,您还可以设置脚本在您每次登录时自动运行。
在结束之前,还有一些注意事项
- 您只能使用该脚本下载最新一期,因此请确保在新一期发布之前运行它。
XDG_CONFIG_HOME
变量会被遵循:如果您设置了它,配置文件、示例 crontab 和图像文件将存储在那里,而不是在 ~/.config 中。- 仔细检查我们生成的 crontab 文件,确保它没有执行任何您不希望执行的操作。
- 生成的 crontab 条目在午夜和凌晨 5:59 之间的随机时间运行,并且仅在每月的头七天运行。
- 如果您查看脚本,您会看到一个巨大的可怕的 base64 编码数据块。不要害怕;它只是一个 png 图像,保存在 ~/.config/autolj.png 中,
notify-send
使用它在通知消息中放置图像。 - 如果您更改了配置文件中的
save_dir
和save_file
值,您可以使用--no-download
选项运行脚本,跳过实际下载并生成一些调试输出,以查看目录和文件名是否如您所期望的那样输出。
图 1. 通知图像
就是这样!现在下载 Linux Journal 并让您的生活自动化一点。
autolj — 版本 2.0.1
此版本添加了以下功能
- 通过指定
--offset N
下载过去的期刊,其中N
是相对于当前期刊的偏移量。目前,N
的负值和正值具有相同的效果:它们都指最新期刊之前的 N 期期刊。允许下载未来期刊的初步工作很有希望,但该功能仍在开发中。 - 使用
--contents N
选项显示过去 N 期期刊的内容。如果未指定N
,则默认为 1。 - 通过为
--read-pdf
选项指定文章编号来阅读单篇文章 PDF。 - 通过为
--read-text
或--read-txt
选项指定文章编号来阅读单篇文章的文本版本。 - 通过将
random:N
指定为上述--read-*
选项之一的选项,从过去 N 期期刊中读取一篇随机的未读文章。如果未指定N
,则默认为 1。 - 使用
--unread N
选项显示过去 N 期期刊中的未读文章。如果未指定N
,则默认为 1。
配置文件更改
您现在可以在“doctypes”中包含“tar.gz”来下载期刊文章的单个 PDF 和文本版本,例如
doctypes="pdf tar.gz"
旧选项
-
--init
— 初始化配置文件。 -
--no-download
— 不下载,仅显示将要下载的内容。
新选项
--version
— 显示版本号并退出。-
--help — 显示帮助并退出。
-
--contents NISS
— 显示最新的NISS
期期刊的内容。如果未指定NISS
,则默认为 1。 -
--unread NISS
— 显示最新的NISS
期期刊中的未读文章 --read-pdf ANUM
— 显示文章 ANUM 的 PDF 版本。--read-text ANUM
或--read-txt ANUM
— 显示文章ANUM
的文本版本。ANUM
可以指定为random:NISS
,以从最新的NISS
期期刊中随机选择一篇文章。如果在--contents
、--unread
或random:NISS
中未指定NISS
,则默认为 1。
在此处下载 autolj:https://secure2.linuxjournal.com/download/autolj-latest.zip
发送电子邮件至 ljauto@linuxjournal.com 报告错误或如果您需要脚本方面的帮助。