Migrate release files
This commit is contained in:
1 parent
da1b430200
commit
488b631c38
1 file changed
+73
-7
@@ -139,6 +139,7 @@ class Database(object):
|
|||||||
'library_files__file_library': ['library_id', 'file_id'],
|
'library_files__file_library': ['library_id', 'file_id'],
|
||||||
'release': ['id', 'identifier', 'movie_id', 'status_id', 'quality_id', 'last_edit'],
|
'release': ['id', 'identifier', 'movie_id', 'status_id', 'quality_id', 'last_edit'],
|
||||||
'releaseinfo': ['id', 'identifier', 'value', 'release_id'],
|
'releaseinfo': ['id', 'identifier', 'value', 'release_id'],
|
||||||
|
'release_files__file_release': ['release_id', 'file_id'],
|
||||||
'status': ['id', 'identifier'],
|
'status': ['id', 'identifier'],
|
||||||
'properties': ['id', 'identifier', 'value'],
|
'properties': ['id', 'identifier', 'value'],
|
||||||
'file': ['id', 'path', 'type_id'],
|
'file': ['id', 'path', 'type_id'],
|
||||||
@@ -295,11 +296,19 @@ class Database(object):
|
|||||||
|
|
||||||
releases_by_media[release.get('movie_id')].append(release)
|
releases_by_media[release.get('movie_id')].append(release)
|
||||||
|
|
||||||
|
# Type ids
|
||||||
|
types = migrate_data['filetype']
|
||||||
|
type_by_id = {}
|
||||||
|
for t in types:
|
||||||
|
type = types[t]
|
||||||
|
type_by_id[type.get('id')] = type
|
||||||
|
|
||||||
# Media
|
# Media
|
||||||
log.info('Importing %s media items', len(migrate_data['movie']))
|
log.info('Importing %s media items', len(migrate_data['movie']))
|
||||||
statuses = migrate_data['status']
|
statuses = migrate_data['status']
|
||||||
libraries = migrate_data['library']
|
libraries = migrate_data['library']
|
||||||
library_files = migrate_data['library_files__file_library']
|
library_files = migrate_data['library_files__file_library']
|
||||||
|
releases_files = migrate_data['release_files__file_release']
|
||||||
all_files = migrate_data['file']
|
all_files = migrate_data['file']
|
||||||
poster_type = migrate_data['filetype']['poster']
|
poster_type = migrate_data['filetype']['poster']
|
||||||
medias = migrate_data['movie']
|
medias = migrate_data['movie']
|
||||||
@@ -340,16 +349,76 @@ class Database(object):
|
|||||||
added_media['files']['image_poster'] = [ffile.get('path')]
|
added_media['files']['image_poster'] = [ffile.get('path')]
|
||||||
break
|
break
|
||||||
|
|
||||||
db.update(added_media)
|
if 'image_poster' in added_media['files']:
|
||||||
|
db.update(added_media)
|
||||||
|
|
||||||
for rel in releases:
|
for rel in releases:
|
||||||
if not rel.get('info'): continue
|
|
||||||
|
empty_info = False
|
||||||
|
if not rel.get('info'):
|
||||||
|
empty_info = True
|
||||||
|
rel['info'] = {}
|
||||||
|
|
||||||
quality = quality_link[rel.get('quality_id')]
|
quality = quality_link[rel.get('quality_id')]
|
||||||
|
release_status = statuses.get(rel.get('status_id')).get('identifier')
|
||||||
|
|
||||||
|
if rel['info'].get('download_id'):
|
||||||
|
status_support = rel['info'].get('download_status_support', False) in [True, 'true', 'True']
|
||||||
|
rel['info']['download_info'] = {
|
||||||
|
'id': rel['info'].get('download_id'),
|
||||||
|
'downloader': rel['info'].get('download_downloader'),
|
||||||
|
'status_support': status_support,
|
||||||
|
}
|
||||||
|
|
||||||
# Add status to keys
|
# Add status to keys
|
||||||
rel['info']['status'] = statuses.get(rel.get('status_id')).get('identifier')
|
rel['info']['status'] = release_status
|
||||||
fireEvent('release.create_from_search', [rel['info']], added_media, quality, single = True)
|
if not empty_info:
|
||||||
|
fireEvent('release.create_from_search', [rel['info']], added_media, quality, single = True)
|
||||||
|
else:
|
||||||
|
release = {
|
||||||
|
'_t': 'release',
|
||||||
|
'identifier': rel.get('identifier'),
|
||||||
|
'media_id': added_media.get('_id'),
|
||||||
|
'quality': quality.get('identifier'),
|
||||||
|
'status': release_status,
|
||||||
|
'last_edit': int(time.time()),
|
||||||
|
'files': {}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add downloader info if provided
|
||||||
|
try:
|
||||||
|
release['download_info'] = rel['info']['download_info']
|
||||||
|
del rel['download_info']
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Add files
|
||||||
|
release_files = releases_files.get(rel.get('id'), [])
|
||||||
|
if not isinstance(release_files, list):
|
||||||
|
release_files = [release_files]
|
||||||
|
|
||||||
|
if len(release_files) == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
for f in release_files:
|
||||||
|
rfile = all_files[f.get('file_id')]
|
||||||
|
file_type = type_by_id.get(rfile.get('type_id')).get('identifier')
|
||||||
|
|
||||||
|
if not release['files'].get(file_type):
|
||||||
|
release['files'][file_type] = []
|
||||||
|
|
||||||
|
release['files'][file_type].append(rfile.get('path'))
|
||||||
|
|
||||||
|
try:
|
||||||
|
rls = db.get('release_identifier', rel.get('identifier'), with_doc = True)['doc']
|
||||||
|
rls.update(release)
|
||||||
|
db.update(rls)
|
||||||
|
except:
|
||||||
|
db.insert(release)
|
||||||
|
|
||||||
|
log.info('Total migration took %s', time.time() - migrate_start)
|
||||||
|
log.info('=' * 30)
|
||||||
|
|
||||||
|
|
||||||
# rename old database
|
# rename old database
|
||||||
log.info('Renaming old database to %s ', old_db + '.old')
|
log.info('Renaming old database to %s ', old_db + '.old')
|
||||||
@@ -359,6 +428,3 @@ class Database(object):
|
|||||||
os.rename(old_db + '-wal', old_db + '-wal.old')
|
os.rename(old_db + '-wal', old_db + '-wal.old')
|
||||||
if os.path.isfile(old_db + '-shm'):
|
if os.path.isfile(old_db + '-shm'):
|
||||||
os.rename(old_db + '-shm', old_db + '-shm.old')
|
os.rename(old_db + '-shm', old_db + '-shm.old')
|
||||||
|
|
||||||
log.info('Total migration took %s', time.time() - migrate_start)
|
|
||||||
log.info('=' * 30)
|
|
||||||
Reference in new issue
Block a user