1
0
mirror of https://github.com/l1ving/youtube-dl synced 2024-11-22 09:32:51 +08:00

[TeacherTube] add user + collection, removed classrooms

This commit is contained in:
Petr Půlpán 2014-06-29 13:45:10 +02:00
parent 9b27e6c3b4
commit 31a196d7f5
3 changed files with 25 additions and 15 deletions

View File

@ -28,7 +28,7 @@ from youtube_dl.extractor import (
SoundcloudSetIE, SoundcloudSetIE,
SoundcloudUserIE, SoundcloudUserIE,
SoundcloudPlaylistIE, SoundcloudPlaylistIE,
TeacherTubeClassroomIE, TeacherTubeUserIE,
LivestreamIE, LivestreamIE,
LivestreamOriginalIE, LivestreamOriginalIE,
NHLVideocenterIE, NHLVideocenterIE,
@ -379,13 +379,13 @@ class TestPlaylists(unittest.TestCase):
result['title'], 'Brace Yourself - Today\'s Weirdest News') result['title'], 'Brace Yourself - Today\'s Weirdest News')
self.assertTrue(len(result['entries']) >= 10) self.assertTrue(len(result['entries']) >= 10)
def test_TeacherTubeClassroom(self): def test_TeacherTubeUser(self):
dl = FakeYDL() dl = FakeYDL()
ie = TeacherTubeClassroomIE(dl) ie = TeacherTubeUserIE(dl)
result = ie.extract('http://www.teachertube.com/view_classroom.php?user=rbhagwati2') result = ie.extract('http://www.teachertube.com/user/profile/rbhagwati2')
self.assertIsPlaylist(result) self.assertIsPlaylist(result)
self.assertEqual(result['id'], 'rbhagwati2') self.assertEqual(result['id'], 'rbhagwati2')
self.assertTrue(len(result['entries']) >= 20) self.assertTrue(len(result['entries']) >= 179)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()

View File

@ -282,7 +282,7 @@ from .sztvhu import SztvHuIE
from .tagesschau import TagesschauIE from .tagesschau import TagesschauIE
from .teachertube import ( from .teachertube import (
TeacherTubeIE, TeacherTubeIE,
TeacherTubeClassroomIE, TeacherTubeUserIE,
) )
from .teachingchannel import TeachingChannelIE from .teachingchannel import TeachingChannelIE
from .teamcoco import TeamcocoIE from .teamcoco import TeamcocoIE

View File

@ -86,22 +86,32 @@ class TeacherTubeIE(InfoExtractor):
} }
class TeacherTubeClassroomIE(InfoExtractor): class TeacherTubeUserIE(InfoExtractor):
IE_NAME = 'teachertube:classroom' IE_NAME = 'teachertube:user:collection'
IE_DESC = 'teachertube.com online classrooms' IE_DESC = 'teachertube.com user and collection videos'
_VALID_URL = r'https?://(?:www\.)?teachertube\.com/view_classroom\.php\?user=(?P<user>[0-9a-zA-Z]+)' _VALID_URL = r'https?://(?:www\.)?teachertube\.com/(user/profile|collection)/(?P<user>[0-9a-zA-Z]+)/?'
def _real_extract(self, url): def _real_extract(self, url):
mobj = re.match(self._VALID_URL, url) mobj = re.match(self._VALID_URL, url)
user_id = mobj.group('user') user_id = mobj.group('user')
rss = self._download_xml( urls = []
'http://www.teachertube.com/rssclassroom.php?mode=user&username=%s' % user_id, webpage = self._download_webpage(url, user_id)
user_id, 'Downloading classroom RSS') urls.extend(re.findall(
r'"sidebar_thumb_time">[0-9:]+</div>\s+<a href="(https?://(?:www\.)?teachertube\.com/(video|audio)/[^"]+)">',
webpage))
pages = re.findall(r'/ajax-user/user-videos/%s\?page=([0-9]+)' % user_id, webpage)[1:-1]
for p in pages:
more = 'http://www.teachertube.com/ajax-user/user-videos/%s?page=%s' % (user_id, p)
webpage = self._download_webpage(more, user_id, 'Downloading page %s/%s' % (p, len(pages) + 1))
urls.extend(re.findall(
r'"sidebar_thumb_time">[0-9:]+</div>\s+<a href="(https?://(?:www\.)?teachertube\.com/(video|audio)/[^"]+)">',
webpage))
entries = [] entries = []
for url in rss.findall('.//{http://search.yahoo.com/mrss/}player'): for url in urls:
entries.append(self.url_result(url.attrib['url'], 'TeacherTube')) entries.append(self.url_result(url, 'TeacherTube'))
return self.playlist_result(entries, user_id) return self.playlist_result(entries, user_id)