diff --git a/MANIFEST.in b/MANIFEST.in
index 1f84b76..9e0cef4 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,2 +1 @@
-# Include the license file
-include LICENSE README.rst
+include LICENSE README.rst doc/screenshot.png
diff --git a/README.rst b/README.rst
index cf121f4..0f31f78 100644
--- a/README.rst
+++ b/README.rst
@@ -1,36 +1,39 @@
-=================================
-comp - Curses Online Media Player
-=================================
+===============================
+comp - Curses Omni Media Player
+===============================
This program is a curses front-end for mpv and youtube-dl.
-.. image:: https://ipfs.io/ipfs/QmVhz4F53Sym48kXC7vhDMFsfvJ7iL8gaQ1EgoQADJvuAB
+.. image:: doc/screenshot.png
Installation
------------
-Dependencies
-^^^^^^^^^^^^
+comp requires Python 3.5+ with ``curses`` module (only available on Unix-like
+OSes such as GNU/Linux and the BSDs) and ``libmpv``. It also depends on
+``python-mpv`` and ``youtube-dl`` but the setup program will automatically
+install them if they are missing.
-This program currently only runs on Python 3.5+ on operating systems that the
-``curses`` module is supported (i.e. Unix-like OS, e.g. GNU/Linux, macOS and
-the BSDs).
+Using pip
+^^^^^^^^^
-It also depends on ``youtube-dl`` and ``libmpv``. Both of those should be
-available in your operating system's repository, although it's more
-recommended to install ``youtube-dl`` using ``pip`` (currently most distros
-still use Python 2 as default so the command is something like ``pip3 install
-youtube-dl``).
+Python 2 is still the default on most distributions so the command would be
+``pip3 install comp``. You can use the ``--user`` flag to avoid system-wide
+installation.
-Installing comp
-^^^^^^^^^^^^^^^
+Using setup.py
+^^^^^^^^^^^^^^
-I will try to upload the program to PyPI when it's more completed but as of
-this moment, I'd suggest you to use ``git`` to get the software::
+To install the latest version or test the development branch (called
+``bachelor``, in contrast to ``master``), you'll need to do it manually::
git clone https://github.com/McSinyx/comp.git
cd comp
- sudo ./setup.py install
+ git checkout bachelor # usually master is synced with the PyPI repo
+ sudo ./setup.py install -e .
+
+Note ``setup.py`` uses ``setuptools`` which is a third-party module and can be
+install using ``pip3``.
Usage
-----
@@ -88,6 +91,8 @@ Keyboard control
+--------------+---------------------------------------------+
| ``d`` | Delete current entry |
+--------------+---------------------------------------------+
+| ``i`` | Insert playlist |
++--------------+---------------------------------------------+
| ``m``, ``M`` | Cycle through playing modes |
+--------------+---------------------------------------------+
| ``n`` | Repeat previous search |
@@ -120,8 +125,8 @@ Keyboard control
Configuration files
-------------------
-The system-wide configuration file is ``/etc/comp/settings.ini``, the
-user-specific one is ``~/.config/mpv/settings.ini``. Default configurations
+If not specified by the ``--config``, (user-specific) configuration file is
+``~/.config/mpv/settings.ini``. Default configurations
are listed below::
[comp]
diff --git a/comp b/comp
index dbf2d5d..076702b 100755
--- a/comp
+++ b/comp
@@ -1,6 +1,5 @@
#!/usr/bin/env python3
-#
-# comp - Curses Online Media Player
+# comp - Curses Omni Media Player
#
# comp is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -24,18 +23,20 @@ from argparse import ArgumentParser
from collections import deque
from configparser import ConfigParser
from functools import reduce
-from gettext import gettext as _, textdomain
+from gettext import bindtextdomain, gettext as _, textdomain
from os import makedirs
from os.path import abspath, dirname, expanduser, isfile
from threading import Thread
-from youtube_dl import YoutubeDL
from mpv import MPV
+from pkg_resources import resource_filename
+from youtube_dl import YoutubeDL
from omp import extract_info, Omp
# Init gettext
-textdomain('comp')
+bindtextdomain('omp', resource_filename('omp', 'locale'))
+textdomain('omp')
# Global constants
SYSTEM_CONFIG = '/etc/comp/settings.ini'
@@ -92,6 +93,8 @@ class Comp(Omp):
' ' if self.vid == 'no' else 'V')
adds(right.rjust(curses.COLS), curses.color_pair(12))
try:
+ self.played[self.playing]['duration'] = self.mp.osd.duration
+ self.print(self.played[self.playing])
left = ' {} / {} {} '.format(
self.mp.osd.time_pos, self.mp.osd.duration,
'|' if self.mp.pause else '>')
@@ -151,7 +154,7 @@ class Comp(Omp):
def _writeln(self, y, title, duration, attr):
title_len = curses.COLS-DURATION_COL_LEN-3
title = justified(title, title_len)
- duration = duration.ljust(DURATION_COL_LEN)
+ duration = (duration or '00:00:00').ljust(DURATION_COL_LEN)
self.scr.addstr(y, 0, ' {} {} '.format(title, duration), attr)
self.scr.refresh()
@@ -188,7 +191,7 @@ class Comp(Omp):
def __init__(self, entries, json_file, mode, mpv_vid, mpv_vo, ytdlf):
Omp.__init__(self, entries, lambda name, val: self.update_status(),
- json_file, mode, mpv_vo, mpv_vid, ytdlf)
+ json_file, mode, mpv_vid, mpv_vo, ytdlf)
curses.noecho()
curses.cbreak()
self.scr.keypad(True)
@@ -319,7 +322,7 @@ parser.add_argument('-e', '--extractor', default='youtube-dl',
choices=('json', 'mpv', 'youtube-dl'), required=False,
help=_("playlist extractor, default is youtube-dl"))
parser.add_argument('file', help=_("path or URL to the playlist to be opened"))
-parser.add_argument('-c', '--config', required=False,
+parser.add_argument('-c', '--config', default=USER_CONFIG, required=False,
help=_("path to the configuration file"))
parser.add_argument('--vid', required=False,
help=_("initial video channel. auto selects the default,\
@@ -333,32 +336,12 @@ parser.add_argument('-f', '--format', required=False, metavar='YTDL_FORMAT',
args = parser.parse_args()
entries = extract_info(args.file, args.extractor)
json_file = args.file if args.extractor == 'json' else ''
-
config = ConfigParser()
-if args.config is not None and isfile(args.config):
- config_file = args.config
-elif isfile(USER_CONFIG):
- config_file = USER_CONFIG
-else:
- config_file = SYSTEM_CONFIG
-config.read(config_file)
-
-if args.vid is not None:
- vid = args.vid
-else:
- vid = config.get('mpv', 'video', fallback='auto')
-
-if args.vo is not None:
- vo = args.vo
-else:
- vo = config.get('mpv', 'video-output', fallback=None)
-
+config.read(args.config)
+vid = args.vid or config.get('mpv', 'video', fallback='auto')
+vo = args.vo or config.get('mpv', 'video-output', fallback=None)
mode = config.get('comp', 'play-mode', fallback='play-current')
-
-if args.format is not None:
- ytdlf = args.format
-else:
- ytdlf = config.get('youtube-dl', 'format', fallback='best')
+ytdlf = args.format or config.get('youtube-dl', 'format', fallback='best')
with Comp(entries, json_file, mode, vid, vo, ytdlf) as comp:
c = comp.scr.getch()
@@ -399,7 +382,9 @@ with Comp(entries, json_file, mode, vid, vo, ytdlf) as comp:
if s: comp.json_file = s
try:
makedirs(dirname(abspath(comp.json_file)), exist_ok=True)
- with open(comp.json_file, 'w') as f: json.dump(comp.entries, f)
+ with open(comp.json_file, 'w') as f:
+ json.dump(comp.entries, f, ensure_ascii=False,
+ indent=2, sort_keys=True)
except:
errmsg = _("'{}': Can't open file for writing").format(
comp.json_file)
@@ -407,14 +392,25 @@ with Comp(entries, json_file, mode, vid, vo, ytdlf) as comp:
else:
comp.update_status(_("'{}' written").format(comp.json_file))
elif c == 100: # letter d
- i = comp.idx()
- if i + 1 < len(entries):
- comp.entries.pop(i)
- elif len(entries) > 1:
- comp.entries.pop(i)
- else:
- comp.entries = []
+ comp.entries.pop(comp.idx())
+ if 1 < len(comp.entries) - curses.LINES + 4 == comp.start:
+ comp.start -= 1
+ elif comp.idx() == len(comp.entries):
+ comp.y -= 1
comp.redraw()
+ elif c == 105: # letter i
+ extractor = comp.gets(_("Playlist extractor: "))
+ filename = comp.gets(_("Insert: "))
+ entries = extract_info(filename, extractor)
+ if entries is None:
+ comp.update_status(
+ _("'{}': Can't extract playlist").format(filename))
+ else:
+ bottom = comp.entries[comp.idx():]
+ comp.entries = comp.entries[:comp.idx()]
+ comp.entries.extend(entries)
+ comp.entries.extend(bottom)
+ comp.redraw()
elif c == 109: # letter m
comp.mode = MODES[(MODES.index(comp.mode) + 1) % 8]
comp.update_status()
@@ -422,9 +418,14 @@ with Comp(entries, json_file, mode, vid, vo, ytdlf) as comp:
comp.next_search()
elif c == 111: # letter o
extractor = comp.gets(_("Playlist extractor: "))
- comp.entries = extract_info(comp.gets(_("Open: ")), extractor)
- comp.start, comp.y = 0, 1
- comp.redraw()
+ filename = comp.gets(_("Open: "))
+ entries = extract_info(filename, extractor)
+ if entries is None:
+ comp.update_status(
+ _("'{}': Can't extract playlist").format(filename))
+ else:
+ comp.entries, comp.start, comp.y = entries, 0, 1
+ comp.redraw()
elif c == 112: # letter p
comp.mp.pause ^= True
elif c in (curses.KEY_UP, 107): # up arrow or letter k
diff --git a/doc/screenshot.png b/doc/screenshot.png
new file mode 100644
index 0000000..36b8564
Binary files /dev/null and b/doc/screenshot.png differ
diff --git a/omp/__init__.py b/omp/__init__.py
new file mode 100644
index 0000000..bc48ace
--- /dev/null
+++ b/omp/__init__.py
@@ -0,0 +1,24 @@
+# omp - Omni Media Player
+# This is a part of comp
+#
+# comp is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# comp program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with comp. If not, see .
+#
+# Copyright (C) 2017 Nguyễn Gia Phong
+
+"""Omni Media Player - an handy mpv front-end library for interactive
+control.
+"""
+
+from .ie import extract_info
+from .omp import Omp
diff --git a/omp/ie.py b/omp/ie.py
new file mode 100644
index 0000000..714819d
--- /dev/null
+++ b/omp/ie.py
@@ -0,0 +1,114 @@
+# ie.py - Omni Media Player infomation extractor
+# This is a part of comp
+#
+# comp is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# comp program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with comp. If not, see .
+#
+# Copyright (C) 2017 Nguyễn Gia Phong
+
+import json
+from os.path import abspath, expanduser, expandvars, isfile
+from time import gmtime, sleep, strftime
+
+from youtube_dl import YoutubeDL
+from mpv import MPV
+
+DEFAULT_ENTRY = {'filename': '', 'title': '', 'duration': '00:00:00',
+ 'error': False, 'playing': False, 'selected': False}
+YTDL_OPTS = {'quiet': True, 'default_search': 'ytsearch',
+ 'extract_flat': 'in_playlist'}
+
+
+def json_extract_info(filename):
+ """Return list of entries extracted from a file using json. If an
+ error occur during the extraction, return None.
+ """
+ try:
+ with open(filename) as f: raw_info, info = json.load(f), []
+ for i in raw_info:
+ e = DEFAULT_ENTRY.copy()
+ for k in e:
+ if k in i and isinstance(i[k], type(e[k])): e[k] = i[k]
+ info.append(e)
+ except:
+ return None
+ else:
+ return info
+
+
+def mpv_extract_info(filename):
+ """Return list of entries extracted from a path or URL using mpv. If
+ an error occur during the extraction, return None.
+ """
+ mp = MPV(ytdl=True, vid=False)
+ mp.play(filename)
+ while mp.duration is None:
+ sleep(0.25)
+ if mp.playback_abort: return None
+ info = {'filename': filename, 'title': mp.media_title.decode(),
+ 'duration': mp.osd.duration, 'error': False, 'playing': False,
+ 'selected': False}
+ mp.quit()
+ return [info]
+
+
+def ytdl_extract_info(filename):
+ """Return list of entries extracted from a path or URL using
+ youtube-dl. If an error occur during the extraction, return None.
+ """
+ with YoutubeDL(YTDL_OPTS) as ytdl:
+ try:
+ raw_info = ytdl.extract_info(filename, download=False)
+ except:
+ return None
+ info = raw_info.get('entries', [raw_info])
+ for i in info:
+ if 'webpage_url' in i:
+ i['filename'] = i['webpage_url']
+ elif (i['ie_key'] == 'Youtube'
+ or i['extractor'] == 'youtube'):
+ i['filename'] = 'https://youtu.be/' + i['id']
+ else:
+ i['filename'] = i['url']
+ if 'title' not in i:
+ try:
+ i['title'] = ytdl.extract_info(i['filename'],
+ download=False)['title']
+ except:
+ return None
+ if 'duration' not in i:
+ i['duration'] = '00:00:00'
+ elif isinstance(i['duration'], int):
+ i['duration'] = strftime('%H:%M:%S', gmtime(i['duration']))
+ for k in 'error', 'playing', 'selected': i.setdefault(k, False)
+ for k in i.copy():
+ if k not in DEFAULT_ENTRY: i.pop(k)
+ return info
+
+
+def extract_info(filename, extractor='youtube-dl'):
+ """Return list of entries extracted from a path or URL using
+ specified extractor. If an error occur during the extraction,
+ return None.
+
+ The extractor could be either 'json', 'mpv' or 'youtube-dl' and
+ fallback to 'youtube-dl'.
+ """
+ if isfile(expanduser(expandvars(filename))):
+ filename = abspath(expanduser(expandvars(filename)))
+ if extractor == 'json':
+ return json_extract_info(filename)
+ elif extractor == 'mpv':
+ return mpv_extract_info(filename)
+ else:
+ return ytdl_extract_info(filename)
diff --git a/omp/locale/vi/LC_MESSAGES/omp.mo b/omp/locale/vi/LC_MESSAGES/omp.mo
new file mode 100644
index 0000000..748c01b
Binary files /dev/null and b/omp/locale/vi/LC_MESSAGES/omp.mo differ
diff --git a/omp/locale/vi/LC_MESSAGES/omp.po b/omp/locale/vi/LC_MESSAGES/omp.po
new file mode 100644
index 0000000..7854a99
--- /dev/null
+++ b/omp/locale/vi/LC_MESSAGES/omp.po
@@ -0,0 +1,72 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR ORGANIZATION
+# FIRST AUTHOR , YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2017-04-05 11:00+0700\n"
+"PO-Revision-Date: 2017-04-06 22:29+0700\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: vi_VN\n"
+
+msgid "Curses Online Media Player"
+msgstr "Phần mềm chơi đa phương tiện trực tuyến sử dụng curses"
+
+msgid "play-current"
+msgstr "chơi-một"
+
+msgid "play-all"
+msgstr "chơi-tất-cả"
+
+msgid "play-selected"
+msgstr "chơi-đã-chọn"
+
+msgid "repeat-current"
+msgstr "lặp-một"
+
+msgid "repeat-all"
+msgstr "lặp-tất-cả"
+
+msgid "repeat-selected"
+msgstr "lặp-đã-chọn"
+
+msgid "shuffle-all"
+msgstr "ngẫu-nhiên-tất-cả"
+
+msgid "shuffle-selected"
+msgstr "ngẫu-nhiên-đã-chọn"
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Title"
+msgstr "Tiêu đề"
+
+msgid "Source"
+msgstr "Nguồn"
+
+msgid "Current size: {}x{}. Minimum size: {}x4."
+msgstr "Kích thước hiện tại: {}x{}. Kích thước tối thiểu: {}x4."
+
+msgid "Save playlist to [{}]:"
+msgstr "Lưu playlist tại [{}]:"
+
+msgid "'{}': Can't open file for writing"
+msgstr "'{}': Không mở được tệp để ghi"
+
+msgid "'{}' written"
+msgstr "'{}' đã ghi"
+
+msgid "path to playlist in JSON format"
+msgstr "đường dẫn đến playlist ở định dạng JSON"
+
+msgid "URL to an playlist on Youtube"
+msgstr "URL của playlist trên Youtube"
diff --git a/omp.py b/omp/omp.py
similarity index 64%
rename from omp.py
rename to omp/omp.py
index f9b4c91..a0d168c 100644
--- a/omp.py
+++ b/omp/omp.py
@@ -1,4 +1,4 @@
-# omp.py - comp library for playing and playlist management
+# omp.py - Omni Media Player meta object
# This is a part of comp
#
# comp is free software: you can redistribute it and/or modify
@@ -10,7 +10,6 @@
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
-
#
# You should have received a copy of the GNU Affero General Public License
# along with comp. If not, see .
@@ -22,8 +21,8 @@ from collections import deque
from itertools import cycle
from os.path import abspath, expanduser, expandvars, isfile
from random import choice
-from requests import head
from time import gmtime, sleep, strftime
+from urllib import request
from youtube_dl import YoutubeDL
from mpv import MPV, MpvFormat
@@ -34,79 +33,8 @@ YTDL_OPTS = {'quiet': True, 'default_search': 'ytsearch',
'extract_flat': 'in_playlist'}
-def extract_info(filename, extractor='youtube-dl'):
- """Return list of entries extracted from a path or URL using
- specified extractor.
-
- The extractor could be either 'json', 'mpv' or 'youtube-dl'. If it
- is not one of them or not specified, youtube-dl will be used.
- """
- def json_extract_info(filename):
- try:
- with open(filename) as f: raw_info = json.load(f)
- info = []
- for i in raw_info:
- e = DEFAULT_ENTRY.copy()
- for k in e:
- if k in i and isinstance(i[k], type(e[k])): e[k] = i[k]
- info.append(e)
- except:
- return []
- else:
- return info
-
- def mpv_extract_info(filename):
- mp = MPV(ytdl=True)
- mp.play(filename)
- while mp.duration is None:
- sleep(0.25)
- if mp.playback_abort: return []
- info = {'filename': filename, 'title': mp.media_title.decode(),
- 'duration': mp.osd.duration, 'error': False, 'playing': False,
- 'selected': False}
- mp.quit()
- return [info]
-
- def ytdl_extract_info(filename):
- with YoutubeDL(YTDL_OPTS) as ytdl:
- raw_info = ytdl.extract_info(filename, download=False)
- info = raw_info.get('entries', [raw_info])
- for i in info:
- if 'webpage_url' in i:
- i['filename'] = i['webpage_url']
- elif (i['ie_key'] == 'Youtube'
- or i['extractor'] == 'youtube'):
- i['filename'] = 'https://youtu.be/' + i['id']
- else:
- i['filename'] = i['url']
- if 'title' not in i:
- i['title'] = ytdl.extract_info(i['filename'],
- download=False)['title']
- if 'duration' not in i:
- i['duration'] = '00:00:00'
- elif isinstance(i['duration'], int):
- i['duration'] = strftime('%H:%M:%S', gmtime(i['duration']))
- for k in 'error', 'playing', 'selected': i.setdefault(k, False)
- for k in i.copy():
- if k not in DEFAULT_ENTRY: i.pop(k)
- return info
-
- try:
- if (extractor != 'youtube-dl' and head(filename).status_code >= 400
- and isfile(expanduser(expandvars(filename)))):
- filename = abspath(expanduser(expandvars(filename)))
- except:
- pass
- if extractor == 'json':
- return json_extract_info(filename)
- elif extractor == 'mpv':
- return mpv_extract_info(filename)
- else:
- return ytdl_extract_info(filename)
-
-
class Omp(object):
- """Meta object for playing and playlist management.
+ """Omni Media Player meta object.
Attributes:
entries (list): list of all tracks
@@ -174,7 +102,7 @@ class Omp(object):
pass
def next(self, force=False, backward=False):
- comp.play_backward = backward
+ self.play_backward = backward
if self.mp.idle_active:
self.play(force)
else:
diff --git a/setup.py b/setup.py
index c37f0bb..28fb21b 100755
--- a/setup.py
+++ b/setup.py
@@ -1,8 +1,7 @@
#!/usr/bin/env python3
-from os import walk
+from os import listdir
from os.path import join
-from sys import prefix
from setuptools import setup
@@ -11,8 +10,8 @@ with open('README.rst') as f:
setup(
name='comp',
- version='0.3.1',
- description=('Curses Online Media Player'),
+ version='0.3.2',
+ description=('Curses Omni Media Player'),
long_description=long_description,
url='https://github.com/McSinyx/comp',
author='Nguyễn Gia Phong',
@@ -29,16 +28,10 @@ setup(
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Topic :: Multimedia :: Sound/Audio :: Players',
- 'Topic :: Multimedia :: Video :: Display'
- ],
+ 'Topic :: Multimedia :: Video :: Display'],
keywords='youtube-dl mpv-wrapper curses console-application multimedia',
+ packages=['omp'],
install_requires=['python-mpv', 'youtube-dl'],
- data_files=[
- *((join(prefix, 'share', i[0]), [join(i[0], 'comp.mo')])
- for i in walk('locale') if i[2]),
- ('/etc/comp', ['settings.ini'])
- ],
- py_modules=['omp'],
+ package_data={'omp': ['locale/*/LC_MESSAGES/omp.mo']},
scripts=['comp'],
- platforms=['POSIX']
-)
+ platforms=['POSIX'])
diff --git a/test.json b/test.json
deleted file mode 100644
index 789f98c..0000000
--- a/test.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"filename": "https://youtu.be/JGwWNGJdvx8", "title": "Ed Sheeran - Shape of You [Official Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/weeI1G46q0o", "title": "DJ Khaled - I'm the One ft. Justin Bieber, Quavo, Chance the Rapper, Lil Wayne", "selected": false, "error": true, "playing": true, "duration": "00:00:00"}, {"filename": "https://youtu.be/PMivT7MJ41M", "title": "Bruno Mars - That\u2019s What I Like [Official Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/CTFtOOh47oo", "title": "French Montana - Unforgettable ft. Swae Lee", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/NLZRYQMLDW4", "title": "Kendrick Lamar - DNA.", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/FM7MFYoylVs", "title": "The Chainsmokers & Coldplay - Something Just Like This (Lyric)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/72UO0v5ESUo", "title": "Luis Fonsi, Daddy Yankee - Despacito (Audio) ft. Justin Bieber", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/D5drYkLiLI8", "title": "Kygo, Selena Gomez - It Ain't Me (with Selena Gomez) (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Zgmvg-zzctI", "title": "Lil Uzi Vert - XO TOUR Llif3 (Produced By TM88)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Um7pMggPnug", "title": "Katy Perry - Chained To The Rhythm (Official) ft. Skip Marley", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/xvZqHgFz51I", "title": "Future - Mask Off", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/8j9zMok6two", "title": "Miley Cyrus - Malibu (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/aatr_2MstrI", "title": "Clean Bandit - Symphony feat. Zara Larsson [Official Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/7F37r50VUTQ", "title": "ZAYN, Taylor Swift - I Don\u2019t Wanna Live Forever (Fifty Shades Darker)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/qFLhGq0060w", "title": "The Weeknd - I Feel It Coming ft. Daft Punk", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/5XK4v2fgMPU", "title": "KYLE - iSpy (feat. Lil Yachty) [Official Music Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/SC4xMk98Pdc", "title": "Post Malone - Congratulations ft. Quavo", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/VkXjvHfP3MM", "title": "Nicki Minaj, Drake, Lil Wayne - No Frauds", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/NGLxoKOvzu4", "title": "Jason Derulo - Swalla (feat. Nicki Minaj & Ty Dolla $ign) (Official Music Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Hm1YFszJWbQ", "title": "Migos - Slippery feat. Gucci Mane [Official Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Dst9gZkq1a8", "title": "Travis Scott - goosebumps ft. Kendrick Lamar", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/nfs8NYg7yQM", "title": "Charlie Puth - Attention [Official Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/dMK_npDG12Q", "title": "Lorde - Green Light", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/h--P8HzYZ74", "title": "Zedd, Alessia Cara - Stay (Lyric Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Xvjnoagk6GU", "title": "PSY - \u2018I LUV IT\u2019 M/V", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Mdh2p03cRfw", "title": "Sam Hunt - Body Like A Back Road (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/XatXy6ZhKZw", "title": "Maroon 5 - Cold ft. Future", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Fq0xEpRDL9Q", "title": "Chris Brown - Privacy (Explicit Version)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/7wtfhZwyrcc", "title": "Imagine Dragons - Believer", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/AEB6ibtdPZc", "title": "Paramore: Hard Times [OFFICIAL VIDEO]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/vqW18C4plZ8", "title": "WizKid - Come Closer ft. Drake", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/FG9M0aEpJGE", "title": "G-Eazy & Kehlani - Good Life (from The Fate of the Furious: The Album) [MUSIC VIDEO]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/wzZWXrlDj-A", "title": "DNCE - Kissing Strangers ft. Nicki Minaj", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/5qJp6xlKEug", "title": "Gorillaz - Saturnz Barz (Spirit House)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/A7xzXDStQnk", "title": "Shawn Mendes - There's Nothing Holdin' Me Back (Lyric Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/vp8VZe5kqEM", "title": "Lady Gaga - The Cure (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/9sg-A-eS6Ig", "title": "Enrique Iglesias - SUBEME LA RADIO (Official Video) ft. Descemer Bueno, Zion & Lennox", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/xiecZPzJoCQ", "title": "Sean Paul - Body ft. Migos", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/ZvUBGN4KoP0", "title": "Young Thug, 2 Chainz, Wiz Khalifa & PnB Rock \u2013 Gang Up (The Fate of the Furious: The Album) [VIDEO]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/sxjC4CNG3_c", "title": "Logic - Black SpiderMan ft. Damian Lemar Hudson", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/c8OG5ffqfoE", "title": "Lil Yachty - Peek A Boo ft. Migos", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/kMRRIMmICmM", "title": "Move Your Lakk Video Song | Noor | Sonakshi Sinha & Diljit Dosanjh, Badshah | T-Series", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/3-NTv0CdFCk", "title": "Lana Del Rey - Love", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/DpMfP6qUSBo", "title": "Marian Hill - Down", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/u6p6dubzHAc", "title": "Baarish | Half Girlfriend | Arjun K & Shraddha K | Ash King & Shashaa Tirupati | Tanishk Bagchi", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/v4R7Q9SAcvM", "title": "Jeremih - I Think Of You ft. Chris Brown, Big Sean", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/7qaHdHpSjX8", "title": "Brett Young - In Case You Didn't Know", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/tgvbhxb9yk8", "title": "Machine Gun Kelly - At My Best ft. Hailee Steinfeld", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/QMhkdatUUPA", "title": "Florida Georgia Line - God, Your Mama, And Me ft. Backstreet Boys", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/MRLyREkZles", "title": "NAV - Some Way ft. The Weeknd", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/A-sS_Ts2Bjc", "title": "G-Eazy x Carnage - Guala ft. Thirty Rack", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/5dmQ3QWpy1Q", "title": "Heavy (Official Video) - Linkin Park (feat. Kiiara)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/z0GKGpObgPY", "title": "Harry Styles - Sign of the Times (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/GzT4p-OaJ5c", "title": "Keith Urban - The Fighter ft. Carrie Underwood", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/9Ke4480MicU", "title": "Julia Michaels - Issues", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/t_jHrUE5IOk", "title": "Maluma - Felices los 4 (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/axySrE0Kg6k", "title": "Beauty and the Beast (From \"Beauty and the Beast\"/Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/HnCiU8mcPWs", "title": "Kodak Black - Too Many Years (feat. PNB Rock) [Official Music Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/THfc1R09Te8", "title": "Thomas Rhett - Craving You ft. Maren Morris", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/jn40gqhxoSY", "title": "Cheat Codes - No Promises ft. Demi Lovato [Official Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/uy3KFOykGQc", "title": "Noah Cyrus - Stay Together (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/uEJuoEs1UxY", "title": "Bebe Rexha - I Got You [Official Music Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/p3kbQeWshk4", "title": "10Digits - Fool For Love ft. Charmie", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/sPTn0QEhxds", "title": "Shakira - Me Enamor\u00e9 (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/f6tU6BfnWEI", "title": "Andra - Lie To Me", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/LKroRc-gZVA", "title": "Major Lazer - Run Up (feat. PARTYNEXTDOOR & Nicki Minaj) (Official Lyric Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/VQtonf1fv_s", "title": "TWICE \"SIGNAL\" M/V", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/phr1pOFK1V8", "title": "Big Sean - Bounce Back", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/wor8gumz-1E", "title": "Cola Vs Milk: Anmol Gagan Maan (Full Video Song) | AKS | Latest Punjabi Songs 2017 | T-Series", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/euCqAq6BRa4", "title": "DJ Snake - Let Me Love You ft. Justin Bieber", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/KYgvXjtGcmg", "title": "David Guetta ft Nicki Minaj & Lil Wayne - Light My Body Up (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/rvaJ7QlhH0g", "title": "A Boogie Wit Da Hoodie - Drowning (WATER) ft Kodak Black [Official Audio]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/sI0TeFf6uD8", "title": "Chris Stapleton - Broken Halos (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/S7UAj9bl1-I", "title": "Meek Mill - Litty (feat. Tory Lanez) [OFFICIAL MUSIC VIDEO]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/O8lFeVfYw_s", "title": "Amin\u00e9 - REDMERCEDES", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/QH35AWCnugg", "title": "Luke Bryan - Fast", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/YG2p6XBuSKA", "title": "05. El Amante - Nicky Jam (Video Oficial) (\u00c1lbum F\u00e9nix)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/UWLr2va3hu0", "title": "Pitbull & J Balvin - Hey Ma ft Camila Cabello (Spanish Version | The Fate of the Furious: The Album)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/qXiuVQ-GgA4", "title": "OneRepublic - No Vacancy (Lyric Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/WFQqAZBOwfQ", "title": "Calvin Harris - Slide (Audio Preview) ft. Frank Ocean & Migos", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/hXs1fWCgOW4", "title": "2 Chainz - Good Drank ft. Gucci Mane, Quavo", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/helEv0kGHd4", "title": "Davido - If", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Y1h_wAVybsY", "title": "Kid Ink - F With U (Official Video) ft. Ty Dolla $ign", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/I-VsisgVkHw", "title": "Starley - Call On Me (Ryan Riback Remix)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/qBB_QOZNEdc", "title": "Hailee Steinfeld - Most Girls", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/rmuudxyM0t4", "title": "Flo Rida & 99 Percent - \"Cake\" (Official Music Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/kzQTc0-iBX8", "title": "Halsey - Now Or Never", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/XEvKn-QgAY0", "title": "Prince Royce, Shakira - Deja vu (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/4tBnF46ybZk", "title": "WINNER - \u2018REALLY REALLY\u2019 M/V", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/3X9wEwulYhk", "title": "Wisin - Esc\u00e1pate Conmigo (Official Video) ft. Ozuna", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/b8m9zhNAgKs", "title": "Rae Sremmurd - Black Beatles ft. Gucci Mane", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/GoNAbDoXros", "title": "Jason Aldean - Any Ol' Barstool", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/K573xRzMY0U", "title": "Russ - Exposed (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/lheKC1iC0CM", "title": "Jon Pardi - Dirt On My Boots", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/zsCt3Or4_Ss", "title": "Massari - So Long", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/kyxGsD-eP1I", "title": "Asma Lmnawar ... Andou Zine - Video Clip | \u0627\u0633\u0645\u0627 \u0644\u0645\u0646\u0648\u0631 ... \u0639\u0646\u062f\u0648 \u0627\u0644\u0632\u064a\u0646 - \u0641\u064a\u062f\u064a\u0648 \u0643\u0644\u064a\u0628", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/mThqhAT2Irk", "title": "Post Malone - Candy Paint (The Fate of the Furious: The Album)\u00a0[OFFICIAL AUDIO]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/oHmBf4ExtZk", "title": "Ariana Grande - Everyday ft. Future", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Qwu-B6gPHKU", "title": "Rascal Flatts - Yours If You Want It", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/yU0tnrEk8H4", "title": "Marshmello - Moving On (Official Music Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/vQvp6EghJ18", "title": "Arkells - Knocking At The Door", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/f6dUH2JnN04", "title": "B.o.B - 4 Lit (feat. T.I. & Ty Dolla $ign) (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/lPAxgLXfXQo", "title": "James Barker Band - Chills", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/W6e1TctNyw8", "title": "Stargate - Waterfall ft. P!nk, Sia", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/NlrYn_dZdqk", "title": "Camila Cabello - Crying in the Club", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/b4ozdiGys5g", "title": "MUSE - Dig Down [Official Music Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/YVtzQms7lps", "title": "Selena Gomez - Bad Liar (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/qqob4D3BoZc", "title": "Anne-Marie - Ciao Adios [Official Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/MJYcQaAlLFQ", "title": "Rick Ross - Trap Trap Trap ft. Young Thug, Wale", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/WXmTEyq5nXc", "title": "Coldplay - Hypnotised\u00a0(Official Lyric Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/VtVFTuIZFYU", "title": "Fall Out Boy - Young And Menace", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/pBkHHoOIIn8", "title": "Portugal. The Man - \"Feel It Still\" (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/HHCC4ndeJyE", "title": "Little Mix - No More Sad Songs (Official Video) ft. Machine Gun Kelly", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/c73Cu3TQnlg", "title": "Ahora Dice ft. J. Balvin, Ozuna, Arc\u00e1ngel (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/PK7A-WdXW_A", "title": "Kiiara - Whippin (feat. Felix Snow) [Official Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/TwyPsUd9LAk", "title": "Missy Elliott - I'm Better ft. Lamb [Official Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/o5FzCz8NC58", "title": "Niall Horan - Slow Hands (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/kIDjovcTQhA", "title": "Brett Eldredge - Somethin' I'm Good At (Official Music Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/4Kg9PcSADyM", "title": "Dean Brody - Beautiful Freakshow ft. Shevy Price", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/J34esa_aJxc", "title": "Willie Nelson - Still Not Dead", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/SPoJJ7D4knk", "title": "Dierks Bentley - Black", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Z7N64vUHxvw", "title": "P-Square - Nobody Ugly [Official Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/9nfVWiXY3WY", "title": "J. Cole - Neighbors", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/d9IxdwEFk1c", "title": "[MV] IU(\uc544\uc774\uc720) _ Palette(\ud314\ub808\ud2b8) (Feat. G-DRAGON)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/fERLJoAvd5k", "title": "Aaron Goodvin - Lonely Drum - Official Lyric Video", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/aMimIZJiMp0", "title": "PnB Rock, Kodak Black & A Boogie \u2013 Horses (from The Fate of the Furious: The Album) [OFFICIAL AUDIO]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/wqFROi1DUmQ", "title": "Nimrat Khaira - Rohab Rakhdi (Full Video Song) | Panj-aab Records | Preet Hundal | Latest Song 2017", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/bxD7BeZE4j8", "title": "Juicy J - Ain't Nothing ft. Wiz Khalifa, Ty Dolla $ign", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/zsQnCwV4Gr8", "title": "Tekno - Yawa (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/fM8V1XOI-14", "title": "Kane Brown - What Ifs ft. Lauren Alaina", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/zaaxUvi-zUE", "title": "DVBBS & CMC$ - Not Going Home feat. Gia Koka (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/DdCsTVcL4vM", "title": "Roon Wargi - Kulwinder Billa (Full Song) \u0a30\u0a42\u0a70 \u0a35\u0a30\u0a17\u0a40 | Latest Punjabi Song 2017 | Lokdhun Punjabi", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/WH9C6oLEtOg", "title": "Jax Jones - You Don't Know Me (Official Video) ft. RAYE", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/u1aVmoweBUI", "title": "Alkaline - Pretty Girl Team", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/qPTfXwPf_HM", "title": "Jonas Blue - Mama ft. William Singe", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/xALCpLXcIYY", "title": "Pitbull - Options ft. Stephen Marley", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/BSDxUVZJwTg", "title": "Dustin Lynch - Small Town Boy (Official Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/AE0I0r1rwKg", "title": "Kabza (Full Video) Gagan Tung ft Deep Jandu | Latest Punjabi New Song 2017", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/IEA4_fUgOlc", "title": "Kevin Gates - What If [Official Audio]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/W5j3bSprL1k", "title": "Shawn Hook - Reminding Me ft. Vanessa Hudgens", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/0yW7w8F2TVA", "title": "James Arthur - Say You Won't Let Go", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/IwC1xMwxVnI", "title": "YCee - Juice (Official Video) ft. Maleek Berry", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/lf8xoMhV8pI", "title": "Gente de Zona - Si No Vuelves (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/3v5HZTwFBCs", "title": "Trey Songz \u2013 Nobody Else But You [Official Music Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Kp7eSUU9oy8", "title": "Childish Gambino - Redbone (Official Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/KtlgYxa6BMU", "title": "Lord Huron - The Night We Met", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/WAE07gCjkhA", "title": "Dogus - Yara Bere (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/T_uGcW-v5EI", "title": "Zac Brown Band - My Old Man (Lyric Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/RLYksQvr5zY", "title": "Playboi Carti - Magnolia (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/7kZ46Lz8rug", "title": "John Legend - Surefire", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/LWkoquUvD98", "title": "Brad Paisley - Last Time for Everything", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/4f1ywgU4i-c", "title": "Old Dominion - No Such Thing as a Broken Heart (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Km4BayZykwE", "title": "J. Balvin - Si Tu Novio Te Deja Sola ft. Bad Bunny", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/5_lKAb2MD64", "title": "Bryson Tiller - Get Mine (Audio) ft. Young Thug", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/ivxPepDyqmI", "title": "Afrojack & David Guetta ft. Ester Dean - Another Life (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/afUx6AIG3Tg", "title": "Tu Foto - Ozuna (Video Oficial)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/vsrhIUmPf-w", "title": "Omarion - Distance [Official Music Video]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/ZeNwB4lNojs", "title": "Gucci Mane - Both Remix feat. Drake & Lil Wayne [Official Audio]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/ZSznpyG9CHY", "title": "Royal Blood \u2013 Lights Out (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/EfZfURgx9b0", "title": "Blake Shelton - Every Time I Hear That Song (Official Music Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/94MHIeeGwys", "title": "Michael Bubl\u00e9 - I Believe in You [OFFICIAL MUSIC VIDEO]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/1Al-nuR1iAU", "title": "Rag'n'Bone Man - Skin (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/4MzJKeMv8co", "title": "Tim McGraw, Faith Hill - Speak to a Girl (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/ob-jS7bqYgI", "title": "John Mayer - In the Blood (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/VO8qCRVj8dI", "title": "Galantis - Hunter (Official Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/txCCYBMKdB0", "title": "AJR - Weak (OFFICIAL MUSIC VIDEO)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/CKhmCh68Qu0", "title": "Cashmere Cat - Quit (Lyric Video) ft. Ariana Grande", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/yiMtAmH0_vU", "title": "6LACK - Free (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/P9-4xHVc7uk", "title": "Robin Schulz \u2013 OK (feat. James Blunt) (Official Music Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/D7krrRoJpT0", "title": "HAIM - Want You Back (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/E5RDEXpc8OY", "title": "Brothers Osborne - It Ain't My Fault", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/X6wQOW9ihDA", "title": "CNCO, Yandel - Hey DJ (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/K4ZeDuKF4m8", "title": "ZAYN - Still Got Time (Lyric) ft. PARTYNEXTDOOR", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/CFGVpKKs1CQ", "title": "New Punjabi Songs 2017 -Jinna Tera Main Kardi (Full HD)-Gurnam Bhullar Ft. MixSingh - Jass Records", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/2O6duDDkhis", "title": "The National - 'The System Only Dreams in Total Darkness'", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/FkFVMDlcJF8", "title": "K.Flay - High Enough (Lyric Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/sjle_ZI4elo", "title": "Mura Masa & Charli XCX - 1 Night (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/g7f6HiQ2LuU", "title": "Midland - Drinkin' Problem", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/zPYitm8kIcg", "title": "Cole Swindell ft. Dierks Bentley - Flatliner (Official Music Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/txTqtm58AqM", "title": "Red Hot Chili Peppers - Goodbye Angels [OFFICIAL VIDEO]", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/sR_pfk9JVlc", "title": "Drake - Gyalchester (Live From The 2017 Billboard Music Awards)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/0l9kzS_B7gg", "title": "Vince Staples - Big Fish", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/v4pi1LxuDHc", "title": "The Lumineers - Sleep On The Floor", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/yYcyacLRPNs", "title": "Elton John - Tiny Dancer (Official Music Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/aluHS4bANM8", "title": "Jonathan Roy - Good Things - Official Music Video", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/eLlPpxDGKrE", "title": "Don Omar, Zion & Lennox - Te Quiero Pa\u00b4Mi", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/yN41UT1aIAg", "title": "King Kosa ft Konshens & Shenseea - Best NaNa", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/jbgI-YDxvfk", "title": "Mike WiLL Made-It - On The Come Up ft. Big Sean", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/36DETSu8hlY", "title": "High Valley - I Be U Be (Official Music Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/ZwBkXgWNs_M", "title": "alt-J - 3WW (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/GKSRyLdjsPA", "title": "Sia - The Greatest", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Ktq4zATPFsI", "title": "Romeo Santos - H\u00e9roe Favorito (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/QRRPt0ysfyI", "title": "MHD - AFRO TRAP Part.8 (Never)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/_3P26FaPxgk", "title": "Of Mice & Men - Unbreakable (Official Music Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/S9q-08aTNh8", "title": "Reba McEntire - Back To God", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/8-0uoRNERE4", "title": "Fna\u00efre - Ngoul Mali (EXCLUSIVE Music Video) | (\u0641\u0646\u0627\u064a\u0631 - \u0646\u06ad\u0648\u0644 \u0645\u0627\u0644\u064a (\u0641\u064a\u062f\u064a\u0648 \u0643\u0644\u064a\u0628 \u062d\u0635\u0631\u064a", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/Dyg32hMf7Fk", "title": "Khalid - Saved (Audio)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/12cUm2OwnPs", "title": "Miranda Lambert - Tin Man (2017 ACM Awards Performance)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/3rk6_Ax0mQo", "title": "J Hus - Did You See (Official Video)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}, {"filename": "https://youtu.be/7e9DSdkRQu4", "title": "Keith Urban - Blue Ain't Your Color (Home Free)", "selected": false, "error": false, "playing": false, "duration": "00:00:00"}]
\ No newline at end of file
diff --git a/test/gplv3.ogg b/test/gplv3.ogg
new file mode 100644
index 0000000..e9c55b7
Binary files /dev/null and b/test/gplv3.ogg differ
diff --git a/test/playlist.json b/test/playlist.json
new file mode 100644
index 0000000..4a5c8b7
--- /dev/null
+++ b/test/playlist.json
@@ -0,0 +1,322 @@
+[
+ {
+ "duration": "00:05:21",
+ "error": false,
+ "filename": "https://youtu.be/weeI1G46q0o",
+ "playing": false,
+ "selected": true,
+ "title": "DJ Khaled - I'm the One ft. Justin Bieber, Quavo, Chance the Rapper, Lil Wayne"
+ },
+ {
+ "duration": "00:04:23",
+ "error": false,
+ "filename": "https://youtu.be/JGwWNGJdvx8",
+ "playing": false,
+ "selected": true,
+ "title": "Ed Sheeran - Shape of You [Official Video]"
+ },
+ {
+ "duration": "00:03:30",
+ "error": false,
+ "filename": "https://youtu.be/PMivT7MJ41M",
+ "playing": false,
+ "selected": true,
+ "title": "Bruno Mars - That’s What I Like [Official Video]"
+ },
+ {
+ "duration": "00:04:46",
+ "error": false,
+ "filename": "https://youtu.be/CTFtOOh47oo",
+ "playing": false,
+ "selected": false,
+ "title": "French Montana - Unforgettable ft. Swae Lee"
+ },
+ {
+ "duration": "00:04:45",
+ "error": false,
+ "filename": "https://youtu.be/NLZRYQMLDW4",
+ "playing": false,
+ "selected": false,
+ "title": "Kendrick Lamar - DNA."
+ },
+ {
+ "duration": "00:04:07",
+ "error": false,
+ "filename": "https://youtu.be/FM7MFYoylVs",
+ "playing": false,
+ "selected": true,
+ "title": "The Chainsmokers & Coldplay - Something Just Like This (Lyric)"
+ },
+ {
+ "duration": "00:03:48",
+ "error": false,
+ "filename": "https://youtu.be/72UO0v5ESUo",
+ "playing": false,
+ "selected": true,
+ "title": "Luis Fonsi, Daddy Yankee - Despacito (Audio) ft. Justin Bieber"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/D5drYkLiLI8",
+ "playing": false,
+ "selected": false,
+ "title": "Kygo, Selena Gomez - It Ain't Me (with Selena Gomez) (Audio)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/Zgmvg-zzctI",
+ "playing": false,
+ "selected": false,
+ "title": "Lil Uzi Vert - XO TOUR Llif3 (Produced By TM88)"
+ },
+ {
+ "duration": "00:12:53",
+ "error": false,
+ "filename": "test/gplv3.ogg",
+ "playing": false,
+ "selected": true,
+ "title": "gplv3.ogg"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/xvZqHgFz51I",
+ "playing": false,
+ "selected": false,
+ "title": "Future - Mask Off"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/8j9zMok6two",
+ "playing": false,
+ "selected": false,
+ "title": "Miley Cyrus - Malibu (Official Video)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/dPI-mRFEIH0",
+ "playing": false,
+ "selected": false,
+ "title": "Katy Perry - Bon Appétit (Official) ft. Migos"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/aatr_2MstrI",
+ "playing": false,
+ "selected": false,
+ "title": "Clean Bandit - Symphony feat. Zara Larsson [Official Video]"
+ },
+ {
+ "duration": "00:34:38",
+ "error": false,
+ "filename": "https://www.tube8.com/teen/nicole-ray-and-james-deen/409802/",
+ "playing": false,
+ "selected": true,
+ "title": "Nicole Ray and James Deen"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/7F37r50VUTQ",
+ "playing": false,
+ "selected": true,
+ "title": "ZAYN, Taylor Swift - I Don’t Wanna Live Forever (Fifty Shades Darker)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/qFLhGq0060w",
+ "playing": false,
+ "selected": true,
+ "title": "The Weeknd - I Feel It Coming ft. Daft Punk"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/6ImFf__U6io",
+ "playing": false,
+ "selected": true,
+ "title": "Birdman - Dark Shades (Explicit) ft. Lil Wayne, Mack Maine"
+ },
+ {
+ "duration": "00:03:56",
+ "error": false,
+ "filename": "https://www.youtube.com/watch?v=3M3xfu0m5o4",
+ "playing": false,
+ "selected": false,
+ "title": "David Banner - Play (Dirty version)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/NGLxoKOvzu4",
+ "playing": false,
+ "selected": false,
+ "title": "Jason Derulo - Swalla (feat. Nicki Minaj & Ty Dolla $ign) (Official Music Video)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/Hm1YFszJWbQ",
+ "playing": false,
+ "selected": false,
+ "title": "Migos - Slippery feat. Gucci Mane [Official Video]"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/SC4xMk98Pdc",
+ "playing": false,
+ "selected": false,
+ "title": "Post Malone - Congratulations ft. Quavo"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/nfs8NYg7yQM",
+ "playing": false,
+ "selected": false,
+ "title": "Charlie Puth - Attention [Official Video]"
+ },
+ {
+ "duration": "00:04:10",
+ "error": false,
+ "filename": "https://www.youtube.com/watch?v=sRIkXM8S1J8",
+ "playing": false,
+ "selected": true,
+ "title": "Best Goat Song Versions Compilation Ever! (HD)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/Dst9gZkq1a8",
+ "playing": false,
+ "selected": false,
+ "title": "Travis Scott - goosebumps ft. Kendrick Lamar"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/dMK_npDG12Q",
+ "playing": false,
+ "selected": false,
+ "title": "Lorde - Green Light"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/h--P8HzYZ74",
+ "playing": false,
+ "selected": true,
+ "title": "Zedd, Alessia Cara - Stay (Lyric Video)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/Mdh2p03cRfw",
+ "playing": false,
+ "selected": false,
+ "title": "Sam Hunt - Body Like A Back Road (Audio)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/Fq0xEpRDL9Q",
+ "playing": false,
+ "selected": false,
+ "title": "Chris Brown - Privacy (Explicit Version)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/7wtfhZwyrcc",
+ "playing": false,
+ "selected": false,
+ "title": "Imagine Dragons - Believer"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/t_jHrUE5IOk",
+ "playing": false,
+ "selected": false,
+ "title": "Maluma - Felices los 4 (Official Video)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/wzZWXrlDj-A",
+ "playing": false,
+ "selected": false,
+ "title": "DNCE - Kissing Strangers ft. Nicki Minaj"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/AEB6ibtdPZc",
+ "playing": false,
+ "selected": false,
+ "title": "Paramore: Hard Times [OFFICIAL VIDEO]"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/vqW18C4plZ8",
+ "playing": false,
+ "selected": false,
+ "title": "WizKid - Come Closer ft. Drake"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/A7xzXDStQnk",
+ "playing": false,
+ "selected": false,
+ "title": "Shawn Mendes - There's Nothing Holdin' Me Back (Lyric Video)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/FG9M0aEpJGE",
+ "playing": false,
+ "selected": false,
+ "title": "G-Eazy & Kehlani - Good Life (from The Fate of the Furious: The Album) [MUSIC VIDEO]"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/vp8VZe5kqEM",
+ "playing": false,
+ "selected": false,
+ "title": "Lady Gaga - The Cure (Audio)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/eP4eqhWc7sI",
+ "playing": false,
+ "selected": false,
+ "title": "Lana Del Rey - Lust For Life (Official Video) ft. The Weeknd"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/5qJp6xlKEug",
+ "playing": false,
+ "selected": false,
+ "title": "Gorillaz - Saturnz Barz (Spirit House)"
+ },
+ {
+ "duration": "00:00:00",
+ "error": false,
+ "filename": "https://youtu.be/9sg-A-eS6Ig",
+ "playing": false,
+ "selected": true,
+ "title": "Enrique Iglesias - SUBEME LA RADIO (Official Video) ft. Descemer Bueno, Zion & Lennox"
+ }
+]
\ No newline at end of file