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)
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)
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)
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)