Esempio n. 1
0
class TelemetaBaseMixin(object):

    MEDIA_ROOT = getattr(settings, 'MEDIA_ROOT')
    CACHE_DIR = os.path.join(MEDIA_ROOT, 'cache')
    cache_data = TelemetaCache(getattr(settings, 'TELEMETA_DATA_CACHE_DIR', CACHE_DIR))
    cache_export = TelemetaCache(getattr(settings, 'TELEMETA_EXPORT_CACHE_DIR', os.path.join(CACHE_DIR, 'export')))
    cache_tmp = TelemetaCache(getattr(settings, 'FILE_UPLOAD_TEMP_DIR', os.path.join(MEDIA_ROOT, 'tmp')))
Esempio n. 2
0
class Command(BaseCommand):
    help = "Cleanup DB : multiple analyses, data cache, export cache, etc.."
    args = "cache"
    cache_data = TelemetaCache(settings.TELEMETA_DATA_CACHE_DIR)
    cache_export = TelemetaCache(settings.TELEMETA_EXPORT_CACHE_DIR)

    def handle(self, *args, **options):
        items = MediaItem.objects.all()
        a_counter = 0

        print 'cleaning multiple analyses per item...'
        for item in items:
            if 'cache' in args:
                print 'cleaning cache...'
                self.cache_data.delete_item_data(item.code)
                self.cache_export.delete_item_data(item.code)

            analyses = MediaItemAnalysis.objects.filter(item=item)
            ids = []
            for analysis in analyses:
                id = analysis.analyzer_id
                if id in ids:
                    print 'item : ' + item.code + ' analyzer_id : ' + id
                    analysis.delete()
                    a_counter += 1
                else:
                    ids.append(id)

        print "Done, cleaned %s analyses" % str(a_counter)
Esempio n. 3
0
    def handle(self, *args, **options):
        if 'cache' in args:
            self.cache_data = TelemetaCache(settings.TELEMETA_DATA_CACHE_DIR)
            self.cache_export = TelemetaCache(
                settings.TELEMETA_EXPORT_CACHE_DIR)
            print "Cleaning all cache..."

        items = MediaItem.objects.all()
        a_counter = 0

        print 'Cleaning multiple analyses per item...'
        for item in items:
            if self.cache_data and self.cache_export:
                self.cache_data.delete_item_data(item.code)
                self.cache_export.delete_item_data(item.code)
            analyses = MediaItemAnalysis.objects.filter(item=item)
            ids = []
            for analysis in analyses:
                id = analysis.analyzer_id
                if id in ids:
                    print 'item : ' + item.code + ' analyzer_id : ' + id
                    analysis.delete()
                    a_counter += 1
                else:
                    ids.append(id)

        print "Done, cleaned %s analyses" % str(a_counter)
Esempio n. 4
0
class Command(BaseCommand):
    help = "Test: download and import a test item"
    args = "absolute paths of a local audio files"
    code = 'test'
    title = 'test'
    urls = ['http://files.parisson.com/telemeta/tests/media/sweep.mp3',
            'http://files.parisson.com/telemeta/tests/media/sweep.wav',
            'http://files.parisson.com/telemeta/tests/media/test.ogg',
            'http://files.parisson.com/telemeta/tests/media/test.flac',
            'http://files.parisson.com/telemeta/tests/media/test4.mp3',
            'http://files.parisson.com/telemeta/tests/media/test5.wav',
            'http://files.parisson.com/telemeta/tests/media/test6.wav']

    cache_data = TelemetaCache(settings.TELEMETA_DATA_CACHE_DIR)
    cache_export = TelemetaCache(settings.TELEMETA_EXPORT_CACHE_DIR)

    def handle(self, *args, **options):
        if args:
            self.urls = []
            for file in args:
                self.urls.append('file://' + file)

        collections = MediaCollection.objects.filter(code=self.code)
        if not collections:
            collection = MediaCollection(code=self.code, title=self.title)
            collection.public_access = 'full'
            collection.save()
        else:
            collection = collections[0]

        for url in self.urls:
            code = url.split('/')[-1]
            code = code.replace(' ', '_')
            items = MediaItem.objects.filter(code=code)
            if not items:
                item = MediaItem(collection=collection, code=code, title=code)
                item.save()
            else:
                print 'cleanup'
                item = items[0]
                self.cache_data.delete_item_data(code)
                self.cache_export.delete_item_data(code)
                flags = MediaItemTranscodingFlag.objects.filter(item=item)
                analyses = MediaItemAnalysis.objects.filter(item=item)
                for flag in flags:
                    flag.delete()
                for analysis in analyses:
                    analysis.delete()

            print 'downloading: ' + url
            file = urllib.urlopen(url)
            file_content = ContentFile(file.read())
            item.file.save(code, file_content)
            item.public_access = 'full'
            item.save()
            print 'item created: ' + code
Esempio n. 5
0
class Command(BaseCommand):
    args = "<media_file1 [media_file2 ...]>"
    help = "Download and import a media item"
    option_list = BaseCommand.option_list + (
        make_option('--collection-code',
                    action='store',
                    dest='code',
                    default='default',
                    metavar='<code>',
                    help='collection code'),
        make_option('--collection-title',
                    action='store',
                    dest='title',
                    default='default',
                    metavar='<title>',
                    help='collection title'),
    )

    cache_data = TelemetaCache(settings.TELEMETA_DATA_CACHE_DIR)
    cache_export = TelemetaCache(settings.TELEMETA_EXPORT_CACHE_DIR)

    urls = []

    def handle(self, *args, **options):
        if len(args) < 1:
            return
        if options['title']:
            self.title = options['title']
        if options['code']:
            self.code = options['code']
        for file in args:
            self.urls.append('file://' + file)

        collections = MediaCollection.objects.filter(code=self.code)
        if not collections:
            # create a new collection
            collection = MediaCollection(code=self.code, title=self.title)
            collection.public_access = 'full'
            collection.save()
        else:
            collection = collections[0]

        for url in self.urls:
            basename = os.path.basename(url)
            code = slugify(basename)
            title = beautify(basename)
            items = MediaItem.objects.filter(code=code)
            if not items:
                item = MediaItem(collection=collection, code=code, title=title)
                item.save()
            else:
                print 'cleaning up', code
                item = items[0]
                self.cache_data.delete_item_data(code)
                self.cache_export.delete_item_data(code)
                flags = MediaItemTranscodingFlag.objects.filter(item=item)
                analyses = MediaItemAnalysis.objects.filter(item=item)
                for flag in flags:
                    flag.delete()
                for analysis in analyses:
                    analysis.delete()

            print 'fetching: ' + url
            file = urllib.urlopen(url)
            file_content = ContentFile(file.read())
            item.title = title
            item.file.save(code, file_content)
            item.public_access = 'full'
            item.save()
            print 'item created: ', collection, code

        print 'done importing', len(self.urls), 'items'