This commit is contained in:
flywithu 2019-03-15 22:39:29 +09:00
commit 68090ce2b8
3 changed files with 370 additions and 0 deletions

79
PiwigoUpload.py Normal file
View File

@ -0,0 +1,79 @@
#!/usr/bin/python3
import os
import random
from piwigo import *
import urllib.request as urllib2
import urllib.parse as urlparse
import math
def download_file(url, dest=None, destname=None):
"""
Download and save a file specified by url to dest directory,
"""
u = urllib2.urlopen(url)
scheme, netloc, path, query, fragment = urlparse.urlsplit(url)
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");
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()
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()

96
PiwigoUpload2.py Normal file
View File

@ -0,0 +1,96 @@
#!/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()

195
exif.py Normal file
View File

@ -0,0 +1,195 @@
#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
import os
import exifread
import datetime
import sys
from piwigo import *
from calendar import monthrange
import tinytag
sys.stdout.reconfigure(encoding='utf-8')
sys.stdin.reconfigure(encoding='utf-8')
exif_choice = "EXIF DateTimeOriginal"
mySite = Piwigo('https://pho.flywithu.com/')
mySite.pwg.session.login(username="flywithu", password="1q2w3e4r5t")
#aaa=mySite.pwg.categories.add(name="zaza")
#print(aaa['id'])
#exit()
categories=mySite.pwg.categories.getList(recursive="true")['categories']
categoryidnames = []
for category in categories:
# print (category['id_uppercat'])
categoryidname={'id':category['id'] , 'name':category['name'], 'id_uppercat':category['id_uppercat']}
categoryidnames.append(categoryidname)
#print(categoryidnames)
def getcategoryfromid(id):
for cat in categoryidnames:
# print(cat['id'])
if int(cat['id']) ==int(id):
return cat['name']
return id
#print("NAME::::::::"+str(getcategoryfromid(2930)))
#:wqexit()
#print(categoryidnames)
findcategorys = []
for category in categories:
if category['id_uppercat'] is None:
findcategory={'id':category['id'], 'name':category['name']}
findcategorys.append(findcategory)
#print (findcategorys)
elif (len(category['uppercats'].split(','))) is 2:
id_upper=category['id_uppercat']
findcategory={'id':category['id'], 'name':getcategoryfromid(id_upper)+"/"+category['name']}
findcategorys.append(findcategory)
elif (len(category['uppercats'].split(','))) is 3:
id_upper=category['id_uppercat']
id_upper2=""
for category2 in categories:
# print(str(category2['id'])+":"+id_upper)
if str(category2['id']) == id_upper:
id_upper2=category2['id_uppercat']
break
findcategory={'id':category['id'], 'name':getcategoryfromid(id_upper2)+"/"+getcategoryfromid(id_upper)+"/"+category['name']}
findcategorys.append(findcategory)
# print (category['name'])
def getidbyname(year):
global findcategorys
name=year
for findcat in findcategorys:
# print(findcat)
if findcat['name'] == name:
return findcat['id']
newid=mySite.pwg.categories.add(name=year,status="private")
findcategory={'id':newid['id'], 'name':name}
findcategorys.append(findcategory)
return newid['id']
def getidbyname2(year,month):
global findcategorys
name=year+"/"+month
for findcat in findcategorys:
# print(findcat)
if findcat['name'] == name:
return findcat['id']
yearid=getidbyname(year)
# print("YEARID:::"+str(yearid))
newid=mySite.pwg.categories.add(name=month,parent=int(yearid),status="private")
findcategory={'id':newid['id'], 'name':name}
findcategorys.append(findcategory)
return newid['id']
def getidbyname3(year,month,day):
global findcategorys
name=year+"/"+month+"/"+day
for findcat in findcategorys:
# print(findcat)
if findcat['name'] == name:
return findcat['id']
monthid=getidbyname2(year,month)
# print("Monthid:::"+str(monthid))
newid=mySite.pwg.categories.add(name=day,parent=int(monthid),status="private")
findcategory={'id':newid['id'], 'name':name}
findcategorys.append(findcategory)
return newid['id']
#print(str(getidbyname3("2017","05","1_59")))
#print(str(getidbyname3("2017","05","1_59")))
#print(str(getidbyname3("2017","05","1_59")))
#exit()
def files(path):
for file in os.listdir(path):
if os.path.isfile(os.path.join(path, file)):
yield file
folder = "./data/"
filenames = os.listdir(folder)
testfiles = [ x for x in filenames if os.path.isfile(os.path.join(folder,x)) == True ]
#print (testfiles)
#exit()
#def print_all_metadata_atoms(file):
# atoms = file.findall('.//data')
# for atom in atoms:
# data = atom.get_attribute('data')
# print (atom.parent.name, data)
#for filename in filenames:
for filename in testfiles:
# newfilename = filename.encode('utf-8')
targetname,targetext = os.path.splitext(filename)
pathfile = folder+filename
f2 = "./done/"+filename
f = open(pathfile,'rb')
if targetext == ".mp4":
print (".mp4")
# print_all_metadata_atoms(Mp4File(pathfile))
# exit()
else:
tags = exifread.process_file(f, stop_tag=exif_choice)
# print (pathfile)
for tag in tags.keys():
if tag in (exif_choice):
photodatetime=tags[tag]
T=datetime.datetime.strptime(str(photodatetime)[0:10],'%Y:%m:%d')
day=T.strftime('%d')
if(int(day)<=7):
fromto=T.strftime('%Y%m01_%Y%m07')
elif (int(day)<=14):
fromto=T.strftime('%Y%m08_%Y%m14')
elif (int(day)<=21):
fromto=T.strftime('%Y%m15_%Y%m21')
else:
year=int(T.strftime('%Y'))
month=int(T.strftime('%m'))
lastday=monthrange(year,month)[1]
#print(lastday)
fromto=T.strftime('%Y%m22_%Y%m'+str(lastday))
print(T.strftime('%Y'),T.strftime('%m'),fromto)
parentid=getidbyname3(T.strftime('%Y'),T.strftime('%m'),fromto)
try:
print("Try:",pathfile)
mySite.pwg.images.addSimple(image=pathfile, category=parentid)
print("Success:",pathfile)
os.rename(pathfile,f2)
#delete
except Exception as e:
print(e)
pass
#print (T)
#print ("Key: %s, value %s" % (tag, tags[tag]))