Now store metadata info from processing into the media type.
[mediagoblin.git] / mediagoblin / media_types / video / models.py
index 35ed92bf72957ff50776312ee77c14e7afb30fdb..e0043718f05e9ed2aa7a68dbf0b6b4bf268b3603 100644 (file)
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
-from mediagoblin.db.sql.base import Base
+from mediagoblin.db.base import Base
 
 from sqlalchemy import (
     Column, Integer, SmallInteger, ForeignKey)
 from sqlalchemy.orm import relationship, backref
+from mediagoblin.db.extratypes import JSONEncoded
+
+
+BACKREF_NAME = "video__media_data"
 
 
 class VideoData(Base):
+    """
+    Attributes:
+     - media_data: the originating media entry (of course)
+     - width: width of the transcoded video
+     - height: height of the transcoded video
+     - orig_metadata: A loose json structure containing metadata gstreamer
+         pulled from the original video.
+         This field is NOT GUARANTEED to exist!
+    
+         Likely metadata extracted:
+           "videoheight", "videolength", "videowidth",
+           "audiorate", "audiolength", "audiochannels", "audiowidth",
+           "mimetype", "tags"
+     
+         TODO: document the above better.
+    """
     __tablename__ = "video__mediadata"
 
     # The primary key *and* reference to the main media_entry
     media_entry = Column(Integer, ForeignKey('core__media_entries.id'),
         primary_key=True)
     get_media_entry = relationship("MediaEntry",
-        backref=backref("video__media_data", cascade="all, delete-orphan"))
+        backref=backref(BACKREF_NAME, uselist=False,
+                        cascade="all, delete-orphan"))
 
     width = Column(SmallInteger)
     height = Column(SmallInteger)
 
+    orig_metadata = Column(JSONEncoded)
+
 
 DATA_MODEL = VideoData
 MODELS = [VideoData]