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. : )
#!/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)
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 “150×112″ -quality 60 %s %s’
% (source + folder + ‘/’ + picture, source + folder + ‘/thumbs/thumbs_’ + picture))
pid += 1
gid += 1
cursor.close ()
conn.commit ()
conn.close ()
print “done!”

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