Beispiel #1
0
def music_list(page):
    lang_tags = MusicLangTag.query.all()
    style_tags = MusicStyleTag.query.all()
    theme_tags = MusicThemeTag.query.all()
    emotion_tags = MusicEmotionTag.query.all()
    scene_tags = MusicSceneTag.query.all()
    lid = int(request.args.get('lid', '0'))
    sid = int(request.args.get('sid', '0'))
    tid = int(request.args.get('tid', '0'))
    eid = int(request.args.get('eid', '0'))
    scid = int(request.args.get('scid', '0'))
    p = {'lid': lid, 'sid': sid, 'tid': tid, 'eid': eid, 'scid': scid}
    musics = Music.query
    if lid != 0:
        musics = musics.filter_by(lang_id=lid)
    if sid != 0:
        musics = musics.filter_by(style_id=sid)
    if tid != 0:
        musics = musics.filter_by(theme_id=tid)
    if eid != 0:
        musics = musics.filter_by(emotion_id=eid)
    if scid != 0:
        musics = musics.filter_by(scene_id=scid)
    # 把按条件过滤得到的最终结果排序分页
    musics = musics.order_by(Music.addtime.desc()).paginate(page=page, per_page=8)
    for mitem in musics.items:
        mitem.audio_url = musicAudiosSet.url(filename=mitem.audiofile)
        mitem.cover_url = musicCoversSet.url(filename=mitem.coverfile)
    return render_template('home/music_list.html', lang_tags=lang_tags,
                           style_tags=style_tags, theme_tags=theme_tags,
                           emotion_tags=emotion_tags, scene_tags=scene_tags, musics=musics,
                           p=p)
Beispiel #2
0
def music_index():
    # 获取形象首页的推荐音乐
    recmd_musics = Music.query.filter(Music.recommed == 2).order_by(Music.clicknum.desc()).all()[0:4]
    for ritem in recmd_musics:
        ritem.cover_url = musicCoversSet.url(filename=ritem.coverfile)
        ritem.audio_url = musicAudiosSet.url(filename=ritem.audiofile)
    # 获取最新发布的音乐
    newest_musics = Music.query.order_by(Music.addtime.desc()).all()[0:4]
    for nitem in newest_musics:
        nitem.cover_url = musicCoversSet.url(filename=nitem.coverfile)
        nitem.audio_url = musicAudiosSet.url(filename=nitem.audiofile)
    # 获取最火的音乐
    hotest_musics = Music.query.order_by(Music.clicknum.desc()).all()[0:8]
    for hitem in hotest_musics:
        hitem.cover_url = musicCoversSet.url(filename=hitem.coverfile)
        hitem.audio_url = musicAudiosSet.url(filename=hitem.audiofile)
    return render_template('home/music_index.html', recmd_musics=recmd_musics,
                           newest_musics=newest_musics, hotest_musics=hotest_musics)
Beispiel #3
0
def music_listen(id):
    music = Music.query.get_or_404(id)
    music.audio_url = musicAudiosSet.url(filename=music.audiofile)
    music.cover_url = musicCoversSet.url(filename=music.coverfile)
    music.lrc_url = musicLrcsSet.url(filename=music.lrcfile)
    lrc_path = musicLrcsSet.path(filename=music.lrcfile)
    lrcf = open(file=lrc_path, mode='r', encoding='utf8')
    music.lrc = lrcf.readlines()
    return render_template("admin/music_listen.html", music=music)
Beispiel #4
0
def music_listen(id):
    # 获取当前音乐对象
    music = Music.query.get_or_404(id)
    # 更新播放量
    music.clicknum += 1
    db.session.add(music)
    db.session.commit()
    # 获取当前音乐文件的url
    music.audio_url = musicAudiosSet.url(music.audiofile)
    music.cover_url = musicAudiosSet.url(music.coverfile)
    # 读取歌词文件
    lrc_path = musicLrcsSet.path(filename=music.lrcfile)
    lrcf = open(file=lrc_path, mode='r', encoding='utf8')
    music.lrc = []
    for lrcline in lrcf.readlines():
        lrcline = lrcline.strip('\n')
        # print(lrcline)
        idx = lrcline.find(']') + 1  # 分割时间戳和歌词内容
        timestamp = lrcline[0:idx]
        lrccontent = lrcline[idx:]
        tidx = timestamp.find(':')  # 分割时间戳内的分钟数和秒数
        midum = timestamp[tidx - 2:tidx]
        second = timestamp[tidx + 1:tidx + 3]
        if midum == 'ti' or midum == 'ar' or midum == 'al' or midum == 'by':
            continue
        else:
            timestamp = int(midum) * 60 + int(second)  # 把时间戳转换成秒数
        # 把处理好的一行歌词添加到列表
        music.lrc.append((timestamp, lrccontent))
    # 获取推荐音乐和url
    recmm_lang_musics = Music.query.filter(Music.lang_id == music.lang_id,
                                           Music.id != music.id).all()[0:6]
    for recmm_lang in recmm_lang_musics:
        recmm_lang.cover_url = musicCoversSet.url(filename=recmm_lang.coverfile)
    # 按音乐流派推荐
    recmm_style_musics = Music.query.filter(Music.style_id == music.style_id,
                                            Music.id != music.id).all()[0:6]
    for recmm_style in recmm_style_musics:
        recmm_style.cover_url = musicCoversSet.url(filename=recmm_style.coverfile)
    # 按音乐主题推荐
    recmm_theme_musics = Music.query.filter(Music.theme_id == music.theme_id,
                                            Music.id != music.id).all()[0:6]
    for recmm_theme in recmm_theme_musics:
        recmm_theme.cover_url = musicCoversSet.url(filename=recmm_theme.coverfile)
    # 按音乐心情推荐
    recmm_emotion_musics = Music.query.filter(Music.emotion_id == music.emotion_id,
                                              Music.id != music.id).all()[0:6]
    for recmm_emotion in recmm_emotion_musics:
        recmm_emotion.cover_url = musicCoversSet.url(filename=recmm_emotion.coverfile)
    # 按音乐场景推荐
    recmm_scene_musics = Music.query.filter(Music.scene_id == music.scene_id,
                                            Music.id != music.id).all()[0:6]
    for recmm_scene in recmm_scene_musics:
        recmm_scene.cover_url = musicCoversSet.url(filename=recmm_scene.coverfile)
    # 按音乐歌手推荐
    recmm_singer_musics = Music.query.filter(Music.singer == music.singer,
                                             Music.id != music.id).all()[0:6]
    for recmm_singer in recmm_singer_musics:
        recmm_singer.cover_url = musicCoversSet.url(filename=recmm_singer.coverfile)
    # 获取评论列表,以及用户头像
    music_comments = MusicComment.query.filter_by(music_id=music.id). \
        order_by(MusicComment.addtime.desc()).all()
    for cmmt in music_comments:
        cmmt.userface_url = photosSet.url(filename=cmmt.user.name + '/' + cmmt.user.face)
    return render_template('home/music_listen.html', form=MusicCommentForm(),
                           music=music, recmm_lang_musics=recmm_lang_musics,
                           recmm_style_musics=recmm_style_musics,
                           recmm_theme_musics=recmm_theme_musics,
                           recmm_emotion_musics=recmm_emotion_musics,
                           recmm_scene_musics=recmm_scene_musics,
                           recmm_singer_musics=recmm_singer_musics,
                           music_comments=music_comments)