#!/usr/bin/python
#
# A script to upload music to PlaysForSure infected Creative Zen players
# Requires pyid3lib and gphoto2
#
# (C) 2006 Mattias Merilai
# Distributed under the terms of the GNU General Public Licence
#
# -*- coding: utf8 -*- 

import pyid3lib, sys, os

musicdir = os.listdir( sys.argv[1] )
musicdir.sort()

artist = "unknown artist"
album = "unkonwn album"

confdir = os.environ.get( "HOME" ) + "/.buddha/"

# Cleans the musicdir[] of anything not an mp3
for file in musicdir:
	if file[-3:] !=  "mp3":
		musicdir.remove(file)
		continue

# Extracts artist and album info from the first file
for file in musicdir:
	tag = pyid3lib.tag( sys.argv[1] + "/" + file )
	artist = tag.artist.replace( " ", "_" )
	album = tag.album.replace( " ", "_" )
	break

# Creates metadata folders if needed
metadir = confdir + "metadata/" + artist + "/" + album + "/"
if not os.path.exists( metadir ):
	os.makedirs( metadir )

# Creates metadata files
for file in musicdir:
	tag = pyid3lib.tag( sys.argv[1] + "/" + file )

	metafile = metadir + "/" + file

	metadata = open( metafile, 'w' )
	for number in tag.track:
		metadata.write( "<Track>" + str(number) + "</Track>\n" )
		break

	metadata.write( "<AlbumName>" + tag.album + "</AlbumName>\n" )
	metadata.write( "<Name>" + tag.title + "</Name>\n" )
	metadata.write( "<ObjectFileName>" + file + "</ObjectFileName>\n" )
	metadata.write( "<Artist>" + tag.artist + "</Artist>\n" )
	metadata.close

# Creates folders on teh Zen
zenroot = "/store_00010001/Music/"
zendir = ( zenroot + artist + "__" + album + "/" )
os.system( "gphoto2 -f\"" + zenroot + "\"" + " -m\"" + artist + "__" + album + "\"" )

# Uploads teh music
#for file in musicdir:
#	print "Uploading musicfile:\t" + file
#	os.system( music )
#	print "Uploading metadata:\t" + file
#	os.system( meta )
#	print music
#	print meta

upload = confdir + "upload.sh"
if not os.path.exists( upload ):
	os.system( "touch " + upload )
	os.system( "chmod +x " + upload )

loadlist = open( upload, 'w' )
loadlist.write( "#!/bin/bash\n" )
for file in musicdir:
	cmd = "gphoto2 -f" + zendir + " -u\"" + sys.argv[1] + file + "\" --upload-metadata=\"" + metadir + file + "\"\n"
	loadlist.write( cmd )

loadlist.close

os.system( upload )

#loadlist = open ( upload )
#for cmd in loadlist.readlines():
#	print( cmd.rstrip() )
#	os.system( cmd.rstrip() )
#
#loadlist.close
