订阅者:从命令行自动下载 Linux Journal (v2.0)

作者:mitchfrazier

有句老话说,“任何值得做的事情,都值得自动化”——或者类似的话。下载和阅读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_dirsave_filenotify_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_dirsave_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--unreadrandom:NISS 中未指定 NISS,则默认为 1。

在此处下载 autolj:https://secure2.linuxjournal.com/download/autolj-latest.zip

发送电子邮件至 ljauto@linuxjournal.com 报告错误或如果您需要脚本方面的帮助。

加载 Disqus 评论