Sep 18
NextGen Gallery SQL script (to scan folders and add them as galleries)
This time I needed this time to provision the NextGen SQL database with all the folders I’ve put on my server.
Again, i did a little python script. I scans your NextGen gallery folder, and enters all new folders as “galleries” in the SQL DB, and creates the thumbs for the pictures.
This was usefull for me. : )
You can download the script here.
#!/usr/bin/env python
#
# Dependencies:
# - ImageMagick (for Ubuntu user, sudo apt-get install imagemagick :) )
# - MySQL module for python (MySQLdb)
# - getpass module for python
import MySQLdb
import os
import stat
from getpass import getpass
from sys import exit, argv
def usage():
if len(argv) != 2:
print "Usage: ./ngall_sql.py /path/to/ng/gallery/folder"
exit(0)
##########
## main ##
##########
if __name__ == '__main__' :
try:
usage()
password = getpass("Please enter password :")
source = argv[1]
try:
conn = MySQLdb.connect (host = "localhost",
user = "WORDPRESS_SQL_USER",
passwd = password,
db = "WORDPRESS_SQL_USER_PASSWORD")
except MySQLdb.Error, e:
print "Error %d: %s" % (e.args[0], e.args[1])
exit (1)
cursor = conn.cursor ()
# put folder & pictures in an array
folders = os.listdir(source)
content = []
for folder in folders:
folder_test = os.lstat(source + folder)
if stat.S_ISDIR(folder_test.st_mode):
pictures = os.listdir(source + folder)
files = []
for picture in pictures:
picture_test = os.lstat(source + folder + '/' + picture)
if not stat.S_ISDIR(picture_test.st_mode):
files.append(picture)
content.append([folder, files])
# get existing galleries
cursor.execute ("SELECT path from wp_ngg_gallery")
rows = cursor.fetchall()
existing_galleries = []
for row in rows:
existing_galleries.append(row[0].split('/').pop())
# fetch the maximum pictureID (pid) and GalleryID(gid) to add above them
# the try/except part is just in case script is launched on empty DB
try:
cursor.execute ("select MAX(pid) from wp_ngg_pictures;")
pid = cursor.fetchall()[0][0] + 1
except: pid = 1
try:
cursor.execute ("select MAX(gid) from wp_ngg_gallery;")
gid = cursor.fetchall()[0][0] + 1
except: gid = 1
# Start processing folders & pictures
for array in content:
folder = array[0]
if not folder in existing_galleries:
print "## ADDING", folder
if os.path.isdir(source + folder + '/thumbs') == False:
print "# adding thumb folder for:", folder
os.makedirs(source + folder + '/thumbs')
os.chmod(source + folder + '/thumbs', 0777)
cursor.execute ("INSERT INTO wp_ngg_gallery (gid,name,path,title,galdesc,pageid,previewpic) \
VALUES (%i,'%s', '%s', '%s','',0,%i);" %(gid,folder,"wp-content/gallery/" + folder,folder.replace('_',' '),pid))
array[1].sort()
for picture in array[1]:
print " processing", picture
cursor.execute ("INSERT INTO wp_ngg_pictures (pid,galleryid,filename,description,alttext,exclude) \
VALUES (%i,%i, '%s',NULL,'%s',0);" %(pid,gid,picture,picture))
os.popen('convert -resize "150x112" -quality 60 %s %s'
% (source + folder + '/' + picture, source + folder + '/thumbs/thumbs_' + picture))
pid += 1
gid += 1
cursor.close ()
conn.commit ()
conn.close ()
print "done!"
except KeyboardInterrupt:
print 'Exiting on user request'

February 7th, 2008 at 7:10 pm
Nice Site! Thanks!
May 4th, 2008 at 7:51 pm
Great tutorial. This really helps as I had previously had to create my folders in my server and set them to writeable before I added them in the nextgen admin panel. Otherwise, it just created ghost folders that I could use.
Also, I’ve figured out how to implement the gallery into the header, which wasn’t fully explained on alex.rabe’s site…here is a short tutorial on implementing the NEXTGEN Gallery into your blog’s header
August 23rd, 2009 at 3:07 pm
Hi!
How would I go about using your scrip? I really have no clue even where to start. Do I need to upload this and run it on my server?
Greatful for any help!
Best, Henrik
August 23rd, 2009 at 3:58 pm
Hey Henrik,
As you said, you should upload it on your server then run it:
Hope this will be helpful,
Regards,
Ignace M -ghantoos-