Làm cách nào để tìm nguồn cấp RSS kênh trên YouTube?


13

YouTube chính thức hỗ trợ nguồn cấp dữ liệu RSS của kênh , nhưng tôi đang gặp khó khăn nghiêm trọng trong việc tìm kiếm nguồn cấp. Sử dụng URL kênh không thể ít nhất là trong Thunderbird. Firefox dường như hiện không thể phát hiện nguồn cấp dữ liệu (trước đây thường hoạt động, nhưng đôi khi không đáng tin cậy và làm mới trang là cần thiết) và Google Chrome không hỗ trợ RSS gốc theo hiểu biết của tôi.

một phương pháp để tạo nguồn cấp dữ liệu theo cách thủ công , nhưng nó có thể không còn hoạt động ( channel-external-iddường như không tồn tại trong nguồn của tất cả các kênh, channel_idthay vào đó):

  1. Xem mã nguồn của trang
  2. Tìm văn bản sau: channel-external-id
  3. Lấy giá trị cho phần tử đó
  4. Thay thế giá trị đó vào URL này:

https://www.youtube.com/feeds/videos.xml?channel_id=UCBcRF18a7Qf58cCRy5xuWwQ

kênh ví dụ: https://www.youtube.com/user/SesameStreet/ideo

Câu trả lời:


9

Trên thực tế những gì bạn đề xuất, chính xác là địa chỉ nguồn cấp RSS, mặc dù nó đã được thay đổi một chút so với quy trình được mô tả trong câu hỏi của bạn, có chuỗi chính xác để tìm kiếm externalId.

Với kịch bản

Đoạn script sau sẽ trích xuất URL nguồn cấp dữ liệu và sẽ xuất nó ra bàn điều khiển:

for (var arrScripts = document.getElementsByTagName('script'), i = 0; i < arrScripts.length; i++) {
    if (arrScripts[i].textContent.indexOf('externalId') != -1) {
        var channelId = arrScripts[i].textContent.match(/\"externalId\"\s*\:\s*\"(.*?)\"/)[1];
        var channelRss = 'https://www.youtube.com/feeds/videos.xml?channel_id=' + channelId;
        var channelTitle = document.title.match(/\(?\d*\)?\s?(.*?)\s\-\sYouTube/)[1];
        console.log('The rss feed of the channel \'' + channelTitle + '\' is:\n' + channelRss);
        break;
    }
}

Kết quả:

The rss feed of the channel 'Sesame Street' is:
https://www.youtube.com/feeds/videos.xml?channel_id=UCoookXUzPciGrEZEXmh4Jjg

Lưu nó ở đâu

  1. Bạn có thể sử dụng nó dưới dạng tập lệnh người dùng ( ví dụ với Greasemonkey hoặc Tampermonkey ).
  2. Bạn có thể sử dụng nó như một Bookmarklet .
  3. Sao chép mã và dán nó vào bảng điều khiển dành cho nhà phát triển.

Lưu ý: Nếu bạn chọn tùy chọn 1hoặc 2- sẽ thuận tiện hơn khi thay thế console.loglệnh bằng alertđể nhận cửa sổ bật lên thay vì thông báo tới bảng điều khiển.


Thủ công

  1. Mở trang kênh YouTube mong muốn.
  2. Mở view-sourcetrang đó (một trong những điều sau đây):
    • Ctrl+ U.
    • Nhấp chuột phải -> View page source.
    • Thêm view-source:vào đầu url trong thanh địa chỉ.
  3. Tìm kiếm thuật ngữ externalId
  4. Ngay sau đó, sẽ có một mã ngẫu nhiên (id kênh) ở dạng: UCoookXUzPciGrEZEXmh4Jjg
  5. Thêm mã bạn tìm thấy như một hậu tố https://www.youtube.com/feeds/videos.xml?channel_id=và bây giờ đó là nguồn cấp RSS của bạn cho kênh đó.

rssUrltiếc là không tồn tại trong nguồn của mọi kênh, ví dụ view-source:https://www.youtube.com/channel/UC0YagOInbZxj10gaWwb1Nag/view-source:https://www.youtube.com/channel/UCEBTfxJ13zkpZVbZTF3aukg.
dùng598527

1
Tôi sẽ kiểm tra và cải thiện câu trả lời của tôi, cảm ơn
arieljannai

Tôi đã tìm thấy điều này, tôi sẽ cập nhật câu trả lời của tôi sau ngày hôm nay!
arieljannai

@ user598527 Đã cập nhật :)
arieljannai

Cảm ơn bạn đã cập nhật. Tôi chưa thể cài đặt bookmarklet bằng phương pháp tiêu chuẩn (kéo mã vào thanh công cụ bookmark). Dựa trên kinh nghiệm của tôi bắt đầu bằng bookmarklets javascript:, ít nhất điều đó sẽ giúp với quy trình cài đặt trình duyệt.
dùng598527

1

Phương pháp bạn đề cập hiện đang hoạt động, nhưng chỉ trong một số trường hợp, văn bản chính xác cần tìm là dữ liệu-kênh-bên ngoài-id và nó hoạt động trong IE11, ví dụ. Dễ dàng hơn nhiều để có được <channel-id>URL trong kênh, được tạo như thế này

https://www.youtube.com/channel/<channel-id>

Dù sao, có một cách được hỗ trợ lâu hơn để làm điều này và nó phản ánh thực tế rằng YouTube thích bạn đăng ký các kênh bạn muốn liên kết thông qua nguồn cấp dữ liệu RSS.

Nếu bạn đã đăng ký kênh mà bạn đang tìm kiếm nguồn cấp RSS, bạn có thể tìm thấy kênh được liệt kê trong trang Quản lý đăng ký của mình , ở đó bạn có thể cuộn xuống cho đến khi bạn tìm thấy nút "Xuất trong trình đọc RSS" : nhấp vào nút đó sẽ cho phép bạn tải xuống một tệp XML có tên kênh và nguồn cấp RSS cho tất cả các kênh đã đăng ký.

Những nguồn cấp RSS đó sẽ luôn được cập nhật nếu có gì đó thay đổi trong cách YouTube hiển thị chúng.


0

Mở bàn điều khiển với F12và thực hiện

window["ytInitialData"].metadata.channelMetadataRenderer.rssUrl

Tôi gặp TypeError: window.ytInitialData.metadata is undefined lỗi khi chạy trong Firefox. Lệnh này có nên hoạt động trên tất cả các trang của một kênh không?
dùng598527

Hmm, có vẻ như nó không hoạt động trên tất cả các trang
goweon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.