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):