Exemplo n.º 1
0
def theme(request):
    if request.method == 'POST':

        if request.POST.get('movie'):
            name = request.POST['movie']
            type = 'movie'

        elif request.POST.get('drama'):
            name = request.POST['drama']
            type = 'drama'

        elif request.POST.get('musical'):
            name = request.POST['musical']
            type = 'musical'

        Theme.objects.filter(type=type).delete()

        #1
        parts = urlparse(
            'https://www.music-flo.com/api/search/v2/search?searchType=ALBUM&sortType=ACCURACY&timestamp=1597825544349')
        qs = dict(parse_qsl(parts.query))
        qs['keyword'] = name + 'ost'
        parts = parts._replace(query=urlencode(qs))
        new_url = urlunparse(parts)

        u = urlopen(new_url)

        data = u.read()
        j = json.loads(data)
        obj = j['data']['list'][0]['list']

        if len(obj) == 1:
            album_id = obj[0]['id']

        else:
            for i in range(len(obj)) :
                if obj[i]['representationArtist']['name'] == 'Various Artists':
                    album_id = obj[i]['id']

        urls = str('https://www.music-flo.com/api/meta/v1/album/' + str(album_id) + '/track?timestamp=1597824172509')
        u_d = urlopen(urls)
        data_d = u_d.read()
        j_d = json.loads(data_d)
        obj = j_d['data']['list']

        for i in range(len(obj)):
            song = obj[i]['name'] if 'name' in obj[i].keys() else '노래 제목을 알 수 없습니다.'
            album = obj[i]['album']['title'] if ('album' in obj[i].keys()) & ('title' in obj[i]['album'].keys()) else '앨범명을 알 수 없습니다.'
            artist = obj[i]['representationArtist']['name'] if ('representationArtist' in obj[i].keys()) & ('name' in obj[i]['representationArtist'].keys()) else '아티스트를 알 수 없습니다.'
            id = obj[i]['id'] if 'id' in obj[i].keys() else ''

            urls = str('https://www.music-flo.com/api/meta/v1/track/' + str(id) + '?timestamp=1597824526912')
            u_d = urlopen(urls)
            data_d = u_d.read()
            j_d = json.loads(data_d)
            obj_d = j_d['data']

            if 'data' in j_d.keys():
                obj_d = j_d['data']
                lyrics = obj_d['lyrics'] if 'lyrics' in obj_d.keys() else '가사정보가 없습니다.'
                try:
                    release = datetime.datetime.strptime(obj_d['album']['releaseYmd'], '%Y%m%d').strftime('%Y.%m.%d') if ('album' in obj_d.keys()) & ('releaseYmd' in obj_d['album'].keys()) else '앨범 발매연도를 알 수 없습니다.'
                except:
                    release = obj_d['album']['releaseYmd']
                genre = obj_d['album']['genreStyle'] if ('album' in obj_d.keys()) & ('genreStyle' in obj_d['album'].keys()) else '장르정보가 없습니다.'
            else:
                lyrics = '가사정보가 없습니다.'
                release = '앨범 발매연도를 알 수 없습니다.'
                genre = '장르정보가 없습니다.'

            tmp = Theme(song=song, album=album, artist=artist, lyrics=lyrics, release=release, genre=genre, type=type)
            tmp.save()

        contents = Theme.objects.filter(type=type)

        return render(request, 'theme.html', {'contents': contents, 'keyword': name})