Python Script
Asked by AKASH BHARDWAJ:

Hi All,

I am writing a python Script which tries to read png files with title as username for e.g admin.png, where the admin.png file will be set as profile picture for the user with username 'admin'.

```
#!/usr/bin/python# BulkPhotoUpload.py#Script to read *.png files from a directory and upload as profile picture for usersimport osimport shutilimport fnmatchimport xmlrpclibimport stringimport re#Function to generate files that match a given filename pattern with in a directorydef get_files_in_directory(filepat,top):for path, dirlist, filelist in os.walk(top):for userphoto in fnmatch.filter(filelist,filepat):yield os.path.join(path,userphoto)#Main Functionif __name__ == '__main__':#Source Directory must be specifiedsource = 'C:\BulkUploadPhoto\UserPhotos' # From where pictures of the users are read#Destination Directory must be specifieddestination = 'C:\BulkUploadPhoto\Archive' # To where pictures of the users are archived after uploading#The confluence server must be specified and the XML-RPC API must be enabled in the systemserver = xmlrpclib.ServerProxy('http://localhost:8090/rpc/xmlrpc')try:#Must specify the UserName & the Password of the usercontext on which the operation must be performedtoken = server.confluence2.login('admin', '20605104002');#Gets all the PNG files from the directoryuserphotocollection = get_files_in_directory("*png",source)#Iterate the files to upload them as profile photo for usersfor userPhoto in userphotocollection:pictureData = xmlrpclib.Binary(open(userPhoto).read())picName = os.path.basename(userPhoto)userName = os.path.splitext(picName)[0]profilePictureAdded = server.confluence2.addProfilePicture(token, userName, picName, 'image/png', pictureData)if profilePictureAdded:#Move the uploaded images to the Archive directoryshutil.move(userPhoto, destination)print "Successfully added profile picture for %d" % userNameelse:print "Failed to add profile picture for %d" % userNameexcept xmlrpclib.Fault, err:print "Fault code: %d" % err.faultCodeprint "Fault string: %s" % err.faultString


```


Answers:
author: Andrew Franklin Leo Palu Pillai
body: try this..

* File Type must be .PNG
* File name must be the confluence username

```
#!/usr/bin/python# BulkPhotoUpload.py#Script to read *.png files from a directory and upload as profile picture for usersimport osimport shutilimport fnmatchimport xmlrpclibimport stringimport re#Function to generate files that match a given filename pattern with in a directorydef get_files_in_directory(filepat,top):    for path, dirlist, filelist in os.walk(top):        for userphoto in fnmatch.filter(filelist,filepat):                        yield os.path.join(path,userphoto)#Main Functionif __name__ == '__main__':    #Source Directory must be specified    source = 'C:\BulkPhotoUpload\UserPhotos' # From where pictures of the users are read    #Destination Directory must be specified    destination = 'C:\BulkPhotoUpload\Archive' # To where pictures of the users are archived after uploading    #The confluence server must be specified and the XML-RPC API must be enabled in the system    server = xmlrpclib.ServerProxy('http://localhost:8090/rpc/xmlrpc')try:    #Must specify the UserName &amp; the Password of the usercontext on which the operation must be performed    token = server.confluence1.login('username', 'password');    #Gets all the PNG files from the directory    userphotocollection = get_files_in_directory("*png",source)    #Iterate the files to upload them as profile photo for users    for userPhoto in userphotocollection:                pictureData = xmlrpclib.Binary(open(userPhoto,'rb').read())        picName = os.path.basename(userPhoto)                 userName = os.path.splitext(picName)[0]                profilePictureAdded = server.confluence1.addProfilePicture(token, userName, picName, 'image/png', pictureData)    if profilePictureAdded:        #Move the uploaded images to the Archive directory                print "Successfully added profile picture for %s" % userName        shutil.move(userPhoto, destination)    else:        print "Failed to add profile picture for %s" % userName        except xmlrpclib.Fault, err:    print "Fault code: %d" % err.faultCode    print "Fault string: %s" % err.faultString
```

comments: author: AKASH BHARDWAJ
body: Thanks Great ... It worked for me..


author: Andrew Franklin Leo Palu Pillai
body: Please find the requisites for the above script

* File Type must be .PNG
* File name must be the confluence username
* Image must be of size 48 \* 48 pixels


author: AKASH BHARDWAJ
body: Hi Genius out there, can you please help me out with this query above..


author: AKASH BHARDWAJ
body: ```
While i run the script  i get the below error
Fault code: 0
Fault string: java.lang.Exception: com.atlassian.confluence.rpc.RemoteException: There was a problem resizing the image
>>> 
```


Tags: python