有没有办法获得完全随机的YouTube频道?

问题描述 投票:0回答:1

我做了一个Lua脚本(roblox)项目,旨在获得一个完全随机的YouTube频道,即使没有订阅者。我还想使用 HttpService:GetAsync(频道的链接) 获取频道的订阅者计数,而不是 YouTube API。

有没有办法获得完全随机的 YouTube 频道? (我的英语很差,抱歉。)(我使用了语法校正器。)

已经进行了各种尝试,包括创建随机 ID 函数、使用 https://www.generatorslist.com/random/websites/random-youtube-channel 以及搜索替代网站。尽管做出了这些努力,但尚未找到获得完全随机的 YouTube 频道的解决方案。

尽管使用 string.sub() 来查找订阅者数量,但有时它会返回 nil 或其他字符串,并且尚未找到获取频道订阅者的解决方案。

youtube-data-api roblox-studio
1个回答
0
投票

由于 YouTube 上数据的结构和可访问性,获得真正随机的 YouTube 频道(尤其是在不使用 YouTube API 的情况下)会带来重大挑战。但是,考虑到限制,我可以提供一些建议和潜在的方法来实现您正在寻找的目标:

1.随机查找 YouTube 频道

如果不使用 YouTube API,访问随机 YouTube 频道本质上会变得很棘手,因为 YouTube 不容易提供随机访问频道的方法。您之前使用随机 ID 函数和第三方生成器的尝试很有创意,但通常可能会导致 ID 无效或随机性有限。这里有一些想法:

  • 使用第三方服务:正如您提到的,使用像https://www.generatorslist.com这样的服务可能是一种方法,但随机性和覆盖范围可能并不全面。
  • 网页抓取:不建议这样做,并且可能违反 YouTube 的服务条款,但从技术上讲,您可以抓取 YouTube 的频道链接。这种方法通常不可靠并且存在法律风险。
  • 随机视频和通道提取:从随机视频生成器(或一组已知的视频 ID)开始,并从这些视频中提取通道 ID。这有点有限,但更有可能产生有效的结果。

2.无需 API 即可提取订阅者数量

在不使用 YouTube API 并仅依靠对频道页面的 HTTP 请求的情况下提取订阅者数量是很困难的。以下是原因和一些可能的解决方案:

  • HTML 页面结构:YouTube 的 HTML 页面结构可能会频繁更改,因此如果不定期更新解析逻辑,就很难可靠地解析订阅者计数等数据。
  • 不一致和错误:正如您所经历的,使用字符串函数(如
    string.sub()
    )解析 HTML 可能容易出错,并且如果页面结构发生变化或数据呈现方式发生变化,则可能并不总是有效。

一种更稳定的方法,虽然仍然不理想并且可能违反 YouTube 的条款,但可以使用服务器端脚本环境来:

  • 向频道的 YouTube 页面发出 HTTP GET 请求。
  • 使用强大的 HTML 解析库而不是基本的字符串函数来提取订阅者计数。
  • 妥善处理异常和错误,以避免数据不完整。

Lua 中的示例代码片段

这是一个基本示例,说明如何使用通用 HTTP 请求在 Lua 中构建此结构。注意,这并没有直接使用 Roblox 的 HttpService,而是说明了这个概念:

local http = require("socket.http")
local ltn12 = require("ltn12")

function getSubscriberCount(channelUrl)
    local response = {}
    local success, statusCode, headers = http.request {
        url = channelUrl,
        sink = ltn12.sink.table(response)
    }

    if success then
        local pageContent = table.concat(response)
        -- This pattern might need to be updated based on YouTube's current page layout
        local subscriberCount = string.match(pageContent, 'subscriberCountText":%{"simpleText":"(%d+) subscribers"}')
        return subscriberCount
    else
        print("Failed to fetch data: HTTP status code", statusCode)
        return nil
    end
end

-- Example usage
local url = "https://www.youtube.com/channel/CHANNEL_ID"
local subscribers = getSubscriberCount(url)
print("Subscriber count:", subscribers)

最后注意事项

强烈建议使用 YouTube 的官方 API,既方便使用又符合 YouTube 的政策。它确保您可以访问准确和最新的信息,而无需担心违反服务条款或处理网络抓取方法的脆弱性。

© www.soinside.com 2019 - 2024. All rights reserved.