def __init__(self, user): self.user = user #query user preferences. self._whatuser = prefs.readPref('what_user',user) self._whatpass = prefs.readPref('what_pass',user) #query plugin config. db = self.wrap() self._dbfile = db.config.filter_by(name = 'db_file').first().value self._htmlpath =db.config.filter_by( name = 'db_filepath').first().value self._path = db.config.filter_by(name = 'db_path').first().value self._whatcookiepath = os.path.join(self.whatPath(),self.user+'.cookie')
def register(): print 'registering what.cd plugin' sb_dir = qc.query('scatterbrainz_dir') what_dir =os.path.join(sb_dir,'external/dbs/what') if not os.path.isdir(what_dir): os.mkdir(what_dir) print "Register what.cd for which SB user?" sb_user = raw_input('username: '******'what',sb_user): print "Plugin already registered for " + sb_user print "... exiting" exit(1) print "\nWhat.cd username?" what_user = raw_input('username: '******'password: '******'...configuring' wc.configure(what_user,what_pass,what_dir,sb_user) print '...initializing' wc.init(sb_user) import dbs.config.prefs as prefs w_user = prefs.readPref('what_user',sb_user) print 'Success! set up what.cd pluging for ' +sb_user+' with what.cd account: ' + w_user pc.register('what',sb_user) exit(0)
def wrap(self): from sqlalchemy.ext.sqlsoup import SqlSoup "A wrapper for a user's what db, at 'what_$user.sqlite'" dbfile = prefs.readPref('what_dbfile',self._plug.User()) dbstr = 'sqlite:///'+dbfile print "Wrapping soup with dbfile: " + dbstr db = SqlSoup(dbstr) return db
def _makeSoup(self): from sqlalchemy.ext.sqlsoup import SqlSoup "A wrapper for a user's what db, at 'what_$user.sqlite'" dbfile = prefs.readPref('what_dbfile',self._user) dbstr = 'sqlite:///'+dbfile print "Wrapping soup with dbfile: " + dbstr db._soup = SqlSoup(dbstr)#,session=scoped_session(sessionmaker(autoflush = True, expire_on_commit=False, autocommit=True))) print "Setting autoflush, autocommit = True for sqlite session" db._dbset = True
def insertPrefs(db,sb_user): """ Write preferences to the db database. """ dbfile = prefs.readPref('what_dbfile',sb_user) dbpath = os.path.dirname(dbfile) db_filepath = os.path.join(dbpath,sb_user+'_files') if not os.path.isdir(db_filepath): os.mkdir(db_filepath) db.query(""" insert into config(name,value) values('db_path',:dbpath); """,{'dbpath':dbpath}) db.query(""" insert into config(name, value) values('db_file',:dbfile); """,{'dbfile':dbfile}) db.query(""" insert into config(name,value) values('db_filepath',:db_filepath); """,{'db_filepath':db_filepath})
def getArtist(name): strname=name.lower() user = prefs.readPref('what_sb_user') wo= wh.openerForUser(user) o = wo.opener() f = o.open("http://what.cd/artist.php",urllib.urlencode({'artistname':strname})) artist_html = f.read() db = dbConnect(user) if db.exists("select * from artist where artist.name = :name",{'name':strname}): artid = db.queryToDict( """ select id from artist where artist.name = :name """ ,{'name':strname}) else: arthtml return d
def init(sb_user): """ Initialize the plugin db. """ dbfile = prefs.readPref('what_dbfile',sb_user) db = sqw.sqliteWrapper(dbfile) d = db.queryToDict('''select name from sqlite_master where type = 'table';''') for table in d: db.query("""drop table '""" + table['name'] + """';""") db.query(""" CREATE TABLE config( id INTEGER PRIMARY KEY, name TEXT UNIQUE, value TEXT ) """) insertPrefs(db,sb_user); db.query(""" CREATE TABLE artist( id INTEGER PRIMARY KEY, whatid INTEGER UNIQUE, name TEXT )""") db.query(""" CREATE TABLE release( id INTEGER PRIMARY KEY, whatid INTEGER UNIQUE, name TEXT )""") db.query(""" CREATE TABLE artist_gids( id INTEGER PRIMARY KEY, artist INTEGER, gid TEXT, FOREIGN KEY(artist) REFERENCES artist(id) );""") db.query(""" CREATE TABLE release_gids( id INTEGER PRIMARY KEY, release INTEGER, gid TEXT, FOREIGN KEY(release) REFERENCES release(id) );""") db.query(""" CREATE TABLE artist_html( id INTEGER PRIMARY KEY, artist INTEGER UNIQUE, filename TEXT, FOREIGN KEY(artist) REFERENCES artist(id) )""") db.query(""" CREATE TABLE artist_release( id INTEGER PRIMARY KEY, artist INTEGER, release INTEGER UNIQUE, FOREIGN KEY(release) REFERENCES release(id), FOREIGN KEY(artist) REFERENCES artist(id) )""") db.query(""" CREATE TABLE release_html( id INTEGER PRIMARY KEY, release INTEGER UNIQUE, filename TEXT, FOREIGN KEY(release) REFERENCES release(id) )""") db.commit() db.close()