Youtubeプレイリストの動画を数える


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>。入力はURLではなく、IDです。

出力は、このプレイリストにあるビデオの数を示す単一の整数です。ビデオの合計数または削除されていないビデオのいずれか、どちらかがあなたにとってよりゴルフ好きな方を出力できます。

テストケース

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

テストケースを追加してください。


6
YouTubeプレイリスト内の動画を数えるためのライブラリを作成するように人々に求める最も卑劣な方法を見つけるのは嫌です。
ステボイシアック

2
私はリックロールプレイリストを追加する衝動に抵抗しました。または「Dank Memes」プレイリスト。
CAD97

トピック外:YouTubeチャンネルが提供するすべての動画を一覧表示する方法にもっと興味があります。ソースコードにはこれが自然に含まれていないようです。
phil294

@Blauhirnそれは面白いアイデアです。たぶん、あなたはそれについて挑戦することができます。
ハイパーニュートリノ

回答:


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 

これは、コマンドラインで実行したときに得られるものです。

enter image description here


1
それはどのようなコマンドラインですか?私はそれを見たことがありません。
Okx

2
@Okxそれはcmderです
アドナン

どのように機能しますか?
ステボイシアック

@StevenVascellaroリマインダーをありがとう、説明を追加しました。
アドナン

6

Scala 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

入力は、単一引用符で囲まれた文字列です。出力は、削除されていないビデオの数です。

2つのテストケースで実行した例を次に示します。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

ハ、賢い正規表現!
ルービック

画面のキャプチャに何を使用していますか?
マット

@Matt LICEcap for Windows
ルイスメンドー

質問:プレイリストを作成すると"wner"どうなりますか?それでも動作しますか?
ハイパーニュートリノ

@HyperNeutrino良い点。修正しました。ところで、最初のリストのビデオの数が変更されました
ルイスメンドー

4

bash + curl + gnu grep、32バイト

最後に、Code Golfを試してみましょう。

curl -s $1|grep -Po \\d+(?= vid)
  • curl -s余分な出力なしでダウンロードするために使用します。
  • 出力をgrep(perl regex)にパイプし、一致のみを出力します
    • 「vid」で始まる最初の数字と一致します

これは、私がこれを実際に行う方法から得たものです。


素敵な最初の提出!
ハイパーニュートリノ

3

PowerShell、55バイト

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

サイトを閲覧します。オブジェクトをhtmlソースである文字列に変換します。正規表現で「vid」の前に数字がある文字列を解析します。

ロジックは両方のテストケースで動作します。


0

Haskell 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.