add config, bootstrap from external source
This commit is contained in:
parent
89e215d93a
commit
f3b9c2c0f5
3 changed files with 1484 additions and 2 deletions
1412
config.jsonc
Normal file
1412
config.jsonc
Normal file
File diff suppressed because it is too large
Load diff
|
@ -8,8 +8,8 @@ import ox
|
|||
|
||||
|
||||
overwrite = (
|
||||
#('home', 'indiancinema'),
|
||||
#('infoView', 'indiancinema'),
|
||||
('home', 'padma'),
|
||||
('infoView', 'padma'),
|
||||
)
|
||||
|
||||
base = abspath(dirname(__file__))
|
||||
|
|
70
utils.py
Normal file
70
utils.py
Normal file
|
@ -0,0 +1,70 @@
|
|||
import subprocess
|
||||
import ox
|
||||
|
||||
from archive.models import File, Stream
|
||||
from archive.external import get_info
|
||||
|
||||
def load_vimeo(item):
|
||||
urls = [url for url in item.data.get("links", []) if "vimeo.com" in url]
|
||||
cdir = os.path.abspath(os.curdir)
|
||||
orig = None
|
||||
for url in urls:
|
||||
for resolution in (720, 360):
|
||||
tmp = tempfile.mkdtemp()
|
||||
if isinstance(tmp, bytes):
|
||||
tmp = tmp.decode('utf-8')
|
||||
os.chdir(tmp)
|
||||
cmd = ['yt-dlp', '-q', url]
|
||||
cmd += ['-o', '%(title)80s.%(ext)s']
|
||||
cmd += [
|
||||
'-f', 'bestvideo[height<=%s][ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' % resolution,
|
||||
'--merge-output-format', 'mp4'
|
||||
]
|
||||
p = subprocess.Popen(cmd,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE, close_fds=True)
|
||||
stdout, stderr = p.communicate()
|
||||
parts = list(os.listdir(tmp))
|
||||
if parts:
|
||||
part = 1
|
||||
for name in parts:
|
||||
name = os.path.join(tmp, name)
|
||||
oshash = ox.oshash(name)
|
||||
if orig is None:
|
||||
f, created = File.objects.get_or_create(oshash=oshash)
|
||||
if created:
|
||||
orig = f
|
||||
f.item = item
|
||||
f.info = ox.avinfo(f.data.path)
|
||||
f.info['extension'] = media['extension']
|
||||
f.info['url'] = url
|
||||
f.path = '%(title)s.%(extension)s' % media
|
||||
f.parse_info()
|
||||
f.selected = True
|
||||
f.queued = True
|
||||
if len(parts) > 1:
|
||||
f.part = part
|
||||
part += 1
|
||||
f.save()
|
||||
f.item.save()
|
||||
f.extract_stream()
|
||||
status = True
|
||||
else:
|
||||
return 'file exists'
|
||||
stream, created = Stream.objects.get_or_create(file=orig, resolution=resolution, format="mp4")
|
||||
stream.media.name = stream.path(stream.name())
|
||||
ox.makedirs(os.path.dirname(stream.media.path))
|
||||
shutil.move(name, stream.media.path)
|
||||
stream.available = True
|
||||
if resolution == 720:
|
||||
source = stream
|
||||
else:
|
||||
stream.source = source
|
||||
stream.save()
|
||||
stream.make_timeline()
|
||||
if resolution == 720 and len(parts) == 1:
|
||||
info = get_info(url, None)
|
||||
media = info[0]
|
||||
add_subtitles(item, media, tmp)
|
||||
o.chdir(cdir)
|
||||
shutil.rmtree(tmp)
|
Loading…
Reference in a new issue