如何在Django App中即时将Pafy音频文件转换为mp3

时间:2018-10-07 09:41:04

标签: django pafy

我正在使用Django和pafy制作一个Youtube到mp3下载器应用程序,

很久以来,我在两个问题上陷入困境,

  1. Pafy默认情况下提供webm和mp4a我想将它们转换为mp3文件,而无需将其下载到我的服务器,这可能吗?我可以更改mp3文件的缩略图吗?

  2. pafy提供的链接不是它们开始在浏览器中播放的下载链接。如何将它们转换为可下载的链接,我尝试了一些组合,但始终会出错。

这是我的文件

Views.py

class download(generic.View):
    template_name = 'download_mp3.html'
    def get(self, request, *args, **kwargs):
        return render(request, self.template_name)
    def post(self, request, *args, **kwargs):
        url = request.POST['url']
        url = url_corrector(url)  # Converting the urls in a format that is supported by pafy.
        video = pafy.new(url)  # creates a pafy object for a given youtube url.
        stream_audio = video.audiostreams  # only audio
        audio_streams = list()  # list of all the dash audio formats(only audio)
        for a in stream_audio:
            audio_streams.append(
                [a.bitrate, a.extension, filesizeformat(a.get_filesize()), a.url + "&title=" + video.title])

        return render(request, self.template_name,
                      {'url': request.POST['url'],
                       'title': video.title, 
                        'thumb': video.bigthumbhd, 
                       'duration': video.duration, 'views': video.viewcount,
                       'stream_audio': audio_streams})

urls.py

urlpatterns = [
    path('', views.download.as_view(), name='youtube_to_mp3')

]

download.html

 <table class="table table-hover text-center">
            <p align="center">Audio Only</p>
            <thead>
            <tr class="text-center">

                <th class="text-center">Bitrate</th>
                <th class ="text-center">Extension</th>
                <th class="text-center">File Size</th>
                <th class="text-center">Download Link</th>
                <th class="text-center">Download </th>
            </tr>
            </thead> 
            <tbody>
            {% for file_size,bitrate,extension,url in stream_audio %}
                <tr>

                    <td>{{ file_size }}</td>
                    <td>{{ bitrate }} </td>
                    <td>{{ extension }}</td>
                    <td><a href="{{ url }}" download="{{ title }}.{{ extension }}"><span
                            class="glyphicon glyphicon-download-alt"></span> Download</a></td>
                    <td><a href="{{ download }} "></a> </td>
                    <!-- <td><a href="{{ download_url }} ">Direct</a> </td> -->
                        </tr>
            {% endfor %}
            </tbody>
        </table>

        </div>
    {% else %}

    {% endif %}

1 个答案:

答案 0 :(得分:0)

对不起,我在这里写这封信,我没有50个回购来写评论,所以我必须在这里写,只要他(Abhijeet pal)在这里回复,我将立即删除

嘿,我也在Django上制作YouTube,但我对下载部分感到震惊

<a href="{{ music_down.url }}" download="{{ music_down.filename }}">
  <input class="btn btn-danger" type="button" value="Download">
</a>

它在迷你播放器的黑色窗口中打开,当我尝试下载时,它没有显示保存为"videoplayback.mp4"的视频的标题?