382 lines
13 KiB
Python
382 lines
13 KiB
Python
"""
|
||
存量数据迁移:为 18682237028 账户导入历史 Track 记录
|
||
"""
|
||
from django.core.management.base import BaseCommand
|
||
from apps.users.models import User
|
||
from apps.music.models import Track
|
||
|
||
OSS_BASE = 'https://qy-rtc.oss-cn-beijing.aliyuncs.com'
|
||
DEFAULT_COVER = f'{OSS_BASE}/music/defaults/Capybara.png'
|
||
|
||
HISTORICAL_TRACKS = [
|
||
{
|
||
'title': '卡皮巴拉快乐趴',
|
||
'audio_url': f'{OSS_BASE}/music/generated/卡皮巴拉快乐趴.mp3',
|
||
'mood': 'custom',
|
||
'lyrics': (
|
||
'今天不上班\n'
|
||
'卡皮巴拉躺平在沙滩\n'
|
||
'小小太阳帽\n'
|
||
'草帽底下梦见一整片菜园 (好香哦)\n'
|
||
'一口咔咔青菜\n'
|
||
'两口嘎嘎胡萝卜\n'
|
||
'吃着吃着打个嗝\n'
|
||
'"我是不是一只蔬菜发动机?"\n'
|
||
'\n'
|
||
'卡皮巴拉啦啦啦\n'
|
||
'快乐像病毒一样传染呀\n'
|
||
'你一笑 它一哈\n'
|
||
'全场都在哈哈哈\n'
|
||
'卡皮巴拉吧啦吧\n'
|
||
'烦恼直接按下删除呀\n'
|
||
'一起躺 平平趴\n'
|
||
'世界马上变得好融化\n'
|
||
'\n'
|
||
'同桌小鸭鸭\n'
|
||
'排队要跟它合个影\n'
|
||
'河马举个牌\n'
|
||
'"主播别跑看这边一点" (比个耶)\n'
|
||
'它说"别催我\n'
|
||
'我在加载快乐进度条"\n'
|
||
'百分之一百满格\n'
|
||
'"叮——情绪已经自动修复"\n'
|
||
'\n'
|
||
'卡皮巴拉啦啦啦\n'
|
||
'快乐像病毒一样传染呀\n'
|
||
'你一笑 它一哈\n'
|
||
'全场都在哈哈哈\n'
|
||
'卡皮巴拉吧啦吧\n'
|
||
'烦恼直接按下删除呀\n'
|
||
'一起躺 平平趴\n'
|
||
'世界马上变得好融化\n'
|
||
'\n'
|
||
'作业山太高\n'
|
||
'先发一张可爱自拍\n'
|
||
'配文写:\n'
|
||
'"今天也被温柔的小动物拯救了嗷" (冲呀)\n'
|
||
'心情掉电时\n'
|
||
'就喊出那个暗号——\n'
|
||
'"三二一 一起喊"\n'
|
||
'"卡皮巴拉 拯救我!"\n'
|
||
'\n'
|
||
'卡皮巴拉啦啦啦\n'
|
||
'快乐像病毒一样传染呀\n'
|
||
'你一笑 它一哈\n'
|
||
'全场都在哈哈哈\n'
|
||
'卡皮巴拉吧啦吧\n'
|
||
'烦恼直接按下删除呀\n'
|
||
'小朋友 大朋友\n'
|
||
'跟着一起摇摆唱起歌\n'
|
||
'卡皮巴拉 卡皮巴拉\n'
|
||
'明天继续来给你治愈呀'
|
||
),
|
||
},
|
||
{
|
||
'title': '专注时刻',
|
||
'audio_url': f'{OSS_BASE}/music/generated/专注时刻_1770368018.mp3',
|
||
'mood': 'chill',
|
||
'lyrics': (
|
||
'专注时刻我来了,\n'
|
||
'咔咔在思考,世界多美妙。\n'
|
||
'咔咔咔咔,静心感受每一秒,\n'
|
||
'在这宁静中,找到内心的微笑。\n'
|
||
'(水花声...)'
|
||
),
|
||
},
|
||
{
|
||
'title': '书房咔咔茶',
|
||
'audio_url': f'{OSS_BASE}/music/generated/书房咔咔茶_1770637242.mp3',
|
||
'mood': 'chill',
|
||
'lyrics': (
|
||
'在书房角落里,我找到了安静\n'
|
||
'一杯茶香飘来,思绪开始飞腾\n'
|
||
'书页轻轻翻动,知识在心间\n'
|
||
'咔咔我在这里,享受这宁静\n'
|
||
'咔咔咔咔,独自享受\n'
|
||
'书中的世界,如此美妙\n'
|
||
'咔咔咔咔,心无旁骛\n'
|
||
'沉浸在知识的海洋,自在飞翔\n'
|
||
'窗外微风轻拂,阳光洒满书桌\n'
|
||
'咔咔我在这里,与文字共舞\n'
|
||
'每个字每个句,都像是音符\n'
|
||
'奏出心灵的乐章,如此动听\n'
|
||
'咔咔咔咔,独自享受\n'
|
||
'书中的世界,如此美妙\n'
|
||
'咔咔咔咔,心无旁骛\n'
|
||
'沉浸在知识的海洋,自在飞翔\n'
|
||
'(翻书声...风铃声...咔咔的呼吸声...)'
|
||
),
|
||
},
|
||
{
|
||
'title': '出去撒点野',
|
||
'audio_url': f'{OSS_BASE}/music/generated/出去撒点野_1770367350.mp3',
|
||
'mood': 'happy',
|
||
'lyrics': (
|
||
'咔咔咔咔去探险,草地上打个滚\n'
|
||
'阳光洒满身,心情像彩虹\n'
|
||
'出去撒点野,自由自在\n'
|
||
'咔咔的快乐,谁也挡不住\n'
|
||
'风吹过树梢,鸟儿在歌唱\n'
|
||
'咔咔的笑声,回荡在山岗\n'
|
||
'(咔咔的喘息声...)'
|
||
),
|
||
},
|
||
{
|
||
'title': '夜深了窗外下着小雨盖着被子准备入睡',
|
||
'audio_url': f'{OSS_BASE}/music/generated/夜深了窗外下着小雨盖着被子准备入睡_1770627405.mp3',
|
||
'mood': 'sleepy',
|
||
'lyrics': (
|
||
'窗外细雨轻敲窗,\n'
|
||
'被窝里温暖如常。\n'
|
||
'咔咔咔咔,梦乡近了,\n'
|
||
'小雨伴我入眠床。\n'
|
||
'(雨声和咔咔的呼吸声...)'
|
||
),
|
||
},
|
||
{
|
||
'title': '惊喜咔咔派',
|
||
'audio_url': f'{OSS_BASE}/music/generated/惊喜咔咔派_1770642290.mp3',
|
||
'mood': 'random',
|
||
'lyrics': '',
|
||
},
|
||
{
|
||
'title': '慵懒的午后泡在温泉里听水声发呆什么都不想',
|
||
'audio_url': f'{OSS_BASE}/music/generated/慵懒的午后泡在温泉里听水声发呆什么都不想_1770627905.mp3',
|
||
'mood': 'chill',
|
||
'lyrics': '',
|
||
},
|
||
{
|
||
'title': '洗脑咔咔舞',
|
||
'audio_url': f'{OSS_BASE}/music/generated/洗脑咔咔舞_1770631313.mp3',
|
||
'mood': 'happy',
|
||
'lyrics': (
|
||
'咔咔咔咔来跳舞,魔性旋律不停步\n'
|
||
'跟着节奏摇摆身,洗脑神曲不放手\n'
|
||
'重复的旋律像魔法,让人听了就上瘾\n'
|
||
'咔咔咔咔的魔力,谁也挡不住\n'
|
||
'洗脑咔咔舞,洗脑咔咔舞\n'
|
||
'魔性的旋律,让人停不下来\n'
|
||
'洗脑咔咔舞,洗脑咔咔舞\n'
|
||
'跟着咔咔一起跳,快乐无边\n'
|
||
'每个节拍都精准,咔咔的舞步最迷人\n'
|
||
'不管走到哪里去,都能听到这魔音\n'
|
||
'咔咔的舞蹈最独特,让人看了就想学\n'
|
||
'洗脑神曲的魅力,就是让人忘不掉\n'
|
||
'洗脑咔咔舞,洗脑咔咔舞\n'
|
||
'魔性的旋律,让人停不下来\n'
|
||
'洗脑咔咔舞,洗脑咔咔舞\n'
|
||
'跟着咔咔一起跳,快乐无边\n'
|
||
'咔咔咔咔,魔性洗脑舞\n'
|
||
'重复的节奏,快乐的旋律\n'
|
||
'洗脑咔咔舞,洗脑咔咔舞\n'
|
||
'让快乐无限循环,直到永远'
|
||
),
|
||
},
|
||
{
|
||
'title': '洗脑神曲',
|
||
'audio_url': f'{OSS_BASE}/music/generated/洗脑神曲_1770368465.mp3',
|
||
'mood': 'happy',
|
||
'lyrics': (
|
||
'咔咔咔咔,洗脑神曲来啦\n'
|
||
'洗脑洗脑,咔咔的节奏\n'
|
||
'跟着咔咔,摇摆身体\n'
|
||
'洗脑洗脑,咔咔的旋律\n'
|
||
'(咔咔的笑声...)'
|
||
),
|
||
},
|
||
{
|
||
'title': '温泉发呆曲',
|
||
'audio_url': f'{OSS_BASE}/music/generated/温泉发呆曲_1770639509.mp3',
|
||
'mood': 'chill',
|
||
'lyrics': (
|
||
'懒懒的午后阳光暖,\n'
|
||
'\n'
|
||
'温泉里我泡得欢。\n'
|
||
'\n'
|
||
'水声潺潺耳边响,\n'
|
||
'\n'
|
||
'什么都不想干。\n'
|
||
'\n'
|
||
'咔咔咔咔,发呆真好,\n'
|
||
'\n'
|
||
'懒懒的我,享受这秒。\n'
|
||
'\n'
|
||
'水波轻摇,心也飘,\n'
|
||
'\n'
|
||
'咔咔世界,别来无恙。\n'
|
||
'\n'
|
||
'想着云卷云又舒,\n'
|
||
'\n'
|
||
'温泉里的我多舒服。\n'
|
||
'\n'
|
||
'时间慢慢流,不急不徐,\n'
|
||
'\n'
|
||
'咔咔的梦,轻轻浮。\n'
|
||
'\n'
|
||
'咔咔咔咔,发呆真好,\n'
|
||
'\n'
|
||
'懒懒的我,享受这秒。\n'
|
||
'\n'
|
||
'水波轻摇,心也飘,\n'
|
||
'\n'
|
||
'咔咔世界,别来无恙。\n'
|
||
'\n'
|
||
'(水声渐渐远去...)'
|
||
),
|
||
},
|
||
{
|
||
'title': '温泉里的咔咔',
|
||
'audio_url': f'{OSS_BASE}/music/generated/温泉里的咔咔_1770730481.mp3',
|
||
'mood': 'chill',
|
||
'lyrics': (
|
||
'懒懒的午后阳光暖,\n'
|
||
'\n'
|
||
'温泉里我泡得欢。\n'
|
||
'\n'
|
||
'水声潺潺耳边响,\n'
|
||
'\n'
|
||
'什么都不想干。\n'
|
||
'\n'
|
||
'咔咔咔咔,悠然自得,\n'
|
||
'\n'
|
||
'水波荡漾心情悦。\n'
|
||
'\n'
|
||
'咔咔咔咔,闭上眼,\n'
|
||
'\n'
|
||
'享受这刻的宁静。\n'
|
||
'\n'
|
||
'想象自己是条鱼,\n'
|
||
'\n'
|
||
'在水里自由游来游去。\n'
|
||
'\n'
|
||
'没有烦恼没有压力,\n'
|
||
'\n'
|
||
'只有我和这温泉池。\n'
|
||
'\n'
|
||
'咔咔咔咔,悠然自得,\n'
|
||
'\n'
|
||
'水波荡漾心情悦。\n'
|
||
'\n'
|
||
'咔咔咔咔,闭上眼,\n'
|
||
'\n'
|
||
'享受这刻的宁静。\n'
|
||
'\n'
|
||
'(水花声...)\n'
|
||
'\n'
|
||
'咔咔,慵懒午后,\n'
|
||
'\n'
|
||
'水中世界最逍遥。'
|
||
),
|
||
},
|
||
{
|
||
'title': '睡个好觉',
|
||
'audio_url': f'{OSS_BASE}/music/generated/睡个好觉_1770371532.mp3',
|
||
'mood': 'sleepy',
|
||
'lyrics': (
|
||
'闭上眼睛 深呼吸\n'
|
||
'星星点灯 梦里飞\n'
|
||
'咔咔咔咔 好梦来\n'
|
||
'轻轻摇摆 梦中海\n'
|
||
'(轻柔的风声...)'
|
||
),
|
||
},
|
||
{
|
||
'title': '草地上的咔咔',
|
||
'audio_url': f'{OSS_BASE}/music/generated/草地上的咔咔_1770640911.mp3',
|
||
'mood': 'happy',
|
||
'lyrics': (
|
||
'阳光洒满地 绿草如茵间\n'
|
||
'咔咔跑起来 心情像飞燕\n'
|
||
'风儿轻拂过 花香满径边\n'
|
||
'快乐如此简单 每一步都新鲜\n'
|
||
'咔咔咔咔 快乐咔咔\n'
|
||
'草地上的我 自由自在\n'
|
||
'阳光下的舞 轻松又欢快\n'
|
||
'咔咔咔咔 快乐咔咔\n'
|
||
'无忧无虑的我 最爱这蓝天\n'
|
||
'蝴蝶翩翩起 蜜蜂忙采蜜\n'
|
||
'咔咔我最棒 每个瞬间都美丽\n'
|
||
'朋友在旁边 笑声传千里\n'
|
||
'这世界多美好 有你有我有草地\n'
|
||
'咔咔咔咔 快乐咔咔\n'
|
||
'草地上的我 自由自在\n'
|
||
'阳光下的舞 轻松又欢快\n'
|
||
'咔咔咔咔 快乐咔咔\n'
|
||
'无忧无虑的我 最爱这蓝天\n'
|
||
'(草地上咔咔的笑声...)'
|
||
),
|
||
},
|
||
{
|
||
'title': '阳光灿烂的日子在草地上奔跑撒欢心情超级好',
|
||
'audio_url': f'{OSS_BASE}/music/generated/阳光灿烂的日子在草地上奔跑撒欢心情超级好_1770639287.mp3',
|
||
'mood': 'happy',
|
||
'lyrics': '',
|
||
},
|
||
{
|
||
'title': '泡个热水澡',
|
||
'audio_url': f'{OSS_BASE}/music/generated/泡个热水澡_1770366369.mp3',
|
||
'mood': 'chill',
|
||
'lyrics': (
|
||
'躺在浴缸里 水汽氤氲起\n'
|
||
'闭上眼感受 温暖包围我\n'
|
||
'咔咔咔咔 我是咔咔\n'
|
||
'泡澡放松 快乐不假\n'
|
||
'(水花声...)'
|
||
),
|
||
},
|
||
]
|
||
|
||
|
||
class Command(BaseCommand):
|
||
help = '为 18682237028 账户导入历史 Track 记录(15首)'
|
||
|
||
def add_arguments(self, parser):
|
||
parser.add_argument(
|
||
'--dry-run',
|
||
action='store_true',
|
||
help='只显示将要创建的数据,不实际写入数据库',
|
||
)
|
||
|
||
def handle(self, *args, **options):
|
||
dry_run = options['dry_run']
|
||
phone = '18682237028'
|
||
|
||
try:
|
||
user = User.objects.get(phone=phone)
|
||
except User.DoesNotExist:
|
||
self.stderr.write(self.style.ERROR(f'用户 {phone} 不存在,请先创建账户'))
|
||
return
|
||
|
||
created_count = 0
|
||
skipped_count = 0
|
||
|
||
for item in HISTORICAL_TRACKS:
|
||
exists = Track.objects.filter(user=user, title=item['title']).exists()
|
||
if exists:
|
||
skipped_count += 1
|
||
self.stdout.write(f' 跳过(已存在): {item["title"]}')
|
||
continue
|
||
|
||
if dry_run:
|
||
self.stdout.write(f' [dry-run] 将创建: {item["title"]}')
|
||
created_count += 1
|
||
continue
|
||
|
||
Track.objects.create(
|
||
user=user,
|
||
title=item['title'],
|
||
lyrics=item['lyrics'],
|
||
audio_url=item['audio_url'],
|
||
cover_url=DEFAULT_COVER,
|
||
mood=item['mood'],
|
||
is_default=False,
|
||
generation_status='completed',
|
||
)
|
||
created_count += 1
|
||
self.stdout.write(f' 创建成功: {item["title"]}')
|
||
|
||
prefix = '[dry-run] ' if dry_run else ''
|
||
self.stdout.write(self.style.SUCCESS(
|
||
f'\n{prefix}完成!创建 {created_count} 首,跳过 {skipped_count} 首'
|
||
))
|