From: yomguy Date: Sat, 11 Jun 2011 00:18:41 +0000 (+0200) Subject: get first right MP3 imports X-Git-Tag: 1.1~112 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=cdebeaf0ef4bfe5ff8e6ba26076da6c73692bc44;p=telemeta.git get first right MP3 imports --- diff --git a/telemeta/__init__.py b/telemeta/__init__.py index 52997a8b..fe56514c 100644 --- a/telemeta/__init__.py +++ b/telemeta/__init__.py @@ -12,7 +12,7 @@ U{http://telemeta.org} """ __docformat__ = 'epytext en' -__version__ = '0.9' +__version__ = '0.9.5' __url__ = 'http://telemeta.org' __copyright__ = '(C) 2007-2011 Parisson' __license__ = 'CeCILL-2' diff --git a/tools/scripts/telemeta-media-link.py b/tools/scripts/telemeta-media-link.py index 8b607e5a..70c26aa3 100755 --- a/tools/scripts/telemeta-media-link.py +++ b/tools/scripts/telemeta-media-link.py @@ -12,9 +12,12 @@ # import os +import re import sys import logging import datetime +import timeside +from django.utils import html from django.core.management import setup_environ from django.core.files.base import ContentFile @@ -38,62 +41,81 @@ class Logger: class TelemetaMediaImport: - def __init__(self, collection, media_dir, log_file): + def __init__(self, media_dir, log_file): self.logger = Logger(log_file) - self.media_dir = media_dir + os.sep + 'items' + self.media_dir = media_dir self.medias = self.get_medias() - self.buffer_size = 0x1000 - self.media_item_dir = 'items/' - self.collection_name = collection - self.collection = self.set_collection(self.collection_name) - def get_medias(self): - medias = [] - list = os.listdir(self.media_dir) - for element in list: - if os.path.isfile(self.media_dir+os.sep+element): - medias.append(element) - return medias + os.chdir(self.media_dir) + file_list = [] + for root, dirs, files in os.walk('.'): + for file in files: + path = root + os.sep + file + if not os.sep+'.' in path: + file_list.append({'root': root, 'file': file}) + return file_list def set_collection(self, collection_name): - import telemeta.models - collections = telemeta.models.media.MediaCollection.objects.filter(code=collection_name) + if not collection_name: + collection_name = 'Unkown' + code = collection_name.replace(' ','_') + code = code.replace("'",'_') + code = re.escape(code) + code = code.replace("\\",'') + code = code.replace("(",'_') + code = code.replace(")",'_') + code = code.replace(",",'_') + print code + #code = html.escape(code) + from telemeta.models.media import MediaCollection + collections = MediaCollection.objects.filter(code=code) if not collections: - c = telemeta.models.media.MediaCollection(code=collection_name) - c.title = collection_name - c.save() - msg = 'added' - self.logger.write_info(collection_name, msg) - collection = c + collection = MediaCollection(code=code,title=collection_name) + collection.save() + msg = 'created' + self.logger.write_info('collection ' + collection_name, msg) else: collection = collections[0] return collection def media_import(self): - import telemeta.models + from telemeta.models.media import MediaItem for media in self.medias: - filename, ext = os.path.splitext(media) - item = telemeta.models.media.MediaItem.objects.filter(code=filename) + path = media['root'] + os.sep + media['file'] + print 'checking ' + path + filename, ext = os.path.splitext(media['file']) + item = MediaItem.objects.filter(code=filename) if not item: - print media - item = telemeta.models.media.MediaItem(collection=self.collection, code=filename) - item.title = filename - item.file = self.media_item_dir + media + print 'importing ' + path + decoder = timeside.decoder.FileDecoder(path) + obj = timeside.decoder.metadata.Mp3Metadata(path) + metadata = obj.metadata() + print metadata + collection = self.set_collection(metadata['album']) + item = MediaItem(collection=collection) + item.title = metadata['title'] + item.author = metadata['artist'] + #item.generic_style = metadata.genre + date = metadata['date'] + if not date or date == '0000': + date = '1900' + if not len(date) > 4: + item.recorded_from_date = date + '-01-01' + item.file = path item.save() - msg = 'added item : ' + filename - self.logger.write_info(self.collection_name, msg) + msg = 'added item : ' + path + self.logger.write_info(collection.code, msg) def run(): - collection = sys.argv[-2] - project_dir = sys.argv[-3] + project_dir = sys.argv[-2] log_file = sys.argv[-1] sys.path.append(project_dir) import settings setup_environ(settings) media_dir = settings.MEDIA_ROOT - t = TelemetaMediaImport(collection, media_dir, log_file) + t = TelemetaMediaImport(media_dir, log_file) t.media_import() if __name__ == '__main__':