每月自动下载 Linux Journal
有句老话说,“任何值得做的事情,都值得自动化”——或者类似的话。下载和阅读 Linux Journal 一直是值得做的事情,现在您可以使用我们新的 autolj 脚本来自动化这个过程,您可以在这里获取该脚本。
按照以下几个简单的步骤操作,您就可以轻松地每月下载 PDF(或 .epub 或 .mobi 文件)
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='$(date +%B --date ${month}/1) ${year} Linux Journal ${doc^^} 已下载。'
)。 -
do_notify
— 指定脚本是否应尝试通知您新的下载(do_notify=1
)。
您可能已经注意到 save_dir
、save_file
和 notify_msg
变量都用单引号括起来(这意味着当脚本读取配置文件时,它们引用的变量不会被求值)。相反,脚本在需要它们时才对它们进行求值。当字符串被求值时,将设置以下变量
-
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 并让您的生活更自动化一点。
注意:下载后,请务必查看 README 文件以获取任何最新更新。
发送电子邮件至 ljauto@linuxjournal.com 以报告错误或如果您需要脚本方面的帮助。