No functionality changes, just moved the functions around for better readability.

This commit is contained in:
Kevin Midboe
2017-03-21 13:27:36 +01:00
parent 869ffa6534
commit 15ac039f61
2 changed files with 87 additions and 75 deletions

View File

@@ -52,26 +52,11 @@ def XOR(list1, list2):
return set(list1) ^ set(list2) return set(list1) ^ set(list2)
def getNewFolderContents():
showNames = getShowNames().keys()
folderContents = filter( lambda f: not f.startswith('.'), os.listdir(showDir))
return XOR(folderContents, showNames)
def checkForSingleEpisodes(folderItem):
showName, hit = getFuzzyName(folderItem)
episodeMatch = re.findall(re.sub(' ', '.', showName)+'\.S[0-9]{1,2}E[0-9]{1,2}\.', folderItem)
if episodeMatch:
return True
def getByIdentifier(folderItem, identifier): def getByIdentifier(folderItem, identifier):
itemMatch = re.findall(identifier + '[0-9]{1,2}', folderItem) itemMatch = re.findall(identifier + '[0-9]{1,2}', folderItem)
# TODO Should be more precise than first item in list
item = re.sub(identifier, '', itemMatch[0]) item = re.sub(identifier, '', itemMatch[0])
# TODO Should be checking for errors
return item return item
def getItemChildren(folder): def getItemChildren(folder):
@@ -90,31 +75,7 @@ def getItemChildren(folder):
return media_items, subtitles, trash return media_items, subtitles, trash
def getEpisodeInfo(folderItem):
showName, hit = getFuzzyName(folderItem)
season = getByIdentifier(folderItem, 'S')
episode = getByIdentifier(folderItem, 'E')
media_items, subtitles, trash = getItemChildren(folderItem)
episodeInfo = []
episodeInfo = {'original': folderItem,
'full_path': showDir + folderItem,
'name': showName,
'season': season,
'episode': episode,
'media_items': media_items,
'subtitles': subtitles,
'trash': trash,
'tweet_id': None,
'reponse_id': None,
'verified': '0',
'moved': '0'}
addToDB(episodeInfo)
return episodeInfo
def addToDB(episodeInfo): def addToDB(episodeInfo):
conn = sqlite3.connect(dbPath) conn = sqlite3.connect(dbPath)
c = conn.cursor() c = conn.cursor()
@@ -143,7 +104,56 @@ def addToDB(episodeInfo):
conn.commit() conn.commit()
conn.close() conn.close()
def getNewFolderContents():
# TODO Should not do on keys, if empty.
showNames = getShowNames().keys()
# TODO Better way to filter non dotfiles, dirread in filter?
# Should maybe all dirs be checked at start?
folderContents = filter( lambda f: not f.startswith('.'), os.listdir(showDir))
return XOR(folderContents, showNames) # OK
def checkForSingleEpisodes(folderItem):
# TODO also if empty, should be checked earlier
showName, hit = getFuzzyName(folderItem)
episodeMatch = re.findall(re.sub(' ', '.', showName)+'\.S[0-9]{1,2}E[0-9]{1,2}\.', folderItem)
if episodeMatch:
return True # OK
def getEpisodeInfo(folderItem):
showName, hit = getFuzzyName(folderItem)
season = getByIdentifier(folderItem, 'S')
episode = getByIdentifier(folderItem, 'E')
media_items, subtitles, trash = getItemChildren(folderItem)
episodeInfo = []
episodeInfo = {'original': folderItem,
'full_path': showDir + folderItem,
'name': showName,
'season': season,
'episode': episode,
'media_items': media_items,
'subtitles': subtitles,
'trash': trash,
'tweet_id': None,
'reponse_id': None,
'verified': '0',
'moved': '0'}
addToDB(episodeInfo)
return episodeInfo
def findStray(): def findStray():
# TODO What if null or tries to pass down error
for item in getNewFolderContents(): for item in getNewFolderContents():
if checkForSingleEpisodes(item): if checkForSingleEpisodes(item):
pprint(getEpisodeInfo(item)) pprint(getEpisodeInfo(item))

View File

