Suite à un plantage de mon nouveau PC, j' ai du tout réinstaller. J' avais deux modules python et visiblement je n' ai pas du les replacer au bon endroit.
Ces deux modules appelmodule.py et slcpht.py sont dans le répertoire :
/home/elfouste/.config/libreoffice/4/user/Scripts/python
Lorsque je lance les scripts depuis Libre office Base, j' ai le message suivant:
"Erreur d' exécution basic
Une exception c' est produite:
Type: com.sun.star.uno.RuntimeException
Message: Error during function slcpht in module file:///
home/elfouste/.config/libreoffice/4/user/Scripts/python/
appelmodule.py(<class 'TypeError'>: 'module' object is not callable
File "/opt/libreoffice6.2/program/pythonscript.py", line 920, in
invoke
ret = self.func(*args).)
Si cela peut aider, je joins les deux scripts:
AppelModule
Code : Tout sélectionner
#!/usr/bin/env python3
from uno import *
from sys import *
from os import chdir
import csv
import slcpht
def slcfch(event):
ctx = XSCRIPTCONTEXT.getComponentContext()
fchslc = slcpht.fntslc(ctx)
Code : Tout sélectionner
#!/usr/bin/env python3
from exiftool import *
from os import chdir
from datetime import datetime
from fractions import Fraction
fchslc = ' '; chmcmppht = ' '; marque = ' '
def fntslc(ctx):
create = ctx.ServiceManager.createInstance
dsr = create("com.sun.star.ui.dialogs.OfficeFilePicker")
dsr.setDisplayDirectory("file:///media/elfouste/El_Casot/Yvon/Phototeque1/A_Trier/")
dsr.execute()
#global fchslc
fchslc = dsr.Files[0]
# Chemin complet du fichier
#global chmcmppht
bls = '/'
pstbls = fchslc.rfind(bls,0,10)
chmcmppht = fchslc[pstbls:]
# Chemin du fichier
xbls = chmcmppht.count(bls)
i = 0
while i <= xbls:
pstbls1 = chmcmppht.rfind(bls)
i = i + 1
chmpht = chmcmppht[:pstbls1]
# Nom de la photo
bls2 = '.'
pstbls2 = chmcmppht.rfind(bls2)
nmpht = chmcmppht[pstbls1 + 1:pstbls2]
# Récupération des données exif
with ExifTool() as e:
marque = e.get_tag('Make', chmcmppht)
if marque == None:
print ("Il n' y a pas de données exif pour cette photographie !")
marque = 'Inconnue'; xtnpht = 'Inconnue'; mdl = 'Inconnue'; dtpht = 'Inconnue'; hrpht = 'Inconnue'
dmspht = 'Inconnue'; tmpxps = 'Inconnue'; fcl = 'Inconnue'; lngfcl = 'Inconnue'
iso = 'Inconnue'; vrtbjc = 'Inconnue'; lmn = 'Inconnue'; flash = 'Inconnue'
bjc = 'Inconnue'
elif marque == 'Canon':
with ExifTool() as e:
xtnpht = e.get_tag('FileTypeExtension', chmcmppht)
vlrmdl = e.get_tag('Model', chmcmppht)
bjc = e.get_tag('LensType', chmcmppht)
dtcrt = e.get_tag('DateTimeOriginal', chmcmppht)
lrg = e.get_tag('ImageWidth', chmcmppht)
htr = e.get_tag('ImageHeight', chmcmppht)
xps = e.get_tag('ExposureTime', chmcmppht)
vlrfcl = e.get_tag('FNumber', chmcmppht)
vlrlngfcl = e.get_tag('FocalLength', chmcmppht)
iso = e.get_tag('Iso', chmcmppht)
vlrlmn = e.get_tag('LightValue', chmcmppht)
pstflash = e.get_tag('Flash', chmcmppht)
elif marque == 'FUJIFILM':
with ExifTool() as e:
xtnpht = e.get_tag('FileTypeExtension', chmcmppht)
vlrmdl = e.get_tag('Model', chmcmppht)
bjc = e.get_tag('LensType', chmcmppht)
dtcrt = e.get_tag('DateTimeOriginal', chmcmppht)
lrg = e.get_tag('ImageWidth', chmcmppht)
htr = e.get_tag('ImageHeight', chmcmppht)
xps = e.get_tag('ExposureTime', chmcmppht)
vlrfcl = e.get_tag('FNumber', chmcmppht)
vlrlngfcl = e.get_tag('FocalLength', chmcmppht)
iso = e.get_tag('Iso', chmcmppht)
vlrlmn = e.get_tag('LightValue', chmcmppht)
pstflash = e.get_tag('Flash', chmcmppht)
else:
with ExifTool() as e:
xtnpht = e.get_tag('FileTypeExtension', chmcmppht)
vlrmdl = e.get_tag('Model', chmcmppht)
bjc = e.get_tag('LensType', chmcmppht)
dtcrt = e.get_tag('DateTimeOriginal', chmcmppht)
lrg = e.get_tag('ImageWidth', chmcmppht)
htr = e.get_tag('ImageHeight', chmcmppht)
xps = e.get_tag('ExposureTime', chmcmppht)
vlrfcl = e.get_tag('FNumber', chmcmppht)
vlrlngfcl = e.get_tag('FocalLength', chmcmppht)
iso = e.get_tag('Iso', chmcmppht)
vlrlmn = e.get_tag('LightValue', chmcmppht)
pstflash = e.get_tag('Flash', chmcmppht)
# Clé du fichier
cfpht = 1
# Nom de l' appareil photo
bls3 = ' E '
if marque == 'Canon':
pstbls3 = fchslc.rfind(bls3)
mdl = vlrmdl[6:len(vlrmdl)]
elif marque == 'FUJIFILM':
mdl = vlrmdl
else:
mdl = 'Inconnu'
# Type d' objectif utilisé
if bjc == 53:
tpbjc = 'Canon EF-S 18-55mm f/3.5-5.6 III'
elif bjc == 45:
tpbjc = 'Canon EF-S 18-55mm f/3.5-5.6 [II]'
elif bjc == 39:
tpbjc = 'Canon EF 75-300mm f/4-5.6'
else:
tpbjc = 'Inconnu'
# Extraction de la date et de l' heure de prise de vue
dt = datetime.strptime(dtcrt,"%Y:%m:%d %H:%M:%S")
dtpht = dt.strftime('%d-%m-%Y')
hrpht = dt.strftime('%H:%M:%S')
# Dimension de la photo
dmspht = '%s*%s' % (lrg, htr)
# Temps d' exposition
x = Fraction(xps).limit_denominator(1000)
nmr = x.numerator
dnm = x.denominator
tmpxps = '%s/%s' % (nmr, dnm)
# Valeur de focale
fcl = 'f '+ str(round(vlrfcl, 1))
# Longueur de focale
lngfcl = str(vlrlngfcl)+ ' mm'
# Valeur de luminosité
lmn = round(vlrlmn,1)
# Valeur de flash
if pstflash == 16:
pstfls = 'Inactif'
else:
pstfls = 'Actif'
#Sauvegarde des données exif
chdir('/home/elfouste/Documents/Python/Svg_Csv')
with open('DnExif.csv', 'w') as f:
f.write('Cf_Pht'); f.write(','); f.write('ChmPht'); f.write(','); f.write('NmPht')
f.write(','); f.write('XtnPht'); f.write(','); f.write('Fbc'); f.write(',')
f.write('MdlApp'); f.write(','); f.write('Bjc'); f.write(','); f.write('DtPht')
f.write(','); f.write('HrPht'); f.write(','); f.write('DmsPht')
f.write(','); f.write('TmpXps'); f.write(','); f.write('Fcl')
f.write(','); f.write('LngFcl'); f.write(','); f.write('Sns')
f.write(','); f.write('Lmn'); f.write(','); f.write('PstFlsh')
f.write(','); f.write('ChmCmpPht')
f.write('\n')
f.write(str(cfpht)); f.write(','); f.write(chmpht); f.write(','); f.write(nmpht)
f.write(','); f.write(xtnpht); f.write(','); f.write(marque); f.write(',')
f.write(mdl); f.write(','); f.write(tpbjc); f.write(','); f.write(str(dtpht))
f.write(','); f.write(str(hrpht)); f.write(','); f.write(dmspht);f.write(',')
f.write(str(tmpxps)); f.write(','); f.write(fcl);f.write(','); f.write(lngfcl)
f.write(','); f.write(str(iso)); f.write(','); f.write(str(lmn));f.write(',')
f.write(pstfls); f.write(','); f.write(chmcmppht)