| #!/usr/bin/python |
| # |
| # Copyright (C) 2008 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. |
| |
| __author__ = ('api.stephaniel@gmail.com (Stephanie Liu)' |
| ', api.jhartmann@gmail.com (Jochen Hartmann)') |
| |
| import atom |
| import gdata |
| import gdata.media as Media |
| import gdata.geo as Geo |
| |
| YOUTUBE_NAMESPACE = 'http://gdata.youtube.com/schemas/2007' |
| YOUTUBE_FORMAT = '{http://gdata.youtube.com/schemas/2007}format' |
| YOUTUBE_DEVELOPER_TAG_SCHEME = '%s/%s' % (YOUTUBE_NAMESPACE, |
| 'developertags.cat') |
| YOUTUBE_SUBSCRIPTION_TYPE_SCHEME = '%s/%s' % (YOUTUBE_NAMESPACE, |
| 'subscriptiontypes.cat') |
| |
| class Username(atom.AtomBase): |
| """The YouTube Username element""" |
| _tag = 'username' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| class QueryString(atom.AtomBase): |
| """The YouTube QueryString element""" |
| _tag = 'queryString' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class FirstName(atom.AtomBase): |
| """The YouTube FirstName element""" |
| _tag = 'firstName' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class LastName(atom.AtomBase): |
| """The YouTube LastName element""" |
| _tag = 'lastName' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Age(atom.AtomBase): |
| """The YouTube Age element""" |
| _tag = 'age' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Books(atom.AtomBase): |
| """The YouTube Books element""" |
| _tag = 'books' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Gender(atom.AtomBase): |
| """The YouTube Gender element""" |
| _tag = 'gender' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Company(atom.AtomBase): |
| """The YouTube Company element""" |
| _tag = 'company' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Hobbies(atom.AtomBase): |
| """The YouTube Hobbies element""" |
| _tag = 'hobbies' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Hometown(atom.AtomBase): |
| """The YouTube Hometown element""" |
| _tag = 'hometown' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Location(atom.AtomBase): |
| """The YouTube Location element""" |
| _tag = 'location' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Movies(atom.AtomBase): |
| """The YouTube Movies element""" |
| _tag = 'movies' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Music(atom.AtomBase): |
| """The YouTube Music element""" |
| _tag = 'music' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Occupation(atom.AtomBase): |
| """The YouTube Occupation element""" |
| _tag = 'occupation' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class School(atom.AtomBase): |
| """The YouTube School element""" |
| _tag = 'school' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Relationship(atom.AtomBase): |
| """The YouTube Relationship element""" |
| _tag = 'relationship' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Recorded(atom.AtomBase): |
| """The YouTube Recorded element""" |
| _tag = 'recorded' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Statistics(atom.AtomBase): |
| """The YouTube Statistics element.""" |
| _tag = 'statistics' |
| _namespace = YOUTUBE_NAMESPACE |
| _attributes = atom.AtomBase._attributes.copy() |
| _attributes['viewCount'] = 'view_count' |
| _attributes['videoWatchCount'] = 'video_watch_count' |
| _attributes['subscriberCount'] = 'subscriber_count' |
| _attributes['lastWebAccess'] = 'last_web_access' |
| _attributes['favoriteCount'] = 'favorite_count' |
| |
| def __init__(self, view_count=None, video_watch_count=None, |
| favorite_count=None, subscriber_count=None, last_web_access=None, |
| extension_elements=None, extension_attributes=None, text=None): |
| |
| self.view_count = view_count |
| self.video_watch_count = video_watch_count |
| self.subscriber_count = subscriber_count |
| self.last_web_access = last_web_access |
| self.favorite_count = favorite_count |
| |
| atom.AtomBase.__init__(self, extension_elements=extension_elements, |
| extension_attributes=extension_attributes, text=text) |
| |
| |
| class Status(atom.AtomBase): |
| """The YouTube Status element""" |
| _tag = 'status' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Position(atom.AtomBase): |
| """The YouTube Position element. The position in a playlist feed.""" |
| _tag = 'position' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Racy(atom.AtomBase): |
| """The YouTube Racy element.""" |
| _tag = 'racy' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| class Description(atom.AtomBase): |
| """The YouTube Description element.""" |
| _tag = 'description' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Private(atom.AtomBase): |
| """The YouTube Private element.""" |
| _tag = 'private' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class NoEmbed(atom.AtomBase): |
| """The YouTube VideoShare element. Whether a video can be embedded or not.""" |
| _tag = 'noembed' |
| _namespace = YOUTUBE_NAMESPACE |
| |
| |
| class Comments(atom.AtomBase): |
| """The GData Comments element""" |
| _tag = 'comments' |
| _namespace = gdata.GDATA_NAMESPACE |
| _children = atom.AtomBase._children.copy() |
| _attributes = atom.AtomBase._attributes.copy() |
| _children['{%s}feedLink' % gdata.GDATA_NAMESPACE] = ('feed_link', |
| [gdata.FeedLink]) |
| |
| def __init__(self, feed_link=None, extension_elements=None, |
| extension_attributes=None, text=None): |
| |
| self.feed_link = feed_link |
| atom.AtomBase.__init__(self, extension_elements=extension_elements, |
| extension_attributes=extension_attributes, text=text) |
| |
| |
| class Rating(atom.AtomBase): |
| """The GData Rating element""" |
| _tag = 'rating' |
| _namespace = gdata.GDATA_NAMESPACE |
| _attributes = atom.AtomBase._attributes.copy() |
| _attributes['min'] = 'min' |
| _attributes['max'] = 'max' |
| _attributes['numRaters'] = 'num_raters' |
| _attributes['average'] = 'average' |
| |
| def __init__(self, min=None, max=None, |
| num_raters=None, average=None, extension_elements=None, |
| extension_attributes=None, text=None): |
| |
| self.min = min |
| self.max = max |
| self.num_raters = num_raters |
| self.average = average |
| |
| atom.AtomBase.__init__(self, extension_elements=extension_elements, |
| extension_attributes=extension_attributes, text=text) |
| |
| |
| class YouTubePlaylistVideoEntry(gdata.GDataEntry): |
| """Represents a YouTubeVideoEntry on a YouTubePlaylist.""" |
| _tag = gdata.GDataEntry._tag |
| _namespace = gdata.GDataEntry._namespace |
| _children = gdata.GDataEntry._children.copy() |
| _attributes = gdata.GDataEntry._attributes.copy() |
| _children['{%s}feedLink' % gdata.GDATA_NAMESPACE] = ('feed_link', |
| [gdata.FeedLink]) |
| _children['{%s}description' % YOUTUBE_NAMESPACE] = ('description', |
| Description) |
| _children['{%s}rating' % gdata.GDATA_NAMESPACE] = ('rating', Rating) |
| _children['{%s}comments' % gdata.GDATA_NAMESPACE] = ('comments', Comments) |
| _children['{%s}statistics' % YOUTUBE_NAMESPACE] = ('statistics', Statistics) |
| _children['{%s}location' % YOUTUBE_NAMESPACE] = ('location', Location) |
| _children['{%s}position' % YOUTUBE_NAMESPACE] = ('position', Position) |
| _children['{%s}group' % gdata.media.MEDIA_NAMESPACE] = ('media', Media.Group) |
| |
| def __init__(self, author=None, category=None, content=None, |
| atom_id=None, link=None, published=None, title=None, |
| updated=None, feed_link=None, description=None, |
| rating=None, comments=None, statistics=None, |
| location=None, position=None, media=None, |
| extension_elements=None, extension_attributes=None): |
| |
| self.feed_link = feed_link |
| self.description = description |
| self.rating = rating |
| self.comments = comments |
| self.statistics = statistics |
| self.location = location |
| self.position = position |
| self.media = media |
| |
| gdata.GDataEntry.__init__(self, author=author, category=category, |
| content=content, atom_id=atom_id, |
| link=link, published=published, title=title, |
| updated=updated, |
| extension_elements=extension_elements, |
| extension_attributes=extension_attributes) |
| |
| |
| class YouTubeVideoCommentEntry(gdata.GDataEntry): |
| """Represents a comment on YouTube.""" |
| _tag = gdata.GDataEntry._tag |
| _namespace = gdata.GDataEntry._namespace |
| _children = gdata.GDataEntry._children.copy() |
| _attributes = gdata.GDataEntry._attributes.copy() |
| |
| |
| class YouTubeSubscriptionEntry(gdata.GDataEntry): |
| """Represents a subscription entry on YouTube.""" |
| _tag = gdata.GDataEntry._tag |
| _namespace = gdata.GDataEntry._namespace |
| _children = gdata.GDataEntry._children.copy() |
| _attributes = gdata.GDataEntry._attributes.copy() |
| _children['{%s}username' % YOUTUBE_NAMESPACE] = ('username', Username) |
| _children['{%s}queryString' % YOUTUBE_NAMESPACE] = ( |
| 'query_string', QueryString) |
| _children['{%s}feedLink' % gdata.GDATA_NAMESPACE] = ('feed_link', |
| [gdata.FeedLink]) |
| |
| def __init__(self, author=None, category=None, content=None, |
| atom_id=None, link=None, published=None, title=None, |
| updated=None, username=None, query_string=None, feed_link=None, |
| extension_elements=None, extension_attributes=None): |
| |
| gdata.GDataEntry.__init__(self, author=author, category=category, |
| content=content, atom_id=atom_id, link=link, |
| published=published, title=title, updated=updated) |
| |
| self.username = username |
| self.query_string = query_string |
| self.feed_link = feed_link |
| |
| |
| def GetSubscriptionType(self): |
| """Retrieve the type of this subscription. |
| |
| Returns: |
| A string that is either 'channel, 'query' or 'favorites' |
| """ |
| for category in self.category: |
| if category.scheme == YOUTUBE_SUBSCRIPTION_TYPE_SCHEME: |
| return category.term |
| |
| |
| class YouTubeVideoResponseEntry(gdata.GDataEntry): |
| """Represents a video response. """ |
| _tag = gdata.GDataEntry._tag |
| _namespace = gdata.GDataEntry._namespace |
| _children = gdata.GDataEntry._children.copy() |
| _attributes = gdata.GDataEntry._attributes.copy() |
| _children['{%s}rating' % gdata.GDATA_NAMESPACE] = ('rating', Rating) |
| _children['{%s}noembed' % YOUTUBE_NAMESPACE] = ('noembed', NoEmbed) |
| _children['{%s}statistics' % YOUTUBE_NAMESPACE] = ('statistics', Statistics) |
| _children['{%s}racy' % YOUTUBE_NAMESPACE] = ('racy', Racy) |
| _children['{%s}group' % gdata.media.MEDIA_NAMESPACE] = ('media', Media.Group) |
| |
| def __init__(self, author=None, category=None, content=None, atom_id=None, |
| link=None, published=None, title=None, updated=None, rating=None, |
| noembed=None, statistics=None, racy=None, media=None, |
| extension_elements=None, extension_attributes=None): |
| |
| gdata.GDataEntry.__init__(self, author=author, category=category, |
| content=content, atom_id=atom_id, link=link, |
| published=published, title=title, updated=updated) |
| |
| self.rating = rating |
| self.noembed = noembed |
| self.statistics = statistics |
| self.racy = racy |
| self.media = media or Media.Group() |
| |
| |
| class YouTubeContactEntry(gdata.GDataEntry): |
| """Represents a contact entry.""" |
| _tag = gdata.GDataEntry._tag |
| _namespace = gdata.GDataEntry._namespace |
| _children = gdata.GDataEntry._children.copy() |
| _attributes = gdata.GDataEntry._attributes.copy() |
| _children['{%s}username' % YOUTUBE_NAMESPACE] = ('username', Username) |
| _children['{%s}status' % YOUTUBE_NAMESPACE] = ('status', Status) |
| |
| |
| def __init__(self, author=None, category=None, content=None, atom_id=None, |
| link=None, published=None, title=None, updated=None, |
| username=None, status=None, extension_elements=None, |
| extension_attributes=None, text=None): |
| |
| gdata.GDataEntry.__init__(self, author=author, category=category, |
| content=content, atom_id=atom_id, link=link, |
| published=published, title=title, updated=updated) |
| |
| self.username = username |
| self.status = status |
| |
| |
| class YouTubeVideoEntry(gdata.GDataEntry): |
| """Represents a video on YouTube.""" |
| _tag = gdata.GDataEntry._tag |
| _namespace = gdata.GDataEntry._namespace |
| _children = gdata.GDataEntry._children.copy() |
| _attributes = gdata.GDataEntry._attributes.copy() |
| _children['{%s}rating' % gdata.GDATA_NAMESPACE] = ('rating', Rating) |
| _children['{%s}comments' % gdata.GDATA_NAMESPACE] = ('comments', Comments) |
| _children['{%s}noembed' % YOUTUBE_NAMESPACE] = ('noembed', NoEmbed) |
| _children['{%s}statistics' % YOUTUBE_NAMESPACE] = ('statistics', Statistics) |
| _children['{%s}recorded' % YOUTUBE_NAMESPACE] = ('recorded', Recorded) |
| _children['{%s}racy' % YOUTUBE_NAMESPACE] = ('racy', Racy) |
| _children['{%s}group' % gdata.media.MEDIA_NAMESPACE] = ('media', Media.Group) |
| _children['{%s}where' % gdata.geo.GEORSS_NAMESPACE] = ('geo', Geo.Where) |
| |
| def __init__(self, author=None, category=None, content=None, atom_id=None, |
| link=None, published=None, title=None, updated=None, rating=None, |
| noembed=None, statistics=None, racy=None, media=None, geo=None, |
| recorded=None, comments=None, extension_elements=None, |
| extension_attributes=None): |
| |
| self.rating = rating |
| self.noembed = noembed |
| self.statistics = statistics |
| self.racy = racy |
| self.comments = comments |
| self.media = media or Media.Group() |
| self.geo = geo |
| self.recorded = recorded |
| |
| gdata.GDataEntry.__init__(self, author=author, category=category, |
| content=content, atom_id=atom_id, link=link, |
| published=published, title=title, updated=updated, |
| extension_elements=extension_elements, |
| extension_attributes=extension_attributes) |
| |
| def GetSwfUrl(self): |
| """Return the URL for the embeddable Video |
| |
| Returns: |
| URL of the embeddable video |
| """ |
| if self.media.content: |
| for content in self.media.content: |
| if content.extension_attributes[YOUTUBE_FORMAT] == '5': |
| return content.url |
| else: |
| return None |
| |
| def AddDeveloperTags(self, developer_tags): |
| """Add a developer tag for this entry. |
| |
| Developer tags can only be set during the initial upload. |
| |
| Arguments: |
| developer_tags: A list of developer tags as strings. |
| |
| Returns: |
| A list of all developer tags for this video entry. |
| """ |
| for tag_text in developer_tags: |
| self.media.category.append(gdata.media.Category( |
| text=tag_text, label=tag_text, scheme=YOUTUBE_DEVELOPER_TAG_SCHEME)) |
| |
| return self.GetDeveloperTags() |
| |
| def GetDeveloperTags(self): |
| """Retrieve developer tags for this video entry.""" |
| developer_tags = [] |
| for category in self.media.category: |
| if category.scheme == YOUTUBE_DEVELOPER_TAG_SCHEME: |
| developer_tags.append(category) |
| if len(developer_tags) > 0: |
| return developer_tags |
| |
| def GetYouTubeCategoryAsString(self): |
| """Convenience method to return the YouTube category as string. |
| |
| YouTubeVideoEntries can contain multiple Category objects with differing |
| schemes. This method returns only the category with the correct |
| scheme, ignoring developer tags. |
| """ |
| for category in self.media.category: |
| if category.scheme != YOUTUBE_DEVELOPER_TAG_SCHEME: |
| return category.text |
| |
| class YouTubeUserEntry(gdata.GDataEntry): |
| """Represents a user on YouTube.""" |
| _tag = gdata.GDataEntry._tag |
| _namespace = gdata.GDataEntry._namespace |
| _children = gdata.GDataEntry._children.copy() |
| _attributes = gdata.GDataEntry._attributes.copy() |
| _children['{%s}username' % YOUTUBE_NAMESPACE] = ('username', Username) |
| _children['{%s}firstName' % YOUTUBE_NAMESPACE] = ('first_name', FirstName) |
| _children['{%s}lastName' % YOUTUBE_NAMESPACE] = ('last_name', LastName) |
| _children['{%s}age' % YOUTUBE_NAMESPACE] = ('age', Age) |
| _children['{%s}books' % YOUTUBE_NAMESPACE] = ('books', Books) |
| _children['{%s}gender' % YOUTUBE_NAMESPACE] = ('gender', Gender) |
| _children['{%s}company' % YOUTUBE_NAMESPACE] = ('company', Company) |
| _children['{%s}description' % YOUTUBE_NAMESPACE] = ('description', |
| Description) |
| _children['{%s}hobbies' % YOUTUBE_NAMESPACE] = ('hobbies', Hobbies) |
| _children['{%s}hometown' % YOUTUBE_NAMESPACE] = ('hometown', Hometown) |
| _children['{%s}location' % YOUTUBE_NAMESPACE] = ('location', Location) |
| _children['{%s}movies' % YOUTUBE_NAMESPACE] = ('movies', Movies) |
| _children['{%s}music' % YOUTUBE_NAMESPACE] = ('music', Music) |
| _children['{%s}occupation' % YOUTUBE_NAMESPACE] = ('occupation', Occupation) |
| _children['{%s}school' % YOUTUBE_NAMESPACE] = ('school', School) |
| _children['{%s}relationship' % YOUTUBE_NAMESPACE] = ('relationship', |
| Relationship) |
| _children['{%s}statistics' % YOUTUBE_NAMESPACE] = ('statistics', Statistics) |
| _children['{%s}feedLink' % gdata.GDATA_NAMESPACE] = ('feed_link', |
| [gdata.FeedLink]) |
| _children['{%s}thumbnail' % gdata.media.MEDIA_NAMESPACE] = ('thumbnail', |
| Media.Thumbnail) |
| |
| def __init__(self, author=None, category=None, content=None, atom_id=None, |
| link=None, published=None, title=None, updated=None, |
| username=None, first_name=None, last_name=None, age=None, |
| books=None, gender=None, company=None, description=None, |
| hobbies=None, hometown=None, location=None, movies=None, |
| music=None, occupation=None, school=None, relationship=None, |
| statistics=None, feed_link=None, extension_elements=None, |
| extension_attributes=None, text=None): |
| |
| self.username = username |
| self.first_name = first_name |
| self.last_name = last_name |
| self.age = age |
| self.books = books |
| self.gender = gender |
| self.company = company |
| self.description = description |
| self.hobbies = hobbies |
| self.hometown = hometown |
| self.location = location |
| self.movies = movies |
| self.music = music |
| self.occupation = occupation |
| self.school = school |
| self.relationship = relationship |
| self.statistics = statistics |
| self.feed_link = feed_link |
| |
| gdata.GDataEntry.__init__(self, author=author, category=category, |
| content=content, atom_id=atom_id, |
| link=link, published=published, |
| title=title, updated=updated, |
| extension_elements=extension_elements, |
| extension_attributes=extension_attributes, |
| text=text) |
| |
| |
| class YouTubeVideoFeed(gdata.GDataFeed, gdata.LinkFinder): |
| """Represents a video feed on YouTube.""" |
| _tag = gdata.GDataFeed._tag |
| _namespace = gdata.GDataFeed._namespace |
| _children = gdata.GDataFeed._children.copy() |
| _attributes = gdata.GDataFeed._attributes.copy() |
| _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', [YouTubeVideoEntry]) |
| |
| class YouTubePlaylistEntry(gdata.GDataEntry): |
| """Represents a playlist in YouTube.""" |
| _tag = gdata.GDataEntry._tag |
| _namespace = gdata.GDataEntry._namespace |
| _children = gdata.GDataEntry._children.copy() |
| _attributes = gdata.GDataEntry._attributes.copy() |
| _children['{%s}description' % YOUTUBE_NAMESPACE] = ('description', |
| Description) |
| _children['{%s}private' % YOUTUBE_NAMESPACE] = ('private', |
| Private) |
| _children['{%s}feedLink' % gdata.GDATA_NAMESPACE] = ('feed_link', |
| [gdata.FeedLink]) |
| |
| def __init__(self, author=None, category=None, content=None, |
| atom_id=None, link=None, published=None, title=None, |
| updated=None, private=None, feed_link=None, |
| description=None, extension_elements=None, |
| extension_attributes=None): |
| |
| self.description = description |
| self.private = private |
| self.feed_link = feed_link |
| |
| gdata.GDataEntry.__init__(self, author=author, category=category, |
| content=content, atom_id=atom_id, |
| link=link, published=published, title=title, |
| updated=updated, |
| extension_elements=extension_elements, |
| extension_attributes=extension_attributes) |
| |
| |
| |
| class YouTubePlaylistFeed(gdata.GDataFeed, gdata.LinkFinder): |
| """Represents a feed of a user's playlists """ |
| _tag = gdata.GDataFeed._tag |
| _namespace = gdata.GDataFeed._namespace |
| _children = gdata.GDataFeed._children.copy() |
| _attributes = gdata.GDataFeed._attributes.copy() |
| _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', |
| [YouTubePlaylistEntry]) |
| |
| |
| class YouTubePlaylistVideoFeed(gdata.GDataFeed, gdata.LinkFinder): |
| """Represents a feed of video entry on a playlist.""" |
| _tag = gdata.GDataFeed._tag |
| _namespace = gdata.GDataFeed._namespace |
| _children = gdata.GDataFeed._children.copy() |
| _attributes = gdata.GDataFeed._attributes.copy() |
| _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', |
| [YouTubePlaylistVideoEntry]) |
| |
| |
| class YouTubeContactFeed(gdata.GDataFeed, gdata.LinkFinder): |
| """Represents a feed of a users contacts.""" |
| _tag = gdata.GDataFeed._tag |
| _namespace = gdata.GDataFeed._namespace |
| _children = gdata.GDataFeed._children.copy() |
| _attributes = gdata.GDataFeed._attributes.copy() |
| _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', |
| [YouTubeContactEntry]) |
| |
| |
| class YouTubeSubscriptionFeed(gdata.GDataFeed, gdata.LinkFinder): |
| """Represents a feed of a users subscriptions.""" |
| _tag = gdata.GDataFeed._tag |
| _namespace = gdata.GDataFeed._namespace |
| _children = gdata.GDataFeed._children.copy() |
| _attributes = gdata.GDataFeed._attributes.copy() |
| _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', |
| [YouTubeSubscriptionEntry]) |
| |
| |
| class YouTubeVideoCommentFeed(gdata.GDataFeed, gdata.LinkFinder): |
| """Represents a feed of comments for a video.""" |
| _tag = gdata.GDataFeed._tag |
| _namespace = gdata.GDataFeed._namespace |
| _children = gdata.GDataFeed._children.copy() |
| _attributes = gdata.GDataFeed._attributes.copy() |
| _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', |
| [YouTubeVideoCommentEntry]) |
| |
| |
| class YouTubeVideoResponseFeed(gdata.GDataFeed, gdata.LinkFinder): |
| """Represents a feed of video responses.""" |
| _tag = gdata.GDataFeed._tag |
| _namespace = gdata.GDataFeed._namespace |
| _children = gdata.GDataFeed._children.copy() |
| _attributes = gdata.GDataFeed._attributes.copy() |
| _children['{%s}entry' % atom.ATOM_NAMESPACE] = ('entry', |
| [YouTubeVideoResponseEntry]) |
| |
| |
| def YouTubeVideoFeedFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubeVideoFeed, xml_string) |
| |
| |
| def YouTubeVideoEntryFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubeVideoEntry, xml_string) |
| |
| |
| def YouTubeContactFeedFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubeContactFeed, xml_string) |
| |
| |
| def YouTubeContactEntryFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubeContactEntry, xml_string) |
| |
| |
| def YouTubeVideoCommentFeedFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubeVideoCommentFeed, xml_string) |
| |
| |
| def YouTubeVideoCommentEntryFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubeVideoCommentEntry, xml_string) |
| |
| |
| def YouTubeUserFeedFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubeVideoFeed, xml_string) |
| |
| |
| def YouTubeUserEntryFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubeUserEntry, xml_string) |
| |
| |
| def YouTubePlaylistFeedFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubePlaylistFeed, xml_string) |
| |
| |
| def YouTubePlaylistVideoFeedFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubePlaylistVideoFeed, xml_string) |
| |
| |
| def YouTubePlaylistEntryFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubePlaylistEntry, xml_string) |
| |
| |
| def YouTubePlaylistVideoEntryFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubePlaylistVideoEntry, xml_string) |
| |
| |
| def YouTubeSubscriptionFeedFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubeSubscriptionFeed, xml_string) |
| |
| |
| def YouTubeSubscriptionEntryFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubeSubscriptionEntry, xml_string) |
| |
| |
| def YouTubeVideoResponseFeedFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubeVideoResponseFeed, xml_string) |
| |
| |
| def YouTubeVideoResponseEntryFromString(xml_string): |
| return atom.CreateClassFromXMLString(YouTubeVideoResponseEntry, xml_string) |