Compare commits

...

3 commits

Author SHA1 Message Date
j
60786749ec pass output filename 2018-11-15 12:10:59 +00:00
j
09e1f2833c add render mode on pandora server 2018-11-15 11:59:54 +00:00
j
8a8c09dc07 use source aspect ratio 2018-11-15 11:56:03 +00:00
2 changed files with 41 additions and 16 deletions

25
edit.py
View file

@ -7,6 +7,7 @@ import os
import sys import sys
import urllib.parse import urllib.parse
import urllib.request import urllib.request
from glob import glob
import ox import ox
import ox.web.auth import ox.web.auth
@ -100,13 +101,26 @@ def sort_clips(edit, sort):
s = sorted(clips, key=lambda c: ids.index(c['id']) if c['id'] in ids else -1) s = sorted(clips, key=lambda c: ids.index(c['id']) if c['id'] in ids else -1)
return s return s
def cache_clips(api, videos, use_source=False): def get_pandora_media_path(oshash):
h = oshash
path = '/srv/pandora/data/media/' + '/'.join([h[:2], h[2:4], h[4:6], h[6:]])
path = glob('%s/data.*' % path)
if path:
path = path[0]
else:
path = ox.sorted_strings(glob('%s/*.mp4' % path))[-1]
return path
def cache_clips(api, videos, use_source=False, use_pandora=False):
for clip in videos: for clip in videos:
out = '%s/%s.mp4' % (render, clip['oshash']) out = '%s/%s.mp4' % (render, clip['oshash'])
if 'path' in clip: if 'path' in clip:
clip['src'] = clip['path'] clip['src'] = clip['path']
clip['path'] = out clip['path'] = out
if not os.path.exists(out): if not os.path.exists(out):
if use_pandora:
os.symlink(get_pandora_media_path(clip['oshash']), out)
else:
url = clip['url'] url = clip['url']
if use_source: if use_source:
name = url.split('/')[-1].split('.')[0] name = url.split('/')[-1].split('.')[0]
@ -132,12 +146,16 @@ if __name__ == '__main__':
parser.add_argument('-c', '--config', dest='config', parser.add_argument('-c', '--config', dest='config',
help='config.json containing config', help='config.json containing config',
default='~/.ox/client.json') default='~/.ox/client.json')
parser.add_argument('-o', '--output', dest='output',
help='json output',
default='')
parser.add_argument('url', metavar='url', type=str, parser.add_argument('url', metavar='url', type=str,
help='edit url') help='edit url')
opts = parser.parse_args() opts = parser.parse_args()
edit_url = opts.url edit_url = opts.url
use_local = opts.source == 'local' use_local = opts.source == 'local'
use_source = opts.source == 'source' use_source = opts.source == 'source'
use_pandora = opts.source == 'pandora'
prefix = opts.prefix prefix = opts.prefix
parts = edit_url.split('/') parts = edit_url.split('/')
site = parts[2] site = parts[2]
@ -238,8 +256,11 @@ if __name__ == '__main__':
position = math.ceil(position / (1/25)) * 1/25 position = math.ceil(position / (1/25)) * 1/25
if not use_local: if not use_local:
cache_clips(api, videos, use_source) cache_clips(api, videos, use_source, use_pandora)
if opts.output:
name = opts.output.replace('.json', '')
else:
name = normalize(edit_id) name = normalize(edit_id)
if sort_by != 'year': if sort_by != 'year':
name += '_' + sort_by name += '_' + sort_by

View file

@ -72,6 +72,10 @@ for clip in edit:
continue continue
src_info = ox.avinfo(clip['path']) src_info = ox.avinfo(clip['path'])
clip_aspect = src_info['video'][0]['width'] / src_info['video'][0]['height'] clip_aspect = src_info['video'][0]['width'] / src_info['video'][0]['height']
if 'display_aspect_ratio' in src_info['video'][0]:
ratio = [int(p) for p in src_info['video'][0]['display_aspect_ratio'].split(':')]
clip_aspect = ratio[0] / ratio[1]
print(ratio, clip_aspect)
if clip_aspect < aspect: if clip_aspect < aspect:
x = width x = width
y = int(x / clip_aspect) y = int(x / clip_aspect)