2018-02-27 00:06:15 +01:00
|
|
|
from functools import wraps
|
2018-02-26 22:55:01 +01:00
|
|
|
import threading
|
|
|
|
import youtube_dl
|
|
|
|
|
|
|
|
class Namespace(object): pass
|
|
|
|
|
|
|
|
def get_youtube_metadata(url, ydl = youtube_dl.YoutubeDL()):
|
|
|
|
#todo: check if url is valid
|
|
|
|
|
|
|
|
#todo, stop it from doung the whole playlist
|
|
|
|
resp = ydl.extract_info(url, download=False)
|
|
|
|
#print resp.keys()
|
|
|
|
|
|
|
|
title = resp.get('title')
|
|
|
|
length = resp.get('duration')
|
|
|
|
|
|
|
|
#print( title, "%i:%.2i" % (length//60, length%60))
|
|
|
|
return title, "%i:%.2i" % (length//60, length%60)
|
|
|
|
|
|
|
|
# decorator:
|
2018-02-27 00:06:15 +01:00
|
|
|
def call_as_thread(func): # This will discard any return value!
|
|
|
|
@wraps(func)
|
2018-02-26 22:55:01 +01:00
|
|
|
def new_func(*args, **kwargs):
|
|
|
|
threading.Thread(
|
|
|
|
target = func,
|
|
|
|
args = args,
|
|
|
|
kwargs = kwargs
|
|
|
|
).start()
|
|
|
|
return new_func
|