mirror of
https://github.com/sashacmc/photo-importer.git
synced 2025-02-22 18:42:16 +02:00
Merge pull request #10 from sashacmc/server-mount-errors-processing
Handle server pmount errors
This commit is contained in:
commit
a990e00b06
8
debian/changelog
vendored
8
debian/changelog
vendored
@ -1,3 +1,11 @@
|
||||
photo-importer (1.2.1) stable; urgency=medium
|
||||
|
||||
* Handle server pmount errors
|
||||
* Allow log to /dev/stdout
|
||||
* Add aac files support
|
||||
|
||||
-- Alexander Bushnev <Alexander@Bushnev.pro> Thu, 08 Dec 2022 21:49:03 +0100
|
||||
|
||||
photo-importer (1.2.0) stable; urgency=medium
|
||||
|
||||
* Add PyPi install support
|
||||
|
@ -16,7 +16,7 @@ out_subdir_audio = Audio
|
||||
# File extensions
|
||||
file_ext_image = jpeg,jpg,cr2
|
||||
file_ext_video = mp4,mpg,mpeg,mov,avi,mts,3gp,m4v
|
||||
file_ext_audio = mp3,3gpp,m4a,wav
|
||||
file_ext_audio = mp3,3gpp,m4a,wav,aac
|
||||
file_ext_garbage = thm,ctg
|
||||
file_ext_ignore = ini,zip,db
|
||||
|
||||
|
@ -16,7 +16,7 @@ out_subdir_audio = Audio
|
||||
# File extensions
|
||||
file_ext_image = jpeg,jpg,cr2
|
||||
file_ext_video = mp4,mpg,mpeg,mov,avi,mts,3gp,m4v
|
||||
file_ext_audio = mp3,3gpp,m4a,wav
|
||||
file_ext_audio = mp3,3gpp,m4a,wav,aac
|
||||
file_ext_garbage = thm,ctg
|
||||
file_ext_ignore = ini,zip,db
|
||||
|
||||
|
@ -18,7 +18,7 @@ class Config(object):
|
||||
'time_src_audio': 'exif,name,attr',
|
||||
'file_ext_image': 'jpeg,jpg',
|
||||
'file_ext_video': 'mp4,mpg,mpeg,mov,avi,mts,m2ts,3gp,m4v',
|
||||
'file_ext_audio': 'mp3,3gpp,m4a,wav',
|
||||
'file_ext_audio': 'mp3,3gpp,m4a,wav,aac',
|
||||
'file_ext_garbage': 'thm,ctg',
|
||||
'file_ext_ignore': 'ini,zip,db',
|
||||
'remove_garbage': 1,
|
||||
@ -31,7 +31,7 @@ class Config(object):
|
||||
},
|
||||
'server': {
|
||||
'port': 8080,
|
||||
'web_path': '../web',
|
||||
'web_path': 'web',
|
||||
'out_path': '/mnt/multimedia/NEW/',
|
||||
'in_path': '',
|
||||
'log_file': 'photo-importer-server.log',
|
||||
|
@ -22,7 +22,8 @@ def initLogger(filename=None, level=logging.INFO):
|
||||
os.makedirs(os.path.split(filename)[0])
|
||||
except OSError:
|
||||
pass
|
||||
fh = logging.FileHandler(filename, 'a')
|
||||
mode = 'a' if os.path.isfile(filename) else 'w'
|
||||
fh = logging.FileHandler(filename, mode)
|
||||
else:
|
||||
fh = logging.StreamHandler()
|
||||
|
||||
|
@ -8,6 +8,7 @@ import psutil
|
||||
import urllib
|
||||
import logging
|
||||
import argparse
|
||||
import subprocess
|
||||
import http.server
|
||||
from http import HTTPStatus
|
||||
|
||||
@ -41,9 +42,15 @@ class PhotoImporterHandler(http.server.BaseHTTPRequestHandler):
|
||||
self.end_headers()
|
||||
self.wfile.write(bytearray(result, 'utf-8'))
|
||||
|
||||
def __error_response(self, code, err):
|
||||
def __error_response_get(self, code, err):
|
||||
self.send_error(code, explain=str(err))
|
||||
|
||||
def __error_response_post(self, code, explain):
|
||||
self.send_response(code)
|
||||
self.send_header('Content-type', 'text/plain')
|
||||
self.end_headers()
|
||||
self.wfile.write(bytearray(explain, 'utf-8'))
|
||||
|
||||
def __get_mounted_list(self):
|
||||
return {
|
||||
os.path.basename(dp.device): (dp.device, dp.mountpoint)
|
||||
@ -186,15 +193,41 @@ class PhotoImporterHandler(http.server.BaseHTTPRequestHandler):
|
||||
self.server.import_done(device['mount_path'])
|
||||
return device['dev_path']
|
||||
|
||||
def __run_cmd(self, cmd):
|
||||
error = ''
|
||||
try:
|
||||
logging.info('run cmd: %s' % cmd)
|
||||
|
||||
with subprocess.Popen(
|
||||
cmd,
|
||||
shell=True,
|
||||
universal_newlines=True,
|
||||
stderr=subprocess.PIPE,
|
||||
) as p:
|
||||
while True:
|
||||
line = p.stderr.readline()
|
||||
if not line:
|
||||
break
|
||||
error += line
|
||||
|
||||
if error != '':
|
||||
logging.error('cmd run error: %s' % error.strip())
|
||||
|
||||
except Exception:
|
||||
logging.exception('cmd run exception')
|
||||
|
||||
if error != '':
|
||||
raise HTTPError(HTTPStatus.INTERNAL_SERVER_ERROR, error)
|
||||
|
||||
return True
|
||||
|
||||
def __mount_mount(self, dev):
|
||||
dev_path = self.__check_dev_for_mount(dev)
|
||||
logging.debug('pmount %s', dev_path)
|
||||
return os.system('pmount --umask=000 %s' % dev_path)
|
||||
return self.__run_cmd('pmount --umask=000 %s' % dev_path)
|
||||
|
||||
def __mount_umount(self, dev):
|
||||
dev_path = self.__check_dev_for_mount(dev)
|
||||
logging.debug('pumount %s', dev_path)
|
||||
return os.system('pumount %s' % dev_path)
|
||||
return self.__run_cmd('pumount %s' % dev_path)
|
||||
|
||||
def __mount_request(self, params):
|
||||
try:
|
||||
@ -340,9 +373,11 @@ class PhotoImporterHandler(http.server.BaseHTTPRequestHandler):
|
||||
logging.warning('Wrong path: ' + path)
|
||||
raise HTTPError(HTTPStatus.NOT_FOUND, path)
|
||||
except HTTPError as ex:
|
||||
self.__error_response(ex.code, ex.reason)
|
||||
self.__error_response_get(ex.code, ex.reason)
|
||||
except Exception as ex:
|
||||
self.__error_response(HTTPStatus.INTERNAL_SERVER_ERROR, str(ex))
|
||||
self.__error_response_get(
|
||||
HTTPStatus.INTERNAL_SERVER_ERROR, str(ex)
|
||||
)
|
||||
logging.exception(ex)
|
||||
|
||||
def do_POST(self):
|
||||
@ -358,9 +393,11 @@ class PhotoImporterHandler(http.server.BaseHTTPRequestHandler):
|
||||
self.__import_request(params)
|
||||
return
|
||||
except HTTPError as ex:
|
||||
self.__error_response(ex.code, ex.reason)
|
||||
self.__error_response_post(ex.code, ex.reason)
|
||||
except Exception as ex:
|
||||
self.__error_response(HTTPStatus.INTERNAL_SERVER_ERROR, str(ex))
|
||||
self.__error_response_post(
|
||||
HTTPStatus.INTERNAL_SERVER_ERROR, str(ex)
|
||||
)
|
||||
logging.exception(ex)
|
||||
|
||||
|
||||
|
2
setup.py
2
setup.py
@ -14,7 +14,7 @@ def get_long_description():
|
||||
|
||||
setup(
|
||||
name='photo-importer',
|
||||
version='1.2.0',
|
||||
version='1.2.1',
|
||||
description='Photo importer tool',
|
||||
author='Alexander Bushnev',
|
||||
author_email='Alexander@Bushnev.pro',
|
||||
|
@ -141,7 +141,10 @@
|
||||
type: "POST",
|
||||
success: function() {
|
||||
update()
|
||||
}
|
||||
},
|
||||
error: function (request, status, error) {
|
||||
alert(request.responseText)
|
||||
}
|
||||
});
|
||||
} else
|
||||
if (cmd == "start") {
|
||||
@ -154,7 +157,10 @@
|
||||
type: "POST",
|
||||
success: function() {
|
||||
update()
|
||||
}
|
||||
},
|
||||
error: function (request, status, error) {
|
||||
alert(request.responseText)
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user