Hitung video dalam Daftar Putar Youtube

12

Tantangan

Diberikan daftar putar Youtube, tampilkan jumlah video di dalamnya.

I / O

Daftar putar akan diberikan sebagai URL; misalnya, https://www.youtube.com/playlist?list=PL_3jnZNPYn7qUatgDYBS5NShkfXoehSRC(ini adalah daftar putar yang dikirim seorang teman untuk mencoba membuat saya mendengarkan K-Pop karena dia terobsesi dengan itu dan saya tidak menyukainya: P)

Tautan ke daftar putar adalah dari formulir https://www.youtube.com/playlist?list=<id>. Masukan adalah URL, bukan ID.

Outputnya menjadi bilangan bulat tunggal yang menunjukkan berapa banyak video dalam daftar putar ini. Anda dapat menampilkan jumlah total video atau jumlah video yang tidak dihapus, mana yang lebih cocok untuk Anda.

Uji Kasus

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

Jangan ragu untuk menambahkan lebih banyak kasus uji.

HyperNeutrino
sumber
6
Angkat topi untuk menemukan cara terselubung meminta orang membuatkan Anda perpustakaan untuk menghitung video di daftar putar YouTube.
Stevoisiak
2
Saya baru saja menahan keinginan untuk menambahkan daftar putar rickroll. Atau daftar putar "Dank Memes".
CAD97
Di luar topik: Saya akan lebih tertarik dengan daftar cara semua video saluran youtube yang ditawarkan. Kode sumber sepertinya tidak memasukkan ini secara alami.
phil294
@ Belauhirn Itu ide yang menarik. Mungkin Anda bisa membuat tantangan tentang itu.
HyperNeutrino

Jawaban:

9

05AB1E , 22 byte

Mengasumsikan bahwa URL dilewatkan tanpa itu https://.

Kode:

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

Menggunakan penyandian 05AB1E . Tidak dapat dicoba online, karena akses internet.

Penjelasan:

.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 

Inilah yang saya dapatkan ketika menjalankan di baris perintah:

masukkan deskripsi gambar di sini

Adnan
sumber
1
Baris perintah macam apa itu? Saya belum pernah melihatnya sebelumnya.
Okx
2
@Okx Ini lebih ringan
Adnan
Bagaimana cara kerjanya?
Stevoisiak
@StevenVascellaro Terima kasih atas pengingatnya, saya telah menambahkan penjelasan.
Adnan
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))

Simpan ke something.scaladan jalankan oleh scala something.scala {url}.

masukkan deskripsi gambar di sini

Aria Ax
sumber
6

JS (ES6), 68 byte

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

Tempelkan ini ke konsol Anda di youtube.com untuk mencoba:

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

sumber
6

MATL , 15 byte

Terima kasih kepada Hyper Neutrino karena menemukan kesalahan, sekarang diperbaiki.

Xi'wner">\n'XXn

Inputnya adalah string yang diapit dengan tanda kutip tunggal. Outputnya adalah jumlah video yang tidak terhapus.

Berikut ini adalah contoh yang dijalankan dengan dua kasus uji. Pada 13 Juni 2017 jumlah video yang belum dihapus dalam daftar putar masing-masing adalah 12 dan 1.

masukkan deskripsi gambar di sini

Bagaimana itu bekerja

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
Luis Mendo
sumber
Ha, regex pintar!
rubik
Apa yang Anda gunakan untuk menangkap layar?
Matt
@Matt LICEcap untuk Windows
Luis Mendo
Pertanyaan: Bagaimana jika saya membuat daftar putar yang disebut "wner"? Apakah ini masih berfungsi?
HyperNeutrino
@HyperNeutrino Poin bagus. Saya sudah memperbaikinya. BTW, jumlah video dalam daftar pertama telah berubah
Luis Mendo
4

bash + curl + gnu grep, 32 byte

Akhirnya memberi Golf Code kesempatan:

curl -s $1|grep -Po \\d+(?= vid)
  • Gunakan curl -suntuk mengunduh tanpa output tambahan.
  • Pipa output ke grep (perl regex) yang akan menampilkan hanya pertandingan
    • Cocokkan angka pertama yang menghasilkan "vid"

Ini golf dari bagaimana saya akan melakukan ini secara praktis.

Sudo Bash
sumber
Pengiriman pertama yang bagus!
HyperNeutrino
3

PowerShell, 55 Bytes

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

Telusuri ke situs. Konversikan objek menjadi string yang merupakan sumber html. Pisahkan string yang memiliki nomor sebelumnya "vid" dengan regex.

Logika bekerja dengan kedua test case.

Mat
sumber
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
Davide Spataro
sumber