Порахуйте відео у списку відтворення в Youtube


12

Виклик

Давши список відтворення Youtube, виведіть у ньому кількість відео.

I / O

Список відтворення буде надано у вигляді URL-адреси; наприклад, https://www.youtube.com/playlist?list=PL_3jnZNPYn7qUatgDYBS5NShkfXoehSRC(це список відтворення, який друг прислав мені, щоб спробувати змусити мене слухати K-Pop, тому що вона одержима цим, і мені це не подобається: P)

Посилання на список відтворення має форму https://www.youtube.com/playlist?list=<id>. Вхід - це URL, а не ідентифікатор.

Вихід повинен бути єдиним цілим числом, яке вказує, скільки відео є в цьому списку відтворення. Ви можете вивести загальну кількість відео або кількість видалених відео, залежно від того, який із них буде більш гострим.

Випробування

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

Off topic: Мене більше зацікавить спосіб перерахувати всі відео, які може запропонувати канал YouTube. Здається, вихідний код не включає це природно.
phil294

@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
@Okx It cmder
Adnan

Як це працює?
Стевойасяк

@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

Вхід - це рядок, укладений одинарними лапками. Вихід - кількість невідомих відео.

Ось приклад запуску з двох тестових випадків. Станом на 13 червня 2017 року кількість відтворених відео у списках відтворення становить 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 LICEcap для Windows
Луїс Мендо

Запитання: Що робити, якщо я створю плейлист з назвою "wner"? Чи все одно це буде працювати?
HyperNeutrino

@HyperNeutrino Добре. Я це виправив. До речі, кількість відео в першому списку змінилася
Луїс Мендо

4

bash + curl + gnu grep, 32 байти

Нарешті, давши Code Golf:

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", за допомогою regex.

Логіка працює в обох тестових випадках.


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.