This commit is contained in:
56
handlers/pixiv/Webdav.py
Normal file
56
handlers/pixiv/Webdav.py
Normal file
@ -0,0 +1,56 @@
|
||||
import os
|
||||
|
||||
from webdav3.client import Client
|
||||
from webdav3.exceptions import LocalResourceNotFound, RemoteResourceNotFound
|
||||
|
||||
class Webdav(object):
|
||||
def __init__(self, option):
|
||||
webdav_option = {
|
||||
'webdav_hostname': option['webdav_hostname'],
|
||||
'webdav_login': option['webdav_login'],
|
||||
'webdav_password': option['webdav_password'],
|
||||
'disable_check': option['disable_check'],
|
||||
}
|
||||
self.client = self.connect_webdav(webdav_option)
|
||||
self.default_upload_path = option['default_upload_path']
|
||||
|
||||
# 链接webdav
|
||||
def connect_webdav(self, options):
|
||||
return Client(options)
|
||||
|
||||
# 批量同步
|
||||
def batch_sync(self, file_list, upload_path=None):
|
||||
# 记录失败与成功的id
|
||||
success_ids = []
|
||||
failed_ids = []
|
||||
# 获取临时文件路径
|
||||
temp_path = os.path.join(os.path.dirname(__file__), 'temp')
|
||||
|
||||
for file_item in file_list:
|
||||
path = os.path.join(temp_path, file_item['file_name'])
|
||||
result_flag = self.sync_file(file_item['file_name'], path, upload_path)
|
||||
|
||||
if result_flag:
|
||||
success_ids.append(file_item['id'])
|
||||
else:
|
||||
failed_ids.append(file_item['id'])
|
||||
|
||||
return (success_ids, failed_ids)
|
||||
|
||||
def sync_file(self, file_name, path, upload_path=None):
|
||||
result_flag = True
|
||||
try:
|
||||
# self.client.upload('Pictures/ACGN/Pixiv/' + file_name, path)
|
||||
if not(upload_path):
|
||||
upload_path = self.default_upload_path
|
||||
|
||||
self.client.upload(upload_path + file_name, path)
|
||||
|
||||
print('Info: ' + file_name + ' upload success!!')
|
||||
except LocalResourceNotFound as exception:
|
||||
result_flag = False
|
||||
|
||||
print('Error: ' + file_name + ' upload failed!!')
|
||||
|
||||
return result_flag
|
||||
|
Reference in New Issue
Block a user