forked from minhngoc25a/yt-dlc
[TeacherTube] add user + collection, removed classrooms
This commit is contained in:
parent
9b27e6c3b4
commit
31a196d7f5
|
@ -28,7 +28,7 @@ from youtube_dl.extractor import (
|
|||
SoundcloudSetIE,
|
||||
SoundcloudUserIE,
|
||||
SoundcloudPlaylistIE,
|
||||
TeacherTubeClassroomIE,
|
||||
TeacherTubeUserIE,
|
||||
LivestreamIE,
|
||||
LivestreamOriginalIE,
|
||||
NHLVideocenterIE,
|
||||
|
@ -379,13 +379,13 @@ class TestPlaylists(unittest.TestCase):
|
|||
result['title'], 'Brace Yourself - Today\'s Weirdest News')
|
||||
self.assertTrue(len(result['entries']) >= 10)
|
||||
|
||||
def test_TeacherTubeClassroom(self):
|
||||
def test_TeacherTubeUser(self):
|
||||
dl = FakeYDL()
|
||||
ie = TeacherTubeClassroomIE(dl)
|
||||
result = ie.extract('http://www.teachertube.com/view_classroom.php?user=rbhagwati2')
|
||||
ie = TeacherTubeUserIE(dl)
|
||||
result = ie.extract('http://www.teachertube.com/user/profile/rbhagwati2')
|
||||
self.assertIsPlaylist(result)
|
||||
self.assertEqual(result['id'], 'rbhagwati2')
|
||||
self.assertTrue(len(result['entries']) >= 20)
|
||||
self.assertTrue(len(result['entries']) >= 179)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
|
@ -282,7 +282,7 @@ from .sztvhu import SztvHuIE
|
|||
from .tagesschau import TagesschauIE
|
||||
from .teachertube import (
|
||||
TeacherTubeIE,
|
||||
TeacherTubeClassroomIE,
|
||||
TeacherTubeUserIE,
|
||||
)
|
||||
from .teachingchannel import TeachingChannelIE
|
||||
from .teamcoco import TeamcocoIE
|
||||
|
|
|
@ -86,22 +86,32 @@ class TeacherTubeIE(InfoExtractor):
|
|||
}
|
||||
|
||||
|
||||
class TeacherTubeClassroomIE(InfoExtractor):
|
||||
IE_NAME = 'teachertube:classroom'
|
||||
IE_DESC = 'teachertube.com online classrooms'
|
||||
class TeacherTubeUserIE(InfoExtractor):
|
||||
IE_NAME = 'teachertube:user:collection'
|
||||
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):
|
||||
mobj = re.match(self._VALID_URL, url)
|
||||
user_id = mobj.group('user')
|
||||
|
||||
rss = self._download_xml(
|
||||
'http://www.teachertube.com/rssclassroom.php?mode=user&username=%s' % user_id,
|
||||
user_id, 'Downloading classroom RSS')
|
||||
urls = []
|
||||
webpage = self._download_webpage(url, user_id)
|
||||
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 = []
|
||||
for url in rss.findall('.//{http://search.yahoo.com/mrss/}player'):
|
||||
entries.append(self.url_result(url.attrib['url'], 'TeacherTube'))
|
||||
for url in urls:
|
||||
entries.append(self.url_result(url, 'TeacherTube'))
|
||||
|
||||
return self.playlist_result(entries, user_id)
|
||||
|
|
Loading…
Reference in New Issue