mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-04 11:09:16 +02:00
WIP: Debian installation instructions
This commit is contained in:
parent
6adc8f0cde
commit
d63e7677e4
25 changed files with 574 additions and 126 deletions
53
api/funkwhale_api/providers/audiofile/tasks.py
Normal file
53
api/funkwhale_api/providers/audiofile/tasks.py
Normal file
|
@ -0,0 +1,53 @@
|
|||
import os
|
||||
import datetime
|
||||
from django.core.files import File
|
||||
|
||||
from funkwhale_api.taskapp import celery
|
||||
from funkwhale_api.music import models, metadata
|
||||
|
||||
|
||||
@celery.app.task(name='audiofile.from_path')
|
||||
def from_path(path):
|
||||
data = metadata.Metadata(path)
|
||||
artist = models.Artist.objects.get_or_create(
|
||||
name__iexact=data.get('artist'),
|
||||
defaults={
|
||||
'name': data.get('artist'),
|
||||
'mbid': data.get('musicbrainz_artistid', None),
|
||||
|
||||
},
|
||||
)[0]
|
||||
|
||||
release_date = data.get('date', default=None)
|
||||
album = models.Album.objects.get_or_create(
|
||||
title__iexact=data.get('album'),
|
||||
artist=artist,
|
||||
defaults={
|
||||
'title': data.get('album'),
|
||||
'release_date': release_date,
|
||||
'mbid': data.get('musicbrainz_albumid', None),
|
||||
},
|
||||
)[0]
|
||||
|
||||
position = data.get('track_number', default=None)
|
||||
track = models.Track.objects.get_or_create(
|
||||
title__iexact=data.get('title'),
|
||||
album=album,
|
||||
defaults={
|
||||
'title': data.get('title'),
|
||||
'position': position,
|
||||
'mbid': data.get('musicbrainz_recordingid', None),
|
||||
},
|
||||
)[0]
|
||||
|
||||
if track.files.count() > 0:
|
||||
raise ValueError('File already exists for track {}'.format(track.pk))
|
||||
|
||||
track_file = models.TrackFile(track=track)
|
||||
track_file.audio_file.save(
|
||||
os.path.basename(path),
|
||||
File(open(path, 'rb'))
|
||||
)
|
||||
track_file.save()
|
||||
|
||||
return track_file
|
Loading…
Add table
Add a link
Reference in a new issue