def addSpotify(request): try: account = Account.objects.get(user_id = request.user.id) except: return HttpResponseForbidden() if len(account.spotify_username) == 0 or len(account.spotify_password) == 0: return HttpResponseForbidden() if 'ok' in request.POST and 'uri' in request.POST and request.POST['uri'].startswith('spotify:track:'): query = {'action':'meta', 'uri':request.POST['uri'], 'username':account.spotify_username, 'password':account.spotify_password} try: result = json.loads(requests.get("http://localhost:8080/", params=query).text) song = Song(account_id=account.id, source=Song.SOURCE_SPOTIFY, hash=request.POST['uri'].replace('spotify:track:', ''), title=result['title'], artist=result['artist'], length=result['length'], album=result['title'], track=int(result['track']) if 'track' in result and result['track'] else None, year=int(result['year']) if 'year' in result and result['year'] else None) song.full_clean() song.save() except: pass return HttpResponse(status=201) return render_to_response('establishment/library/addSpotify.html', {}, context_instance=RequestContext(request))
def add(request): try: account = Account.objects.get(user_id = request.user.id) except: return HttpResponseForbidden() if 'ok' in request.POST: uploadPath = os.path.join(settings.MEDIA_ROOT, "upload/" + str(account.id) + "/") libraryPath = os.path.join(settings.MEDIA_ROOT, "library/" + str(account.id) + "/") for file in os.listdir(uploadPath): name = file.split('_', 1) audio = MP3(uploadPath + file) comments = audio.tags.getall('COMM:') song = Song(account_id=account.id, source=Song.SOURCE_FILE, hash=hashlib.md5(open(uploadPath + file, 'rb').read()).hexdigest(), title=audio.tags['TIT2'].text[0] if 'TIT2' in audio.tags and audio.tags['TIT2'].text[0] else name[1], artist=audio.tags['TPE1'].text[0] if 'TPE1' in audio.tags and audio.tags['TPE1'].text[0] else "Uknown artist", length=audio.info.length, album=audio.tags['TALB'].text[0] if 'TALB' in audio.tags else "", track=int(audio.tags['TRCK'].text[0]) if 'TRCK' in audio.tags and isinstance(audio.tags['TRCK'].text[0], (int, long, float, complex)) else None, year=int(audio.tags['TDRC'].text[0].get_text()) if 'TDRC' in audio.tags and isinstance(audio.tags['TDRC'].text[0].get_text(), (int, long, float, complex)) else None, genre=audio.tags['TCON'].text[0] if 'TCON' in audio.tags else "", comment=comments[0].text[0] if comments else "") try: song.full_clean() song.save() image = None if 'APIC:' in audio.tags: image = audio.tags['APIC:'].data else: if 'PIC:' in audio.tags: image = audio.tags['PIC:'].data if image: with open(libraryPath + str(song.id) + ".jpg", 'wb') as img: img.write(image) os.rename(uploadPath + file, libraryPath + str(song.id) + ".mp3") except ValidationError: pass return HttpResponse(status=201) return render_to_response('establishment/library/add.html', {}, context_instance=RequestContext(request))