Subliminal update
This commit is contained in:
1 parent
5321037f08
commit
148e1940ac
85 files changed
+4375
-3420
No files matched your search
+17
-18
@@ -1,7 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# enzyme - Video metadata parser
|
||||
# Copyright (C) 2011 Antoine Bertin <diaoulael@gmail.com>
|
||||
# Copyright (C) 2003-2006 Dirk Meyer <dischi@freevo.org>
|
||||
# Copyright 2011-2012 Antoine Bertin <diaoulael@gmail.com>
|
||||
# Copyright 2003-2006 Dirk Meyer <dischi@freevo.org>
|
||||
#
|
||||
# This file is part of enzyme.
|
||||
#
|
||||
@@ -16,16 +16,15 @@
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
__all__ = ['Parser']
|
||||
|
||||
from exceptions import *
|
||||
# along with enzyme. If not, see <http://www.gnu.org/licenses/>.
|
||||
from exceptions import ParseError
|
||||
import core
|
||||
import logging
|
||||
import struct
|
||||
|
||||
__all__ = ['Parser']
|
||||
|
||||
|
||||
# get logging object
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
@@ -44,7 +43,7 @@ FLV_AUDIO_CODECID = (0x0001, 0x0002, 0x0055, 0x0001)
|
||||
|
||||
# video flags
|
||||
FLV_VIDEO_CODECID_MASK = 0x0f
|
||||
FLV_VIDEO_CODECID = ( 'FLV1', 'MSS1', 'VP60') # wild guess
|
||||
FLV_VIDEO_CODECID = ('FLV1', 'MSS1', 'VP60') # wild guess
|
||||
|
||||
FLV_DATA_TYPE_NUMBER = 0x00
|
||||
FLV_DATA_TYPE_BOOL = 0x01
|
||||
@@ -70,7 +69,7 @@ class FlashVideo(core.AVContainer):
|
||||
"""
|
||||
table_mapping = { 'FLVINFO' : FLVINFO }
|
||||
|
||||
def __init__(self,file):
|
||||
def __init__(self, file):
|
||||
core.AVContainer.__init__(self)
|
||||
self.mime = 'video/flv'
|
||||
self.type = 'Flash Video'
|
||||
@@ -78,7 +77,7 @@ class FlashVideo(core.AVContainer):
|
||||
if len(data) < 13 or struct.unpack('>3sBBII', data)[0] != 'FLV':
|
||||
raise ParseError()
|
||||
|
||||
for i in range(10):
|
||||
for _ in range(10):
|
||||
if self.audio and self.video:
|
||||
break
|
||||
data = file.read(11)
|
||||
@@ -116,13 +115,13 @@ class FlashVideo(core.AVContainer):
|
||||
file.seek(size - 1, 1)
|
||||
|
||||
elif chunk[0] == FLV_TAG_TYPE_META:
|
||||
log.info('metadata %s', str(chunk))
|
||||
log.info(u'metadata %r', str(chunk))
|
||||
metadata = file.read(size)
|
||||
try:
|
||||
while metadata:
|
||||
length, value = self._parse_value(metadata)
|
||||
if isinstance(value, dict):
|
||||
log.info('metadata: %s', value)
|
||||
log.info(u'metadata: %r', value)
|
||||
if value.get('creator'):
|
||||
self.copyright = value.get('creator')
|
||||
if value.get('width'):
|
||||
@@ -139,7 +138,7 @@ class FlashVideo(core.AVContainer):
|
||||
except (IndexError, struct.error, TypeError):
|
||||
pass
|
||||
else:
|
||||
log.info('unkown %s', str(chunk))
|
||||
log.info(u'unkown %r', str(chunk))
|
||||
file.seek(size, 1)
|
||||
|
||||
file.seek(4, 1)
|
||||
@@ -157,16 +156,16 @@ class FlashVideo(core.AVContainer):
|
||||
|
||||
if ord(data[0]) == FLV_DATA_TYPE_STRING:
|
||||
length = (ord(data[1]) << 8) + ord(data[2])
|
||||
return length + 3, data[3:length+3]
|
||||
return length + 3, data[3:length + 3]
|
||||
|
||||
if ord(data[0]) == FLV_DATA_TYPE_ECMARRAY:
|
||||
init_length = len(data)
|
||||
num = struct.unpack('>I', data[1:5])[0]
|
||||
data = data[5:]
|
||||
result = {}
|
||||
for i in range(num):
|
||||
for _ in range(num):
|
||||
length = (ord(data[0]) << 8) + ord(data[1])
|
||||
key = data[2:length+2]
|
||||
key = data[2:length + 2]
|
||||
data = data[length + 2:]
|
||||
length, value = self._parse_value(data)
|
||||
if not length:
|
||||
@@ -175,7 +174,7 @@ class FlashVideo(core.AVContainer):
|
||||
data = data[length:]
|
||||
return init_length - len(data), result
|
||||
|
||||
log.info('unknown code: %x. Stop metadata parser', ord(data[0]))
|
||||
log.info(u'unknown code: %x. Stop metadata parser', ord(data[0]))
|
||||
return 0, None
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user