【问题标题】:How can I change URL format?如何更改 URL 格式?
【发布时间】:2023-03-26 00:25:01
【问题描述】:

我正在使用ytdl-core,它提供了这个 URL(音频):

https://r2---sn-gwpa-w5py.googlevideo.com/videoplayback?expire=1612552132&ei=ZEMdYNnJDumPz7sPyrSLmAw&ip=49.36.246.217&id=o-AFQLS1cSUJ6_bXBjMOIiWk1NuIYTMUTVu4rmliPZmJCS&itag=251&source=youtube&requiressl=yes&mh=VD&mm=31%2C29&mn=sn-gwpa-w5py%2Csn-gwpa-qxaz&ms=au%2Crdu&mv=m&mvi=2&pl=21&initcwndbps=225000&vprv=1&mime=audio%2Fwebm&ns=nxhNYqBZK92ToigY08JRZjEF&gir=yes&clen=230633&dur=18.961&lmt=1524503096692151&mt=1612530050&fvip=2&keepalive=yes&c=WEB&n=UIc0qqVvrMQOjPVkP&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhAObqQA5vFYy6rJ3O3J4zswofNj2NFZOrwMF05p_PgWg9AiAmnde3njBRfvPmW_2VVA0YO1aLWQl0V3STGayuqgBRKA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgFTqy7Ng9zxhQY4GM4vP1BooPeHOf50PTikb59C67voACIGDybTTJBdLkp9lUx_-ZLdCulG_y3TH6iMhBbAn1AZR_&ratebypass=yes

但我想要这样的 .mp3 结尾:

https://r2---sn-gwpa-w5py.googlevideo.com/13%20Beethoven%20-%20Fur%20Elise.mp3

最后我想.mp3

这可能吗?我正在使用 JavaScript 框架(后端使用 NodeJS,前端使用 React-Native)。

【问题讨论】:

  • 欢迎。请参阅stackoverflow.com/help/how-to-ask,然后在您的问题中添加一些代码。
  • 你问为什么URL不是以.mp3结尾或者你想输出音频格式为.mp3
  • 我都想知道@uingtea

标签: javascript node.js react-native ytdl


【解决方案1】:

不,这是不可能的。 Google 决定为其视频和音频资源提供哪些 URL。

【讨论】:

    【解决方案2】:

    这是不可能的。您无法更改 Google 为您提供的 URL。你唯一能做的就是使用他们给你的 URL。

    【讨论】:

      【解决方案3】:

      没有.mp3,音频使用.m4a.weba,需要ffmpeg转换成.mp3

      【讨论】:

        【解决方案4】:

        使用视频 ID,您可以使用 YouTube API 来查找视频的标题。然后,您可以获取 URL 的来源并附加曲目标题。

        如果文件名只需要视频的名称,下载后只需将文件名设置为getVideoTitle的结果即可。

        const url = new URL('https://r2---sn-gwpa-w5py.googlevideo.com/videoplayback?expire=1612552132&ei=ZEMdYNnJDumPz7sPyrSLmAw&ip=49.36.246.217&id=o-AFQLS1cSUJ6_bXBjMOIiWk1NuIYTMUTVu4rmliPZmJCS&itag=251&source=youtube&requiressl=yes&mh=VD&mm=31%2C29&mn=sn-gwpa-w5py%2Csn-gwpa-qxaz&ms=au%2Crdu&mv=m&mvi=2&pl=21&initcwndbps=225000&vprv=1&mime=audio%2Fwebm&ns=nxhNYqBZK92ToigY08JRZjEF&gir=yes&clen=230633&dur=18.961&lmt=1524503096692151&mt=1612530050&fvip=2&keepalive=yes&c=WEB&n=UIc0qqVvrMQOjPVkP&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhAObqQA5vFYy6rJ3O3J4zswofNj2NFZOrwMF05p_PgWg9AiAmnde3njBRfvPmW_2VVA0YO1aLWQl0V3STGayuqgBRKA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgFTqy7Ng9zxhQY4GM4vP1BooPeHOf50PTikb59C67voACIGDybTTJBdLkp9lUx_-ZLdCulG_y3TH6iMhBbAn1AZR_&ratebypass=yes');
        
        const api = 'https://www.googleapis.com/youtube/v3';
        const apiKey = '<API_KEY>';
        
        const getVideoPath = videoId => `${api}/videos?id=${videoId}&key=${apiKey}&part=snippet`;
        const getVideoInfo = async (videoId) => fetch(getVideoPath(videoId));
        
        const getVideoTitle = async (videoId) => {
          const response = await getVideoInfo(videoId);
          const info = await response.json();
          const { items: [ { snippet: { title } } ] } = info;
          return title;
        };
        
        const main = async () => {
          let title = null;
          try {
            title = await getVideoTitle('dQw4w9WgXcQ');
          } catch (err) {
            console.log('Please supply a valid API key!');
          }
          
          // Fallback: If API key is valid, title should not be null
          title = title || 'Rick Astley - Never Gonna Give You Up (Video)';
          const newUrl = `${url.origin}/${encodeURIComponent(title)}.mp3`;
        
          console.log(newUrl);
        
          const query = Object.fromEntries(url.search.substring(1).split('&')
            .map(pair => pair.split('=').map(v => decodeURIComponent(v))));
        
          console.log(query); // Nothing of interest...
        };
        
        main();
        .as-console-wrapper { top: 0; max-height: 100% !important; }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-02
          • 2021-03-23
          • 2017-01-30
          • 2017-03-10
          • 1970-01-01
          相关资源
          最近更新 更多