From 3b1197213c1595bb0ea2fc8229ee21ba426ef8df Mon Sep 17 00:00:00 2001 From: Jack Stdin Date: Mon, 15 Feb 2016 00:13:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=BF=D0=B5=D1=80=D1=8C=20=D0=B0=D1=80?= =?UTF-8?q?=D1=85=D0=B8=D0=B2=20=D0=BD=D0=B5=20=D0=B1=D1=83=D0=B4=D0=B5?= =?UTF-8?q?=D1=82=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD,=20=D0=B5=D1=81?= =?UTF-8?q?=D0=BB=D0=B8=20=D0=BC=D1=8B=20=D0=B5=D0=B3=D0=BE=20=D0=BD=D0=B5?= =?UTF-8?q?=20=D0=BA=D0=B0=D1=87=D0=B0=D0=BB=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 24 +++++++++++++++++++----- aore/updater/aorar.py | 21 ++++++++++++++++----- aore/updater/updater.py | 9 +++------ 3 files changed, 38 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 1267f5f..707360d 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,17 @@ _Внимание_! Только Python 2.7, только PostgreSQL, тольк sudo apt-get update sudo apt-get install postgresql-9.5 ``` - Затем создайте пользователя и базу данных. + Затем создайте пользователя и базу данных: + ``` + sudo adduser phias + sudo -u postgres psql + postgres=# CREATE EXTENSION pg_trgm; + postgres=# CREATE EXTENSION btree_gin; + postgres=# CREATE DATABASE fias_db; + postgres=# CREATE USER phias WITH password 'phias'; + postgres=# GRANT ALL privileges ON DATABASE fias_db TO phias; + postgres=# ALTER USER phias WITH SUPERUSER; + ``` 3. Sphinx 2.2.1 и новее: [Windows](http://sphinxsearch.com/downloads/release/), Debian: @@ -59,7 +69,7 @@ _Внимание_! Только Python 2.7, только PostgreSQL, тольк wget http://sphinxsearch.com/files/sphinx-2.2.10-release.tar.gz tar xzf sphinx-2.2.10-release.tar.gz cd sphinx-2.2.10-release - sudo apt-get install postgresql-server-dev-9.5 + sudo apt-get install postgresql-server-dev-9.5 ./configure --without-mysql --with-pgsql make sudo make install @@ -93,7 +103,7 @@ _Внимание_! Только Python 2.7, только PostgreSQL, тольк 3. Установить sphinxapi последней версии: ``` - pip install https://github.com/Romamo/sphinxapi/zipball/master + sudo pip install https://github.com/Romamo/sphinxapi/zipball/master ``` 4. Установить, собственно, приложение: - полностью: @@ -106,8 +116,12 @@ _Внимание_! Только Python 2.7, только PostgreSQL, тольк cd /var/www/py-phias sudo pip install -r requirements.txt ``` - - как библиотеку: + - как repo: ``` - python -m pip install .... + sudo mkdir -p /var/www/py-phias + sudo chown phias: /var/www/py-phias + cd /var/www + sudo -u phias -H git clone --branch=master https://github.com/jar3b/py-phias.git py-phias + sudo pip install -r requirements.txt ``` \ No newline at end of file diff --git a/aore/updater/aorar.py b/aore/updater/aorar.py index c393247..a028024 100644 --- a/aore/updater/aorar.py +++ b/aore/updater/aorar.py @@ -15,6 +15,12 @@ from aoxmltableentry import AoXmlTableEntry class AoRar: def __init__(self): rarfile.UNRAR_TOOL = unrar_config.path + self.fname = None + self.mode = None + + def local(self, fname): + self.fname = fname + self.mode = "local" def download(self, url): logging.info("Downloading %s", url) @@ -35,11 +41,12 @@ class AoRar: raise FiasException("Error downloading. Reason : {}".format(format_exc())) logging.info("Downloaded %d bytes", int(request.headers['Content-length'])) - return local_filename + self.fname = local_filename + self.mode = "remote" - def get_table_entries(self, file_name, allowed_tables): - if file_name and os.path.isfile(file_name): - rf = rarfile.RarFile(file_name) + def get_table_entries(self, allowed_tables): + if self.fname and os.path.isfile(self.fname): + rf = rarfile.RarFile(self.fname) for arch_entry in rf.infolist(): xmltable = AoXmlTableEntry.from_rar(arch_entry.filename, rf, arch_entry) @@ -47,6 +54,10 @@ class AoRar: yield xmltable else: logging.info("All entries processed") - os.remove(file_name) + if self.mode == "remote": + try: + os.remove(self.fname) + except: + logging.warning("Cannot delete %s, do it manually", self.fname) else: logging.error("No file specified or not exists") diff --git a/aore/updater/updater.py b/aore/updater/updater.py index afbb81b..a4b12b0 100644 --- a/aore/updater/updater.py +++ b/aore/updater/updater.py @@ -61,16 +61,13 @@ class Updater: def __get_updates_from_rar(self, url): aorar = AoRar() - fname = None if url.startswith("http://") or url.startswith("https://"): - fname = aorar.download(url) + aorar.download(url) if url.endswith(".rar") and path.isfile(url): - fname = url + aorar.local(url) - assert fname, "No source was specified" - - for table_entry in aorar.get_table_entries(fname, allowed_tables): + for table_entry in aorar.get_table_entries(allowed_tables): yield table_entry def __init_update_entries(self, updates_generator):