piwigo/PiwigoUpload2.py
2019-03-15 22:39:29 +09:00

97 lines
2.6 KiB
Python

#!/usr/bin/python3
import os
import random
from piwigo import *
import urllib.request as urllib2
import urllib.parse as urlparse
import math
import filecmp
def download_file(url, dest=None, destname=None):
"""
Download and save a file specified by url to dest directory,
"""
u = urllib2.urlopen(url)
isDuplicate = False
scheme, netloc, path, query, fragment = urlparse.urlsplit(url)
f1=""
if destname == None:
filename = os.path.basename(path)
else:
filename = destname
if not filename:
filename = 'downloaded.file'
if dest:
filename = os.path.join(dest, filename)
if os.path.exists(filename):
print("FileExist");
isDuplicate = True
f1=filename
tempf1 = os.path.splitext(os.path.basename(f1))[0]
filename=os.path.join(dest,"dup",tempf1+"_"+os.path.basename(path))
#return;#raise NameError('duplicat')
with open(filename, 'wb') as f:
meta = u.info()
meta_func = meta.getheaders if hasattr(meta, 'getheaders') else meta.get_all
meta_length = meta_func("Content-Length")
file_size = None
if meta_length:
file_size = int(meta_length[0])
print("Downloading: {0} filename {1} Bytes: {2}".format(url, filename, file_size))
file_size_dl = 0
block_sz = 8192
while True:
buffer = u.read(block_sz)
if not buffer:
break
file_size_dl += len(buffer)
f.write(buffer)
status = "{0:16}".format(file_size_dl)
if file_size:
status += " [{0:6.2f}%]".format(file_size_dl * 100 / file_size)
status += chr(13)
print(status, end="")
print()
if(isDuplicate == True):
if(filecmp.cmp(f1,filename)):
print ("samefile:",f1,":",filename)
os.remove(filename)
return filename
mySite = Piwigo('https://pho.flywithu.com/')
mySite.pwg.session.login(username="flywithu", password="1q2w3e4r5t")
#categories=mySite.pwg.categories.getList(recursive="true")['categories']
#for cat in categories:
#print(cat)
imagesinfo=mySite.pwg.categories.getImages(recursive="true")['paging']
#print(imagesinfo['count'])
total=imagesinfo['count']
perpage = 300
pagecount = math.ceil(int(total)/perpage)
print ("pagecount :",pagecount)
for x in range(pagecount):
print("pagecount:",x)
images=mySite.pwg.categories.getImages(recursive="true",per_page=perpage,page=x)['images']
for image in images:
print(image['element_url'])
download_file(image['element_url'],"data",image['file'])
mySite.pwg.session.logout()