@classmethod
def set_status(cls, aid, status):
Audiobook.objects.filter(pk=aid).update(
- **{'%s_status' % cls.ext: status})
+ **{'%s_status' % cls.prefix: status})
@staticmethod
def encode(in_path, out_path):
@classmethod
def set_tags(cls, audiobook, file_name):
- tags = getattr(audiobook, "get_%s_tags" % cls.ext)()['tags']
+ tags = getattr(audiobook, "get_%s_tags" % cls.prefix)()['tags']
if not tags.get('flac_sha1'):
tags['flac_sha1'] = audiobook.get_source_sha1()
audio = File(file_name)
@classmethod
def save(cls, audiobook, file_name):
- field = "%s_file" % cls.ext
+ field = "%s_file" % cls.prefix
getattr(audiobook, field).save(
"%d.%s" % (audiobook.pk, cls.ext),
ExistingFile(file_name),
@classmethod
def published(cls, aid):
kwargs = {
- "%s_published_tags" % cls.ext: F("%s_tags" % cls.ext),
- "%s_tags" % cls.ext: None,
- "%s_published" % cls.ext: datetime.now(),
- '%s_status' % cls.ext: None,
+ "%s_published_tags" % cls.prefix: F("%s_tags" % cls.prefix),
+ "%s_tags" % cls.prefix: None,
+ "%s_published" % cls.prefix: datetime.now(),
+ '%s_status' % cls.prefix: None,
}
Audiobook.objects.filter(pk=aid).update(**kwargs)
@classmethod
def put(cls, user, audiobook, path):
- tags = getattr(audiobook, "get_%s_tags" % cls.ext)()
+ tags = getattr(audiobook, "get_%s_tags" % cls.prefix)()
data = {
'book': tags['url'],
'type': cls.ext,
'parts_count': audiobook.parts_count,
'source_sha1': audiobook.source_sha1,
}
- api_call(user, UPLOAD_URL, data=data, files={
- "file": open(path, 'rb'),
- })
+ with open(path, 'rb') as f:
+ api_call(user, UPLOAD_URL, data=data, files={
+ "file": f,
+ })
def run(self, uid, aid, publish=True):
aid = int(aid)
class Mp3Task(AudioFormatTask):
- ext = 'mp3'
+ prefix = ext = 'mp3'
# these shouldn't be staticmethods
def id3_text(tag, text):
- return tag(encoding=1, text=text)
+ return tag(encoding=3, text=text)
def id3_url(tag, text):
return tag(url=text)
- def id3_comment(tag, text, lang=u'pol'):
- return tag(encoding=1, lang=lang, desc=u'', text=text)
- def id3_priv(tag, text, what=u''):
+ def id3_comment(tag, text, lang='pol'):
+ return tag(encoding=3, lang=lang, desc='', text=text)
+ def id3_priv(tag, text, what=''):
return tag(owner='wolnelektury.pl?%s' % what, data=text.encode('utf-8'))
TAG_MAP = {
if COVER_IMAGE:
mime = mimetypes.guess_type(COVER_IMAGE)
- f = open(COVER_IMAGE)
- audio.add(id3.APIC(encoding=0, mime=mime, type=3, desc=u'', data=f.read()))
- f.close()
+ with open(COVER_IMAGE, 'rb') as f:
+ audio.add(id3.APIC(encoding=0, mime=mime, type=3, desc='', data=f.read()))
audio.save()
class OggTask(AudioFormatTask):
- ext = 'ogg'
+ prefix = ext = 'ogg'
@staticmethod
def encode(in_path, out_path):