faset over fra Z3950 til google books
This commit is contained in:
		
							
								
								
									
										355
									
								
								python/gdata/media/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										355
									
								
								python/gdata/media/__init__.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,355 @@
 | 
			
		||||
# -*-*- encoding: utf-8 -*-*-
 | 
			
		||||
#
 | 
			
		||||
# This is gdata.photos.media, implementing parts of the MediaRSS spec in gdata structures
 | 
			
		||||
#
 | 
			
		||||
# $Id: __init__.py 81 2007-10-03 14:41:42Z havard.gulldahl $
 | 
			
		||||
#
 | 
			
		||||
# Copyright 2007 Håvard Gulldahl 
 | 
			
		||||
# Portions copyright 2007 Google Inc.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
"""Essential attributes of photos in Google Photos/Picasa Web Albums are 
 | 
			
		||||
expressed using elements from the `media' namespace, defined in the 
 | 
			
		||||
MediaRSS specification[1].
 | 
			
		||||
 | 
			
		||||
Due to copyright issues, the elements herein are documented sparingly, please 
 | 
			
		||||
consult with the Google Photos API Reference Guide[2], alternatively the 
 | 
			
		||||
official MediaRSS specification[1] for details. 
 | 
			
		||||
(If there is a version conflict between the two sources, stick to the 
 | 
			
		||||
Google Photos API).
 | 
			
		||||
 | 
			
		||||
[1]: http://search.yahoo.com/mrss (version 1.1.1)
 | 
			
		||||
[2]: http://code.google.com/apis/picasaweb/reference.html#media_reference
 | 
			
		||||
 | 
			
		||||
Keep in mind that Google Photos only uses a subset of the MediaRSS elements 
 | 
			
		||||
(and some of the attributes are trimmed down, too): 
 | 
			
		||||
 | 
			
		||||
media:content
 | 
			
		||||
media:credit
 | 
			
		||||
media:description
 | 
			
		||||
media:group
 | 
			
		||||
media:keywords
 | 
			
		||||
media:thumbnail
 | 
			
		||||
media:title
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
__author__ = u'havard@gulldahl.no'# (Håvard Gulldahl)' #BUG: api chokes on non-ascii chars in __author__
 | 
			
		||||
__license__ = 'Apache License v2'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import atom
 | 
			
		||||
import gdata
 | 
			
		||||
 | 
			
		||||
MEDIA_NAMESPACE = 'http://search.yahoo.com/mrss/'
 | 
			
		||||
YOUTUBE_NAMESPACE = 'http://gdata.youtube.com/schemas/2007'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaBaseElement(atom.AtomBase):
 | 
			
		||||
  """Base class for elements in the MEDIA_NAMESPACE. 
 | 
			
		||||
  To add new elements, you only need to add the element tag name to self._tag
 | 
			
		||||
  """
 | 
			
		||||
  
 | 
			
		||||
  _tag = ''
 | 
			
		||||
  _namespace = MEDIA_NAMESPACE
 | 
			
		||||
  _children = atom.AtomBase._children.copy()
 | 
			
		||||
  _attributes = atom.AtomBase._attributes.copy()
 | 
			
		||||
 | 
			
		||||
  def __init__(self, name=None, extension_elements=None,
 | 
			
		||||
      extension_attributes=None, text=None):
 | 
			
		||||
    self.name = name
 | 
			
		||||
    self.text = text
 | 
			
		||||
    self.extension_elements = extension_elements or []
 | 
			
		||||
    self.extension_attributes = extension_attributes or {}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Content(MediaBaseElement):
 | 
			
		||||
  """(attribute container) This element describes the original content,
 | 
			
		||||
    e.g. an image or a video. There may be multiple Content elements
 | 
			
		||||
    in a media:Group.
 | 
			
		||||
 | 
			
		||||
    For example, a video may have a
 | 
			
		||||
    <media:content medium="image"> element that specifies a JPEG
 | 
			
		||||
    representation of the video, and a <media:content medium="video">
 | 
			
		||||
    element that specifies the URL of the video itself.
 | 
			
		||||
  
 | 
			
		||||
  Attributes:
 | 
			
		||||
    url: non-ambigous reference to online object
 | 
			
		||||
    width: width of the object frame, in pixels
 | 
			
		||||
    height: width of the object frame, in pixels
 | 
			
		||||
    medium: one of `image' or `video', allowing the api user to quickly
 | 
			
		||||
            determine the object's type
 | 
			
		||||
    type: Internet media Type[1] (a.k.a. mime type) of the object -- a more
 | 
			
		||||
          verbose way of determining the media type. To set the type member
 | 
			
		||||
          in the contructor, use the content_type parameter.
 | 
			
		||||
    (optional) fileSize: the size of the object, in bytes
 | 
			
		||||
  
 | 
			
		||||
  [1]: http://en.wikipedia.org/wiki/Internet_media_type
 | 
			
		||||
  """
 | 
			
		||||
  
 | 
			
		||||
  _tag = 'content'
 | 
			
		||||
  _attributes = atom.AtomBase._attributes.copy()
 | 
			
		||||
  _attributes['url'] = 'url'
 | 
			
		||||
  _attributes['width'] = 'width'
 | 
			
		||||
  _attributes['height'] = 'height'
 | 
			
		||||
  _attributes['medium'] = 'medium'
 | 
			
		||||
  _attributes['type'] = 'type'
 | 
			
		||||
  _attributes['fileSize'] = 'fileSize'
 | 
			
		||||
 | 
			
		||||
  def __init__(self, url=None, width=None, height=None,
 | 
			
		||||
      medium=None, content_type=None, fileSize=None, format=None,
 | 
			
		||||
      extension_elements=None, extension_attributes=None, text=None):
 | 
			
		||||
    MediaBaseElement.__init__(self, extension_elements=extension_elements,
 | 
			
		||||
                              extension_attributes=extension_attributes,
 | 
			
		||||
                              text=text)
 | 
			
		||||
    self.url = url
 | 
			
		||||
    self.width = width
 | 
			
		||||
    self.height = height
 | 
			
		||||
    self.medium = medium
 | 
			
		||||
    self.type = content_type
 | 
			
		||||
    self.fileSize = fileSize
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def ContentFromString(xml_string):
 | 
			
		||||
  return atom.CreateClassFromXMLString(Content, xml_string)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Credit(MediaBaseElement):
 | 
			
		||||
  """(string) Contains the nickname of the user who created the content,
 | 
			
		||||
  e.g. `Liz Bennet'.
 | 
			
		||||
  
 | 
			
		||||
  This is a user-specified value that should be used when referring to
 | 
			
		||||
  the user by name.
 | 
			
		||||
 | 
			
		||||
  Note that none of the attributes from the MediaRSS spec are supported.
 | 
			
		||||
  """
 | 
			
		||||
  
 | 
			
		||||
  _tag = 'credit'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def CreditFromString(xml_string):
 | 
			
		||||
  return atom.CreateClassFromXMLString(Credit, xml_string)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Description(MediaBaseElement):
 | 
			
		||||
  """(string) A description of the media object.
 | 
			
		||||
  Either plain unicode text, or entity-encoded html (look at the `type'
 | 
			
		||||
  attribute).
 | 
			
		||||
 | 
			
		||||
  E.g `A set of photographs I took while vacationing in Italy.'
 | 
			
		||||
  
 | 
			
		||||
  For `api' projections, the description is in plain text;
 | 
			
		||||
  for `base' projections, the description is in HTML.
 | 
			
		||||
  
 | 
			
		||||
  Attributes:
 | 
			
		||||
    type: either `text' or `html'. To set the type member in the contructor,
 | 
			
		||||
          use the description_type parameter.
 | 
			
		||||
  """
 | 
			
		||||
  
 | 
			
		||||
  _tag = 'description'
 | 
			
		||||
  _attributes = atom.AtomBase._attributes.copy()
 | 
			
		||||
  _attributes['type'] = 'type'
 | 
			
		||||
  def __init__(self, description_type=None, 
 | 
			
		||||
      extension_elements=None, extension_attributes=None, text=None):
 | 
			
		||||
    MediaBaseElement.__init__(self, extension_elements=extension_elements,
 | 
			
		||||
                              extension_attributes=extension_attributes,
 | 
			
		||||
                              text=text)
 | 
			
		||||
    
 | 
			
		||||
    self.type = description_type
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def DescriptionFromString(xml_string):
 | 
			
		||||
  return atom.CreateClassFromXMLString(Description, xml_string)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Keywords(MediaBaseElement):
 | 
			
		||||
  """(string) Lists the tags associated with the entry,
 | 
			
		||||
  e.g `italy, vacation, sunset'.
 | 
			
		||||
  
 | 
			
		||||
  Contains a comma-separated list of tags that have been added to the photo, or
 | 
			
		||||
  all tags that have been added to photos in the album.
 | 
			
		||||
  """
 | 
			
		||||
  
 | 
			
		||||
  _tag = 'keywords'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def KeywordsFromString(xml_string):
 | 
			
		||||
  return atom.CreateClassFromXMLString(Keywords, xml_string)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Thumbnail(MediaBaseElement):
 | 
			
		||||
  """(attributes) Contains the URL of a thumbnail of a photo or album cover.
 | 
			
		||||
  
 | 
			
		||||
  There can be multiple <media:thumbnail> elements for a given <media:group>; 
 | 
			
		||||
  for example, a given item may have multiple thumbnails at different sizes. 
 | 
			
		||||
  Photos generally have two thumbnails at different sizes; 
 | 
			
		||||
  albums generally have one cropped thumbnail.  
 | 
			
		||||
    
 | 
			
		||||
  If the thumbsize parameter is set to the initial query, this element points 
 | 
			
		||||
  to thumbnails of the requested sizes; otherwise the thumbnails are the 
 | 
			
		||||
  default thumbnail size. 
 | 
			
		||||
  
 | 
			
		||||
  This element must not be confused with the <gphoto:thumbnail> element.
 | 
			
		||||
  
 | 
			
		||||
  Attributes:
 | 
			
		||||
  url:  The URL of the thumbnail image.
 | 
			
		||||
  height:  The height of the thumbnail image, in pixels.
 | 
			
		||||
  width:  The width of the thumbnail image, in pixels.
 | 
			
		||||
  """
 | 
			
		||||
  
 | 
			
		||||
  _tag = 'thumbnail'
 | 
			
		||||
  _attributes = atom.AtomBase._attributes.copy()
 | 
			
		||||
  _attributes['url'] = 'url'
 | 
			
		||||
  _attributes['width'] = 'width'
 | 
			
		||||
  _attributes['height'] = 'height'
 | 
			
		||||
  def __init__(self, url=None, width=None, height=None,
 | 
			
		||||
      extension_attributes=None, text=None, extension_elements=None):
 | 
			
		||||
    MediaBaseElement.__init__(self, extension_elements=extension_elements,
 | 
			
		||||
                              extension_attributes=extension_attributes,
 | 
			
		||||
                              text=text)
 | 
			
		||||
    self.url = url
 | 
			
		||||
    self.width = width
 | 
			
		||||
    self.height = height
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def ThumbnailFromString(xml_string):
 | 
			
		||||
  return atom.CreateClassFromXMLString(Thumbnail, xml_string)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Title(MediaBaseElement):
 | 
			
		||||
  """(string) Contains the title of the entry's media content, in plain text.
 | 
			
		||||
  
 | 
			
		||||
  Attributes:
 | 
			
		||||
    type: Always set to plain. To set the type member in the constructor, use
 | 
			
		||||
          the title_type parameter.
 | 
			
		||||
  """
 | 
			
		||||
  
 | 
			
		||||
  _tag = 'title'
 | 
			
		||||
  _attributes = atom.AtomBase._attributes.copy()
 | 
			
		||||
  _attributes['type'] = 'type'
 | 
			
		||||
  def __init__(self, title_type=None, 
 | 
			
		||||
      extension_attributes=None, text=None, extension_elements=None):
 | 
			
		||||
    MediaBaseElement.__init__(self, extension_elements=extension_elements,
 | 
			
		||||
                              extension_attributes=extension_attributes,
 | 
			
		||||
                              text=text)
 | 
			
		||||
    self.type = title_type
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def TitleFromString(xml_string):
 | 
			
		||||
  return atom.CreateClassFromXMLString(Title, xml_string)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Player(MediaBaseElement):
 | 
			
		||||
  """(string) Contains the embeddable player URL for the entry's media content 
 | 
			
		||||
  if the media is a video.
 | 
			
		||||
  
 | 
			
		||||
  Attributes:
 | 
			
		||||
  url: Always set to plain
 | 
			
		||||
  """
 | 
			
		||||
  
 | 
			
		||||
  _tag = 'player'
 | 
			
		||||
  _attributes = atom.AtomBase._attributes.copy()
 | 
			
		||||
  _attributes['url'] = 'url'
 | 
			
		||||
  
 | 
			
		||||
  def __init__(self, player_url=None, 
 | 
			
		||||
      extension_attributes=None, extension_elements=None):
 | 
			
		||||
    MediaBaseElement.__init__(self, extension_elements=extension_elements,
 | 
			
		||||
                              extension_attributes=extension_attributes)
 | 
			
		||||
    self.url= player_url
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Private(atom.AtomBase):
 | 
			
		||||
  """The YouTube Private element"""
 | 
			
		||||
  _tag = 'private'
 | 
			
		||||
  _namespace = YOUTUBE_NAMESPACE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Duration(atom.AtomBase):
 | 
			
		||||
  """The YouTube Duration element"""
 | 
			
		||||
  _tag = 'duration'
 | 
			
		||||
  _namespace = YOUTUBE_NAMESPACE
 | 
			
		||||
  _attributes = atom.AtomBase._attributes.copy()
 | 
			
		||||
  _attributes['seconds'] = 'seconds'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Category(MediaBaseElement):
 | 
			
		||||
  """The mediagroup:category element"""
 | 
			
		||||
 | 
			
		||||
  _tag = 'category'
 | 
			
		||||
  _attributes = atom.AtomBase._attributes.copy()
 | 
			
		||||
  _attributes['term'] = 'term'
 | 
			
		||||
  _attributes['scheme'] = 'scheme'
 | 
			
		||||
  _attributes['label'] = 'label'
 | 
			
		||||
 | 
			
		||||
  def __init__(self, term=None, scheme=None, label=None, text=None, 
 | 
			
		||||
               extension_elements=None, extension_attributes=None):
 | 
			
		||||
    """Constructor for Category
 | 
			
		||||
 | 
			
		||||
    Args:
 | 
			
		||||
      term: str
 | 
			
		||||
      scheme: str
 | 
			
		||||
      label: str
 | 
			
		||||
      text: str The text data in the this element
 | 
			
		||||
      extension_elements: list A  list of ExtensionElement instances
 | 
			
		||||
      extension_attributes: dict A dictionary of attribute value string pairs
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    self.term = term
 | 
			
		||||
    self.scheme = scheme
 | 
			
		||||
    self.label = label
 | 
			
		||||
    self.text = text
 | 
			
		||||
    self.extension_elements = extension_elements or []
 | 
			
		||||
    self.extension_attributes = extension_attributes or {}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Group(MediaBaseElement):
 | 
			
		||||
  """Container element for all media elements.
 | 
			
		||||
  The <media:group> element can appear as a child of an album, photo or 
 | 
			
		||||
  video entry."""
 | 
			
		||||
 | 
			
		||||
  _tag = 'group'
 | 
			
		||||
  _children = atom.AtomBase._children.copy()
 | 
			
		||||
  _children['{%s}content' % MEDIA_NAMESPACE] = ('content', [Content,]) 
 | 
			
		||||
  _children['{%s}credit' % MEDIA_NAMESPACE] = ('credit', Credit) 
 | 
			
		||||
  _children['{%s}description' % MEDIA_NAMESPACE] = ('description', Description) 
 | 
			
		||||
  _children['{%s}keywords' % MEDIA_NAMESPACE] = ('keywords', Keywords) 
 | 
			
		||||
  _children['{%s}thumbnail' % MEDIA_NAMESPACE] = ('thumbnail', [Thumbnail,])
 | 
			
		||||
  _children['{%s}title' % MEDIA_NAMESPACE] = ('title', Title) 
 | 
			
		||||
  _children['{%s}category' % MEDIA_NAMESPACE] = ('category', [Category,]) 
 | 
			
		||||
  _children['{%s}duration' % YOUTUBE_NAMESPACE] = ('duration', Duration)
 | 
			
		||||
  _children['{%s}private' % YOUTUBE_NAMESPACE] = ('private', Private)
 | 
			
		||||
  _children['{%s}player' % MEDIA_NAMESPACE] = ('player', Player)
 | 
			
		||||
 | 
			
		||||
  def __init__(self, content=None, credit=None, description=None, keywords=None,
 | 
			
		||||
               thumbnail=None, title=None, duration=None, private=None, 
 | 
			
		||||
               category=None, player=None, extension_elements=None, 
 | 
			
		||||
               extension_attributes=None, text=None):
 | 
			
		||||
 | 
			
		||||
    MediaBaseElement.__init__(self, extension_elements=extension_elements,
 | 
			
		||||
                              extension_attributes=extension_attributes,
 | 
			
		||||
                              text=text)
 | 
			
		||||
    self.content=content
 | 
			
		||||
    self.credit=credit
 | 
			
		||||
    self.description=description
 | 
			
		||||
    self.keywords=keywords
 | 
			
		||||
    self.thumbnail=thumbnail or []
 | 
			
		||||
    self.title=title
 | 
			
		||||
    self.duration=duration
 | 
			
		||||
    self.private=private
 | 
			
		||||
    self.category=category or []
 | 
			
		||||
    self.player=player
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def GroupFromString(xml_string):
 | 
			
		||||
  return atom.CreateClassFromXMLString(Group, xml_string)
 | 
			
		||||
							
								
								
									
										159
									
								
								python/gdata/media/data.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								python/gdata/media/data.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,159 @@
 | 
			
		||||
#!/usr/bin/python
 | 
			
		||||
#
 | 
			
		||||
# Copyright (C) 2009 Google Inc.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
"""Contains the data classes of the Yahoo! Media RSS Extension"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
__author__ = 'j.s@google.com (Jeff Scudder)'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import atom.core
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
MEDIA_TEMPLATE = '{http://search.yahoo.com/mrss//}%s'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaCategory(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media category."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'category'
 | 
			
		||||
  scheme = 'scheme'
 | 
			
		||||
  label = 'label'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaCopyright(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media copyright."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'copyright'
 | 
			
		||||
  url = 'url'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaCredit(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media credit."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'credit'
 | 
			
		||||
  role = 'role'
 | 
			
		||||
  scheme = 'scheme'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaDescription(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media description."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'description'
 | 
			
		||||
  type = 'type'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaHash(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media hash."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'hash'
 | 
			
		||||
  algo = 'algo'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaKeywords(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media keywords."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'keywords'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaPlayer(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media player."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'player'
 | 
			
		||||
  height = 'height'
 | 
			
		||||
  width = 'width'
 | 
			
		||||
  url = 'url'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaRating(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media rating."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'rating'
 | 
			
		||||
  scheme = 'scheme'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaRestriction(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media restriction."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'restriction'
 | 
			
		||||
  relationship = 'relationship'
 | 
			
		||||
  type = 'type'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaText(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media text."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'text'
 | 
			
		||||
  end = 'end'
 | 
			
		||||
  lang = 'lang'
 | 
			
		||||
  type = 'type'
 | 
			
		||||
  start = 'start'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaThumbnail(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media thumbnail."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'thumbnail'
 | 
			
		||||
  time = 'time'
 | 
			
		||||
  url = 'url'
 | 
			
		||||
  width = 'width'
 | 
			
		||||
  height = 'height'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaTitle(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media title."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'title'
 | 
			
		||||
  type = 'type'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaContent(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media content."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'content'
 | 
			
		||||
  bitrate = 'bitrate'
 | 
			
		||||
  is_default = 'isDefault'
 | 
			
		||||
  medium = 'medium'
 | 
			
		||||
  height = 'height'
 | 
			
		||||
  credit = [MediaCredit]
 | 
			
		||||
  language = 'language'
 | 
			
		||||
  hash = MediaHash
 | 
			
		||||
  width = 'width'
 | 
			
		||||
  player = MediaPlayer
 | 
			
		||||
  url = 'url'
 | 
			
		||||
  file_size = 'fileSize'
 | 
			
		||||
  channels = 'channels'
 | 
			
		||||
  expression = 'expression'
 | 
			
		||||
  text = [MediaText]
 | 
			
		||||
  samplingrate = 'samplingrate'
 | 
			
		||||
  title = MediaTitle
 | 
			
		||||
  category = [MediaCategory]
 | 
			
		||||
  rating = [MediaRating]
 | 
			
		||||
  type = 'type'
 | 
			
		||||
  description = MediaDescription
 | 
			
		||||
  framerate = 'framerate'
 | 
			
		||||
  thumbnail = [MediaThumbnail]
 | 
			
		||||
  duration = 'duration'
 | 
			
		||||
  copyright = MediaCopyright
 | 
			
		||||
  keywords = MediaKeywords
 | 
			
		||||
  restriction = [MediaRestriction]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MediaGroup(atom.core.XmlElement):
 | 
			
		||||
  """Describes a media group."""
 | 
			
		||||
  _qname = MEDIA_TEMPLATE % 'group'
 | 
			
		||||
  credit = [MediaCredit]
 | 
			
		||||
  content = [MediaContent]
 | 
			
		||||
  copyright = MediaCopyright
 | 
			
		||||
  description = MediaDescription
 | 
			
		||||
  category = [MediaCategory]
 | 
			
		||||
  player = MediaPlayer
 | 
			
		||||
  rating = [MediaRating]
 | 
			
		||||
  hash = MediaHash
 | 
			
		||||
  title = MediaTitle
 | 
			
		||||
  keywords = MediaKeywords
 | 
			
		||||
  restriction = [MediaRestriction]
 | 
			
		||||
  thumbnail = [MediaThumbnail]
 | 
			
		||||
  text = [MediaText]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user