From 6c8ac7767478984cb4f3210da73fa9f0c0a21b5f Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Sun, 8 Apr 2018 20:57:44 +0300 Subject: [PATCH] Feat(ml-search.py): Option `--download-to` Provides the path to the download directory. --- docs-ru/command_line.rst | 9 +++++++++ docs/command_line.rst | 9 +++++++++ docs/news.rst | 3 +++ scripts/ml-search.py | 15 ++++++++++++++- 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/docs-ru/command_line.rst b/docs-ru/command_line.rst index 2a68661..c4f0345 100644 --- a/docs-ru/command_line.rst +++ b/docs-ru/command_line.rst @@ -150,6 +150,7 @@ ml-search.py -l, --lang lang Искать по языку --lid lid Искать по id языка -P, --path path Путь к директории с архивами библиотеки + --download-to [path] Путь к директории для сохранения книг -F, --format format Формат имени сохраняемого файла --get Загрузить ровно один файл --get-many N Загрузить не больше указанного числа файлов @@ -172,6 +173,14 @@ ml-search.py Опция полезна в ситуации работы с несколькими базами данных (глобальная опция `-D`). +Опция `--download-to` задаёт путь к директории для сохранения книг. +По умолчанию скрипт сохраняет книги в текущую директорию. +Если опция используется без указания аргумента `path` скрипт использует +значение из файла конфигурации, секция `[download]`, ключ `path`:: + + [download] + path = /tmp + Опция `--get` позволяет загрузить книгу из библиотеки в файл. Опция позволяет загрузить ровно одну книгу, поэтому самый простой способ использовать эту команду — совместно с опцией `--id`. Файл сохраняется в diff --git a/docs/command_line.rst b/docs/command_line.rst index 4bde53d..5e07c55 100644 --- a/docs/command_line.rst +++ b/docs/command_line.rst @@ -148,6 +148,7 @@ Options:: --lid lid Search by language’s id -P, --path path Path to the directory with the library archives + --download-to [path] Download directory -F, --format format Format of the downloaded file name --get Download exactly one book --get-many N Download at most this many books @@ -169,6 +170,14 @@ section `[library]`, key `path`:: The option is useful for multiple databases (global option `-D`). +Option `--download-to` provides the path to the download directory. +By default the script downloads books to the current directory. +If the option is used without `path` argument the path is extracted from +configuration file, section `[download]`, key `path`:: + + [download] + path = /tmp + Option `--get` allows to download a book from the library to a local file. The option allows to download exactly one book. The simplest way to use it is via option `--id`. The file is downloaded into the current diff --git a/docs/news.rst b/docs/news.rst index 20861b2..80498f1 100644 --- a/docs/news.rst +++ b/docs/news.rst @@ -7,6 +7,9 @@ Version 0.1.0 (2018-04-08) * Web-interface: Search for authors, list books by an author, download a book. +* Option `--download-to` provides the path to the download directory + in script `ml-search.py`. + Version 0.0.17 (2018-03-24) --------------------------- diff --git a/scripts/ml-search.py b/scripts/ml-search.py index 5ee84cc..e6cde27 100755 --- a/scripts/ml-search.py +++ b/scripts/ml-search.py @@ -2,6 +2,10 @@ from __future__ import print_function import argparse +try: + from configparser import NoSectionError, NoOptionError +except ImportError: # Python 2 + from ConfigParser import NoSectionError, NoOptionError import os import sys from sqlobject.sqlbuilder import CONCAT @@ -200,7 +204,13 @@ def _search_books(case_sensitive, search_type, args): print(" ", encode(_("Deleted")), ":", encode(_(str(book.deleted)))) if args.get or args.get_many: - download(book, os.path.curdir, args.path, args.format) + download_to = args.download_to + if download_to is None: + try: + download_to = get_config().get('download', 'path') + except (NoSectionError, NoOptionError): + download_to = os.path.curdir + download(book, download_to, args.path, args.format) count += 1 print_count(count) @@ -323,6 +333,9 @@ if __name__ == '__main__': parser.add_argument('-l', '--lang', help='search by language') parser.add_argument('--lid', type=int, help='search by language\'s id') parser.add_argument('-P', '--path', help='path to the library archives') + parser.add_argument('--download-to', nargs='?', + const=None, default=os.path.curdir, + help='download directory') parser.add_argument('-F', '--format', help='download format, default is %%f') parser.add_argument('--get', action='store_true', -- 2.39.2