myvi.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # coding: utf-8
  2. from __future__ import unicode_literals
  3. from .vimple import SprutoBaseIE
  4. class MyviEmbedIE(SprutoBaseIE):
  5. _VALID_URL = r'''(?x)
  6. https?://
  7. myvi\.ru/player/
  8. (?:
  9. (?:
  10. embed/html|
  11. api/Video/Get
  12. )/|
  13. content/preloader\.swf\?.*\bid=
  14. )
  15. (?P<id>[\da-zA-Z_]+)
  16. '''
  17. _TESTS = [{
  18. 'url': 'http://myvi.ru/player/embed/html/oOy4euHA6LVwNNAjhD9_Jq5Ha2Qf0rtVMVFMAZav8wObeRTZaCATzucDQIDph8hQU0',
  19. 'md5': '571bbdfba9f9ed229dc6d34cc0f335bf',
  20. 'info_dict': {
  21. 'id': 'f16b2bbd-cde8-481c-a981-7cd48605df43',
  22. 'ext': 'mp4',
  23. 'title': 'хозяин жизни',
  24. 'thumbnail': 're:^https?://.*\.jpg$',
  25. 'duration': 25,
  26. },
  27. }, {
  28. 'url': 'http://myvi.ru/player/content/preloader.swf?id=oOy4euHA6LVwNNAjhD9_Jq5Ha2Qf0rtVMVFMAZav8wOYf1WFpPfc_bWTKGVf_Zafr0',
  29. 'only_matching': True,
  30. }, {
  31. 'url': 'http://myvi.ru/player/api/Video/Get/oOy4euHA6LVwNNAjhD9_Jq5Ha2Qf0rtVMVFMAZav8wObeRTZaCATzucDQIDph8hQU0',
  32. 'only_matching': True,
  33. }]
  34. def _real_extract(self, url):
  35. video_id = self._match_id(url)
  36. spruto = self._download_json(
  37. 'http://myvi.ru/player/api/Video/Get/%s?sig' % video_id, video_id)['sprutoData']
  38. return self._extract_spruto(spruto, video_id)