streamango.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # coding: utf-8
  2. from __future__ import unicode_literals
  3. from .common import InfoExtractor
  4. class StreamangoIE(InfoExtractor):
  5. _VALID_URL = r'https?://(?:www\.)?streamango\.com/(?:f|embed)/(?P<id>.+?)/(?:.+)'
  6. _TESTS = [{
  7. 'url': 'https://streamango.com/f/clapasobsptpkdfe/20170315_150006_mp4',
  8. 'md5': 'e992787515a182f55e38fc97588d802a',
  9. 'info_dict': {
  10. 'id': 'clapasobsptpkdfe',
  11. 'ext': 'mp4',
  12. 'title': '20170315_150006.mp4',
  13. 'url': r're:https://streamango\.com/v/d/clapasobsptpkdfe~[0-9]{10}~(?:[0-9]+\.){3}[0-9]+~.{8}/720',
  14. }
  15. }, {
  16. 'url': 'https://streamango.com/embed/clapasobsptpkdfe/20170315_150006_mp4',
  17. 'only_matching': True,
  18. }]
  19. def _real_extract(self, url):
  20. def extract_url(urltype):
  21. return self._search_regex(
  22. r'type\s*:\s*["\']{}["\']\s*,\s*src\s*:\s*["\'](?P<url>.+?)["\'].*'.format(urltype),
  23. webpage, 'video URL', group='url')
  24. video_id = self._match_id(url)
  25. webpage = self._download_webpage(url, video_id)
  26. title = self._og_search_title(webpage)
  27. url = 'https:' + extract_url('video/mp4')
  28. dashurl = extract_url(r'application/dash\+xml')
  29. formats = [{
  30. 'url': url,
  31. 'ext': 'mp4',
  32. 'width': 1280,
  33. 'height': 720,
  34. 'format_id': 'mp4',
  35. }]
  36. formats.extend(self._extract_mpd_formats(
  37. dashurl, video_id, mpd_id='dash', fatal=False))
  38. self._sort_formats(formats)
  39. return {
  40. 'id': video_id,
  41. 'url': url,
  42. 'title': title,
  43. 'formats': formats,
  44. }