유튜브 재생 목록에서 비디오를 계산


12

도전

Youtube 재생 목록이 있으면 그 안에있는 비디오 수를 출력하십시오.

I / O

재생 목록은 URL로 제공됩니다. 예를 들어 https://www.youtube.com/playlist?list=PL_3jnZNPYn7qUatgDYBS5NShkfXoehSRC(이것은 친구가 K-Pop에 집착하고 마음에 들지 않기 때문에 K-Pop을 듣기 위해 보내려고 한 재생 목록입니다. P)

재생 목록에 대한 링크는 형식 https://www.youtube.com/playlist?list=<id>입니다. 입력은 ID가 아닌 URL입니다.

출력은이 재생 목록에있는 비디오 수를 나타내는 단일 정수입니다. 총 비디오 수 또는 삭제되지 않은 비디오 수 중 어느 쪽이 더 골프인지를 출력 할 수 있습니다.

테스트 사례

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

더 많은 테스트 사례를 추가하십시오.


6
YouTube 재생 목록에서 동영상을 계산하도록 라이브러리를 만들도록 사람들에게 요청하는 가장 멋진 방법을 찾아 주셔서 감사합니다.
Stevoisiak

2
방금 릭롤 재생 목록을 추가하려는 충동에 저항했습니다. 또는 "Dank Memes"재생 목록.
CAD97

주제 외 : YouTube 채널이 제공하는 모든 동영상을 나열하는 방법에 더 관심이 있습니다. 소스 코드는 이것을 자연스럽게 포함하지 않는 것 같습니다.
phil294 2016 년

@Blauhirn 흥미로운 아이디어입니다. 아마도 당신은 그것에 대해 도전 할 수 있습니다.
HyperNeutrino

답변:


9

05AB1E , 22 바이트

URL 이 . 없이 전달 되었다고 가정 합니다 https://.

암호:

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

05AB1E 인코딩을 사용합니다 . 인터넷 연결로 인해 온라인으로 시도 할 수 없습니다.

설명:

.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 

이것이 커맨드 라인에서 실행될 때 얻는 것입니다.

여기에 이미지 설명을 입력하십시오


1
어떤 종류의 명령 줄입니까? 나는 전에 그것을 보지 못했다.
Okx

2
@ Okk 그것은 cmder입니다
Adnan

어떻게 작동합니까?
Stevoisiak

@StevenVascellaro 알림 주셔서 감사합니다, 나는 설명을 추가했습니다.
Adnan

6

스칼라 2.12, 138 바이트

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

에 저장하고에 something.scala의해 실행됩니다 scala something.scala {url}.

여기에 이미지 설명을 입력하십시오


6

JS (ES6), 68 바이트

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

이것을 시도하려면 youtube.com의 콘솔에 붙여 넣으십시오.

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

6

MATL , 15 바이트

실수를 찾아낸 Hyper Neutrino 에게 감사합니다 . 이제 수정되었습니다.

Xi'wner">\n'XXn

입력은 작은 따옴표로 묶인 문자열입니다. 출력은 삭제되지 않은 비디오 수입니다.

다음 은 두 가지 테스트 사례로 실행 되는 입니다. 2017 년 6 월 13 일 현재 재생 목록의 삭제되지 않은 비디오 수는 각각 12와 1입니다.

여기에 이미지 설명을 입력하십시오

작동 원리

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

하, 영리한 정규식!
rubik

화면 캡처에 무엇을 사용하고 있습니까?
Matt

Windows 용 @Matt LICEcap
Luis Mendo

질문 :라는 재생 목록을 만들면 어떻게 "wner"됩니까? 여전히 작동합니까?
HyperNeutrino 2016 년

@HyperNeutrino 좋은 지적입니다. 나는 그것을 고쳤다. BTW, 첫 번째 목록의 비디오 수가 변경되었습니다.
Luis Mendo

4

bash + curl + gnu grep, 32 바이트

마지막으로 코드 골프를 떠나다 :

curl -s $1|grep -Po \\d+(?= vid)
  • curl -s추가 출력없이 다운로드하는 데 사용 합니다.
  • 출력을 grep (perl regex)에 파이프하면 일치하는 항목 만 출력됩니다
    • "vid"로 시작하는 첫 번째 숫자와 일치

이것은 내가 실제로 어떻게 할 것인지에 달려 있습니다.


좋은 첫 제출!
HyperNeutrino

3

PowerShell, 55 바이트

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

사이트를 탐색하십시오. 객체를 html 소스 인 문자열로 변환하십시오. "vid"앞에 숫자가있는 문자열을 정규식으로 구문 분석하십시오.

논리는 두 테스트 사례 모두에서 작동합니다.


0

하스켈 161 바이트

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.