clips frames
This commit is contained in:
parent
5a9fd08511
commit
b3558df3be
4 changed files with 42 additions and 27 deletions
|
|
@ -8,14 +8,15 @@ import turbogears
|
|||
import re
|
||||
from urllib import quote, quote_plus
|
||||
import os
|
||||
from os.path import abspath, join, dirname
|
||||
from os.path import abspath, join, dirname, exists
|
||||
from datetime import datetime
|
||||
import time
|
||||
import math
|
||||
from glob import glob
|
||||
import shutil
|
||||
|
||||
|
||||
from scrapeit.utils import read_url
|
||||
import socket
|
||||
import cache
|
||||
import oxdb_import
|
||||
from oxdb_utils import oxdb_title, oxdb_director, oxdb_id
|
||||
|
|
@ -40,9 +41,12 @@ class Archive(SQLObject):
|
|||
|
||||
def notifyFrontend(self, action, md5sum):
|
||||
if self.baseUrlFrontend:
|
||||
dto = socket.getdefaulttimeout()
|
||||
socket.setdefaulttimeout(100)
|
||||
url = "%s/%s?md5sum=%s" % (self.baseUrlFrontend, action, md5sum)
|
||||
result = read_url(url)
|
||||
print "Frontend:", result
|
||||
socket.setdefaulttimeout(dto)
|
||||
|
||||
def _get_files(self):
|
||||
q = ArchiveFile.select(ArchiveFile.q.archiveID == self.id)
|
||||
|
|
@ -263,7 +267,7 @@ class ArchiveFile(SQLObject):
|
|||
|
||||
def updateMeta(self):
|
||||
self.findSubtitleLink()
|
||||
if os.path.exists(self.absolutePath):
|
||||
if exists(self.absolutePath):
|
||||
info = midentify.identify(self.absolutePath)
|
||||
self.length = info['length']
|
||||
self.width = info['width']
|
||||
|
|
@ -338,7 +342,7 @@ class ArchiveFile(SQLObject):
|
|||
return join(cache.cache_root, 'mini', self.md5sum[:4], "%s.avi" % self.md5sum)
|
||||
|
||||
def _get_frameFolder(self):
|
||||
f = join(cache.cache_root, 'mini', self.md5sum[:4], self.md5sum)
|
||||
f = join(cache.cache_root, 'frame', self.md5sum[:4], self.md5sum)
|
||||
if not exists(f):
|
||||
os.makedirs(f)
|
||||
return f
|
||||
|
|
@ -347,7 +351,7 @@ class ArchiveFile(SQLObject):
|
|||
return join(cache.cache_root, 'timeline', self.md5sum[:4], "%s.png" % self.md5sum)
|
||||
|
||||
def removeMiniMovie(self):
|
||||
if os.path.exists(self.mini_movie_file):
|
||||
if exists(self.mini_movie_file):
|
||||
os.remove(self.mini_movie_file)
|
||||
|
||||
def _findSubtitleByStart(self, start):
|
||||
|
|
@ -365,13 +369,16 @@ class ArchiveFile(SQLObject):
|
|||
self.extractTimeline()
|
||||
self.extracted = True
|
||||
|
||||
def extractClip(self, inpoint, outpoint=-1, flash_folder=cache.frame_cache_root):
|
||||
def extractClip(self, inpoint, outpoint=-1, flash_folder=-1):
|
||||
if flash_folder == -1:
|
||||
flash_folder = self.frameFolder
|
||||
movie_file = self.mini_movie_file
|
||||
position = inpoint.replace(':', '.')
|
||||
flash_movie = join(self.frameFolder, '%s.%s' % (position, 'flv'))
|
||||
width = 128
|
||||
height = int(width / (self.width / self.height))
|
||||
height = height - height % 2
|
||||
inpoint = inpoint.replace('.', ':')
|
||||
if outpoint == -1:
|
||||
s = self._findSubtitleByStart(inpoint)
|
||||
if s:
|
||||
|
|
@ -381,21 +388,23 @@ class ArchiveFile(SQLObject):
|
|||
extract_flash(movie_file, flash_movie, inpoint, outpoint, width, height, offset = 0)
|
||||
#extract_flash_ng(self.absolutePath, flash_movie, inpoint, outpoint, width, height, offset)
|
||||
|
||||
def extractFrame(self, position, img_folder=cache.frame_cache_root):
|
||||
def extractFrame(self, position, img_folder=-1):
|
||||
if img_folder == -1:
|
||||
img_folder = self.frameFolder
|
||||
if self.movieFile:
|
||||
return self.movieFile.extractFrame(position, img_folder)
|
||||
movie_file = self.mini_movie_file
|
||||
img_folder = join(img_folder, self.oxdb)
|
||||
if not os.path.exists(img_folder):
|
||||
if not exists(img_folder):
|
||||
os.makedirs(img_folder)
|
||||
|
||||
position = position.replace('.', ':')
|
||||
extract_frame(movie_file, position, img_folder, offset = 0, redo = False)
|
||||
|
||||
def extractFrames(self, img_folder=cache.frame_cache_root):
|
||||
if self.movieFile:
|
||||
return self.movieFile.extractFrames(img_folder)
|
||||
movie_file = self.absolutePath
|
||||
img_folder = join(img_folder, self.oxdb)
|
||||
if not os.path.exists(img_folder):
|
||||
if not exists(img_folder):
|
||||
os.makedirs(img_folder)
|
||||
extract_subtitles(movie_file, self.srt.encode('utf-8'), img_folder, width=100, offset=self.offset)
|
||||
|
||||
|
|
@ -404,12 +413,12 @@ class ArchiveFile(SQLObject):
|
|||
return
|
||||
mini_movie_file = self.mini_movie_file
|
||||
movie_file = self.absolutePath
|
||||
if not movie_file or not os.path.exists(movie_file):
|
||||
if not movie_file or not exists(movie_file):
|
||||
return
|
||||
if os.path.exists(mini_movie_file) and not force:
|
||||
if exists(mini_movie_file) and not force:
|
||||
print "clip exists, skipping extraction", mini_movie_file
|
||||
return
|
||||
if not os.path.exists(dirname(mini_movie_file)):
|
||||
if not exists(dirname(mini_movie_file)):
|
||||
os.makedirs(dirname(mini_movie_file))
|
||||
options = ''
|
||||
options += " -ovc lavc -lavcopts vcodec=mjpeg"
|
||||
|
|
@ -423,7 +432,7 @@ class ArchiveFile(SQLObject):
|
|||
|
||||
|
||||
def removeTimeline(self):
|
||||
if os.path.exists(self.timelineFile):
|
||||
if exists(self.timelineFile):
|
||||
os.unlink(self.timelineFile)
|
||||
|
||||
def extractTimeline(self, force = False):
|
||||
|
|
@ -437,18 +446,20 @@ class ArchiveFile(SQLObject):
|
|||
return
|
||||
|
||||
t = self.timelineFile
|
||||
if os.path.exists(self.mini_movie_file):
|
||||
if not os.path.exists(os.path.dirname(t)):
|
||||
if exists(self.mini_movie_file):
|
||||
if not exists(os.path.dirname(t)):
|
||||
os.makedirs(os.path.dirname(t))
|
||||
#lets only extract the timeline if it does not exist yet
|
||||
if os.path.exists(t):
|
||||
if exists(t):
|
||||
print "skipping, ", self.path
|
||||
return
|
||||
extractTimelineScript = abspath(join(dirname(__file__), "tools/extract_timeline.py"))
|
||||
#this fails in tg-admin shell
|
||||
#extractTimelineScript = abspath(join(dirname(__file__), "tools/extract_timeline.py"))
|
||||
extractTimelineScript = "oxdbarchive/tools/extract_timeline.py"
|
||||
cmd = "python %s %s %s" %(extractTimelineScript, t, self.mini_movie_file)
|
||||
os.system(cmd)
|
||||
|
||||
def loadSubtitleFromFile(self):
|
||||
def loadSubtitleFromFile(self):
|
||||
if self.movieFile:
|
||||
movieFile = self.movieFile
|
||||
subtitle = self
|
||||
|
|
@ -458,7 +469,7 @@ class ArchiveFile(SQLObject):
|
|||
if movieFile:
|
||||
movieFile.srt = ''
|
||||
if subtitle and movieFile:
|
||||
if not subtitle.absolutePath or not os.path.exists(subtitle.absolutePath):
|
||||
if not subtitle.absolutePath or not exists(subtitle.absolutePath):
|
||||
return
|
||||
if not subtitle.absolutePath.endswith('.srt'):
|
||||
print "this is not a subtitle", subtitle.absolutePath
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue