]> git.phdru.name Git - m_librarian.git/commitdiff
Feat(ml-search.py): Option `--download-to`
authorOleg Broytman <phd@phdru.name>
Sun, 8 Apr 2018 17:57:44 +0000 (20:57 +0300)
committerOleg Broytman <phd@phdru.name>
Sun, 8 Apr 2018 17:57:44 +0000 (20:57 +0300)
Provides the path to the download directory.

docs-ru/command_line.rst
docs/command_line.rst
docs/news.rst
scripts/ml-search.py

index 2a686610a0fe56a772b666e629e7b0baf979d132..c4f0345722f03576f367d266e6e400eebe8de28b 100644 (file)
@@ -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`. Файл сохраняется в
index 4bde53d9f3b354636c10df9afaa7026ccdee9870..5e07c55107398f205ba03e0d15552a1956d3e09a 100644 (file)
@@ -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
index 20861b28f742a53c6bf99c7b6059a3320a8aa5a7..80498f1cda890ab293f0827b80bbe3130f31989c 100644 (file)
@@ -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)
 ---------------------------
 
index 5ee84ccd1e19c6b390c6a1cede087d3cfc3f4635..e6cde27184ac6b593e44ba0b21f47f43cea1de47 100755 (executable)
@@ -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',