Đếm các video trong Danh sách phát Youtube


12

Thử thách

Đưa ra danh sách phát Youtube, xuất số lượng video trong đó.

Tôi / O

Danh sách phát sẽ được cung cấp dưới dạng URL; ví dụ: https://www.youtube.com/playlist?list=PL_3jnZNPYn7qUatgDYBS5NShkfXoehSRC(đây là danh sách phát mà một người bạn đã gửi cho tôi để cố gắng cho tôi nghe K-Pop vì cô ấy bị ám ảnh bởi nó và tôi không thích nó: P)

Liên kết đến danh sách phát có dạng https://www.youtube.com/playlist?list=<id>. Đầu vào là URL, không phải ID.

Đầu ra là một số nguyên duy nhất cho biết có bao nhiêu video trong danh sách phát này. Bạn có thể xuất tổng số video hoặc số lượng video không bị xóa, tùy theo video nào phù hợp với bạn hơn.

Các trường hợp thử nghiệm

https://www.youtube.com/playlist?list=PL_3jnZNPYn7qUatgDYBS5NShkfXoehSRC -> 12
https://www.youtube.com/playlist?list=PLIEbITAtGBebWGyBZQlkiMXwt30WqG9Bd -> 114 OR 1

Hãy thêm các trường hợp thử nghiệm.


6
Ngỡ ngàng vì đã tìm ra cách lén lút nhất để yêu cầu mọi người biến bạn thành thư viện để đếm video trong danh sách phát YouTube.
Stevoisiak

2
Tôi chỉ chống lại sự thôi thúc để thêm một danh sách nhạc rickroll. Hoặc danh sách phát "Dank Memes".
CAD97

Chủ đề ngoài lề: Tôi sẽ quan tâm nhiều hơn đến cách liệt kê tất cả các video mà kênh youtube cung cấp. Mã nguồn dường như không bao gồm điều này một cách tự nhiên.
phil294

@Blauhirn Đó là một ý tưởng thú vị. Có lẽ bạn có thể thực hiện một thách thức về điều đó.
HyperNeutrino

Câu trả lời:


9

05AB1E , 22 byte

Giả định rằng các URL được truyền mà không cần sự https://.

Mã số:

.w’®Ã-ƒ¢’¡`"<li>"¡2è#¬

Sử dụng mã hóa 05AB1E . Không thể thử trực tuyến, vì truy cập internet.

Giải trình:

.w                       # Receive implicit input and read all data from the url
  ’®Ã-ƒ¢’¡               # Split on the string "header-details"
          `              # Flatten once which leaves the last element on top of the stack
           "<li>"¡       # Split on the string "<li>"
                  2è     # Get the third element
                    #    # Split on spaces
                     ¬   # Retrieve the first element 

Đây là những gì tôi nhận được khi chạy trong dòng lệnh:

nhập mô tả hình ảnh ở đây


1
Đó là loại dòng lệnh nào? Tôi chưa từng thấy nó trước đây.
Okx

2
@Okx Đó là cmder
Adnan

Làm thế nào nó hoạt động?
Stevoisiak

@StevenVascellaro Cảm ơn bạn đã nhắc nhở, tôi đã thêm một lời giải thích.
Ad Nam

6

Scala 2.12, 138 byte

print("""<li>.*?</li><li>(\d+).*?</li>""".r.findFirstMatchIn(scala.io.Source.fromURL(args(0),"utf-8").getLines.mkString("")).get.group(1))

Lưu nó vào something.scalavà chạy theo scala something.scala {url}.

nhập mô tả hình ảnh ở đây


6

JS (ES6), 68 byte

x=>fetch(x).then(x=>x.text()).then(x=>alert(x.match(/(\d+) vi/)[1]))

Dán cái này vào bảng điều khiển của bạn trên youtube.com để thử:

(x=>fetch(x).then(x=>x.text()).then(x=>alert(x.match(/(\d+) vi/)[1])))(prompt("Enter the URL"))

6

MATL , 15 byte

Cảm ơn Hyper Neutrino vì đã tìm ra lỗi, giờ đã sửa.

Xi'wner">\n'XXn

Đầu vào là một chuỗi kèm theo dấu ngoặc đơn. Đầu ra là số lượng video không bị xóa.

Đây là một ví dụ chạy với hai trường hợp thử nghiệm. Kể từ ngày 13 tháng 6 năm 2017, số lượng video chưa được xóa trong danh sách phát lần lượt là 12 và 1.

nhập mô tả hình ảnh ở đây

Làm thế nào nó hoạt động

Xi          % Read string containing URL and get contents as a string
'wner">\n'  % Push this string
XX          % Regexp matching. Gives a cell array with the matched strings
n           % Number of elements. Implicitly display

Ha, regex thông minh!
rubik

Bạn đang sử dụng gì để chụp màn hình?
Matt

@ Matt LICEcap cho Windows
Luis Mendo

Câu hỏi: Điều gì xảy ra nếu tôi tạo một danh sách nhạc được gọi là "wner"? Nó vẫn sẽ hoạt động chứ?
HyperNeutrino

@HyperNeutrino Điểm tốt. Tôi đã sửa nó. BTW, số lượng video trong danh sách đầu tiên đã thay đổi
Luis Mendo

4

bash + curl + gnu grep, 32 byte

Cuối cùng, cho Code Golf đi:

curl -s $1|grep -Po \\d+(?= vid)
  • Sử dụng curl -sđể tải xuống mà không cần bất kỳ đầu ra thêm.
  • Đặt đầu ra cho grep (perl regex) sẽ chỉ xuất kết quả khớp
    • Khớp với số đầu tiên tiến hành "vid"

Đây là golf từ cách tôi sẽ làm điều này thực tế.


Đẹp đầu tiên nộp!
HyperNeutrino

3

PowerShell, 55 byte

"$(iwr "$args")"-match'(?s)(\d+) vid'>$null;$matches[1]

Duyệt đến trang web. Chuyển đổi đối tượng thành một chuỗi là nguồn html. Phân tích chuỗi có số trước "vid" với regex.

Logic hoạt động với cả hai trường hợp thử nghiệm.


0

Haskell 161 byte

import Network.Curl.Download
import qualified Data.ByteString.Char8 as B
z=do u<-getLine;(Right b)<-openURI u;putStrLn$show$length$B.findSubstrings(B.pack"<tr")b
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.