@@ -17,40 +17,6 @@ auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret) auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth) api = tweepy.API(auth)
def unpackEpisodes():
conn = sqlite3.connect(dbPath)
c = conn.cursor()
cursor = c.execute('SELECT * FROM stray_episodes WHERE verified = 1 AND moved = 0')
episodeList = []
for row in c.fetchall():
columnNames = [description[0] for description in cursor.description]
episodeDict = dict.fromkeys(columnNames)
for i, key in enumerate(episodeDict.keys()):
episodeDict[key] = row[i]
episodeList.append(episodeDict)
conn.close()
return episodeList
def createFolders(episode):
showDir = '/media/hdd1/tv/%s/'% episode['name']
episodeFormat = '%s S%sE%s/'% (episode['name'], episode['season'], episode['episode'])
seasonFormat = '%s Season %s/'% (episode['name'], episode['season'])
if not os.path.isdir(showDir + seasonFormat):
os.makedirs(showDir + seasonFormat)
if not os.path.isdir(showDir + seasonFormat + episodeFormat):
os.makedirs(showDir + seasonFormat + episodeFormat)
def newnameMediaitems(media_items): def newnameMediaitems(media_items):
# media_items = [['New.Girl.S06E18.720p.HDTV.x264-EZTV.srt', '-EZTV', 'nl'], ['New.Girl.S06E18.720p.HDTV.x264-FLEET.srt', '-FLEET', 'en']] # media_items = [['New.Girl.S06E18.720p.HDTV.x264-EZTV.srt', '-EZTV', 'nl'], ['New.Girl.S06E18.720p.HDTV.x264-FLEET.srt', '-FLEET', 'en']]
media_items = json.loads(media_items) media_items = json.loads(media_items)
@@ -80,11 +46,46 @@ def updateMovedStatus(episodeDict):
conn.commit() conn.commit()
conn.close() conn.close()
def unpackEpisodes():
conn = sqlite3.connect(dbPath)
c = conn.cursor()
cursor = c.execute('SELECT * FROM stray_episodes WHERE verified = 1 AND moved = 0')
episodeList = []
for row in c.fetchall():
columnNames = [description[0] for description in cursor.description]
episodeDict = dict.fromkeys(columnNames)
for i, key in enumerate(episodeDict.keys()):
episodeDict[key] = row[i]
episodeList.append(episodeDict)
conn.close()
return episodeList
def createFolders(episode):
showDir = '/media/hdd1/tv/%s/'% episode['name']
episodeFormat = '%s S%sE%s/'% (episode['name'], episode['season'], episode['episode'])
seasonFormat = '%s Season %s/'% (episode['name'], episode['season'])
if not os.path.isdir(showDir + seasonFormat):
os.makedirs(showDir + seasonFormat)
if not os.path.isdir(showDir + seasonFormat + episodeFormat):
os.makedirs(showDir + seasonFormat + episodeFormat)
def moveFiles(episode): def moveFiles(episode):
# TODO All this should be imported from config file
showDir = '/media/hdd1/tv/' showDir = '/media/hdd1/tv/'
episodeFormat = '%s S%sE%s/'% (episode['name'], episode['season'], episode['episode']) episodeFormat = '%s S%sE%s/'% (episode['name'], episode['season'], episode['episode'])
seasonFormat = '%s/%s Season %s/'% (episode['name'], episode['name'], episode['season']) seasonFormat = '%s/%s Season %s/'% (episode['name'], episode['name'], episode['season'])
# TODO All this is pretty ballsy to do this hard/stict.
newMediaitems = newnameMediaitems(episode['media_items']) newMediaitems = newnameMediaitems(episode['media_items'])
for item in newMediaitems: for item in newMediaitems:
old_location = showDir + episode['original'] + '/' + item[0] old_location = showDir + episode['original'] + '/' + item[0]
@@ -103,6 +104,7 @@ def moveFiles(episode):
for trash in json.loads(episode['trash']): for trash in json.loads(episode['trash']):
os.remove(showDir + episode['original'] + '/'+ trash) os.remove(showDir + episode['original'] + '/'+ trash)
# TODO Maybe move to delete folder instead, than user can dump.
os.rmdir(showDir + episode['original']) os.rmdir(showDir + episode['original'])
updateMovedStatus(episode) updateMovedStatus(episode)