本文共 3195 字,大约阅读时间需要 10 分钟。
我们之前开发了一个简单的高潮提取器工具,现在将其打造成一个适合所有人使用的单页面网站。这个网站将允许用户轻松上传音乐文件,自动提取出高潮部分。虽然不需要复杂的后端技术,但使用Django这样的Web开发框架可以帮助我们快速完成开发并实现高效管理。
在开始开发之前,请确保你已经安装了Python环境。如果还没有安装,可以参考下面的命令进行安装:
pip install Django
安装完成后,我们需要安装一个额外的库pychorus,用于音乐文件的高潮提取。安装命令如下:
pip install pychorus
接下来,我们将创建一个新的Django项目。进入你希望存放项目文件的目录,运行以下命令:
django-admin startproject yinyue30
这将创建一个新的项目目录结构。然后,我们需要创建一个新的应用来存放我们的提取逻辑。进入项目目录,运行:
python manage.py startapp extractor
此时你的项目结构应该如下:
yinyue30/├── extractor/│ ├── __init__.py│ ├── models.py│ ├── views.py│ ├── urls.py│ └── templates/│ └── extractor/│ └── index.html├── manage.py└── media/ └── 2023/ └── 12/ └── 31/ └── file.mp3
尽管我们不需要复杂的模型,但为了方便文件管理,可以创建一个简单的File模型。添加以下内容到extractor/models.py:
from django.db import modelsclass File(models.Model): file = models.FileField( upload_to='media/%Y/%m/%d/', max_upload_size=5242880, verbose_name='上传的文件' ) def __str__(self): return self.file.name
接下来,我们需要创建一个视图来处理文件上传和高潮提取。修改extractor/views.py:
from django.shortcuts import render, redirectfrom extractor.models import Filefrom pychorus import PyChorusimport osdef upload_file(request): if request.method == 'POST': file = request.FILES.get('file') if not file: return redirect('index') if file.size > 5242880: return redirect('index') # 文件大小超出限制 filename = os.path.join('media', request.POST.get('title', '未命名')) save_path = os.path.join(filename, os.path.basename(file.name)) destination = open(os.path.join(filename, file.name), 'wb') for chunk in file: destination.write(chunk) destination.flush() destination.close() file = File( file=destination, uploaded_by='用户' # 根据需求修改上传者字段 ) file.save() return redirect('index') return render(request, 'extractor/index.html')def extract_chorus(request, file_id): file = File.objects.get(id=file_id) if not file: return redirect('index') chorus = PyChorus(file.path) if not chorus.chorus_found: return redirect('index') # 提取高潮部分并下载 output_path = os.path.join('media', 'extracted_chorus.mp3') chorus.export(chorus.start, chorus.end, output_path, format='mp3') return download_file(request, output_path) 在extractor/urls.py中添加路由配置:
from django.urls import pathfrom extractor import viewsurlpatterns = [ path('upload/', views.upload_file, name='upload'), path('extract/ /', views.extract_chorus, name='extract'),] 然后更新项目的主路由yinyue30/urls.py:
from django.urls import pathfrom extractor import viewsurlpatterns = [ path('extract/', views.upload_file, name='index'), path('extract/ /', views.extract_chorus, name='extract'),] 创建和迁移数据库,运行以下命令:
python manage.py makemigrationspython manage.py migrate
最后,运行项目并访问页面:
python manage.py runserver
访问 http://127.0.0.1:8000,你将看到一个简单的上传页面。上传音乐文件后,系统会自动提取高潮部分,并提供下载链接。
接下来,我们需要完善文件上传功能,增加错误处理,优化用户体验,并进行更多功能扩展。期待你的关注和反馈!
转载地址:http://kmdg.baihongyu.com/