gpt4 book ai didi

c# - 从 YouTube 获取 FLV URL

转载 作者:行者123 更新时间:2023-12-03 03:10:35 26 4
gpt4 key购买 nike

有很多性质非常相似的问题,但到目前为止我还无法找到任何可以直接回答这个问题的内容。很多回复都包含“查看这个的源代码”并包含一个链接,不幸的是我正在努力分析这些链接中的源代码,所以我希望有人可以一步一步地给我一些东西。

这是我到目前为止所拥有的:

  1. 向最终用户请求链接(例如 www.youtube.com/watch?v=2FlgVN03fNM)
  2. 向 URL 发送 HTTP 请求,获取源代码。
  3. 对源进行正则表达式以查找一些信息(大概是一系列可以连接起来形成 FLV 链接的元素。
  4. 下载 FLV。
  5. 将 FLV 转换为 MP3 或您想要的任何格式。

我已经完成了步骤 1、2、5,它们都完全符合我的要求,但似乎对于如何执行步骤 3 缺乏明确性。有人可以打破吗这还进一步下降一点吗?示例:

  1. “XXXXXXXXX”的正则表达式
  2. 此行包含您需要的所有信息
  3. 将字符串按“YYY”拆分,获取元素列表
  4. 查找所有与“ZZZZZ”匹配的元素
  5. 使用这些元素创建 FLV 链接

这对我来说非常有用,如果可能的话,我希望使用 C# 或 PHP 来提取链接的步骤或非常简单的应用程序。

最佳答案

这是基于 Pafy 的更简洁的实现:

using System;
using System.Linq;
using HttpUtility = System.Web.HttpUtility;
using NameValueCollection = System.Collections.Specialized.NameValueCollection;
using WebClient = System.Net.WebClient;

class Program {
public static void Main(string[] args) {
string videoID = "2FlgVN03fNM";
string[] itagByPriority = {"5", "6", "34", "35"};

string videoUrl = "https://www.youtube.com/get_video_info?asv=3&el=detailpage&hl=en_US&video_id=" + videoID;
string encodedVideo = null;

using (var client = new WebClient()) {
encodedVideo = client.DownloadString(videoUrl);
}

NameValueCollection video = HttpUtility.ParseQueryString(encodedVideo);

string encodedStreamsCommaDelimited = video["url_encoded_fmt_stream_map"];
string[] encodedStreams = encodedStreamsCommaDelimited.Split(new char[]{','});
var streams = encodedStreams.Select(s => HttpUtility.ParseQueryString(s));

var streamsByPriority = streams.OrderBy(s => Array.IndexOf(itagByPriority, s["itag"]));
NameValueCollection preferredStream = streamsByPriority.LastOrDefault();

if (preferredStream != null) {
Console.WriteLine("{0}&signature={1}", preferredStream["url"], preferredStream["sig"]);
}
}
}

关于c# - 从 YouTube 获取 FLV URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21339176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com