mirror of https://github.com/yt-dlp/yt-dlp.git
[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,
|
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()
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue