logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

cultureunplugged.py (2123B)


  1. from .common import InfoExtractor
  2. from ..utils import int_or_none
  3. class CultureUnpluggedIE(InfoExtractor):
  4. _VALID_URL = r'https?://(?:www\.)?cultureunplugged\.com/documentary/watch-online/play/(?P<id>\d+)(?:/(?P<display_id>[^/]+))?'
  5. _TESTS = [{
  6. 'url': 'http://www.cultureunplugged.com/documentary/watch-online/play/53662/The-Next--Best-West',
  7. 'md5': 'ac6c093b089f7d05e79934dcb3d228fc',
  8. 'info_dict': {
  9. 'id': '53662',
  10. 'display_id': 'The-Next--Best-West',
  11. 'ext': 'mp4',
  12. 'title': 'The Next, Best West',
  13. 'description': 'md5:0423cd00833dea1519cf014e9d0903b1',
  14. 'thumbnail': r're:^https?://.*\.jpg$',
  15. 'creator': 'Coldstream Creative',
  16. 'duration': 2203,
  17. 'view_count': int,
  18. },
  19. }, {
  20. 'url': 'http://www.cultureunplugged.com/documentary/watch-online/play/53662',
  21. 'only_matching': True,
  22. }]
  23. def _real_extract(self, url):
  24. mobj = self._match_valid_url(url)
  25. video_id = mobj.group('id')
  26. display_id = mobj.group('display_id') or video_id
  27. movie_data = self._download_json(
  28. f'http://www.cultureunplugged.com/movie-data/cu-{video_id}.json', display_id)
  29. video_url = movie_data['url']
  30. title = movie_data['title']
  31. description = movie_data.get('synopsis')
  32. creator = movie_data.get('producer')
  33. duration = int_or_none(movie_data.get('duration'))
  34. view_count = int_or_none(movie_data.get('views'))
  35. thumbnails = [{
  36. 'url': movie_data[f'{size}_thumb'],
  37. 'id': size,
  38. 'preference': preference,
  39. } for preference, size in enumerate((
  40. 'small', 'large')) if movie_data.get(f'{size}_thumb')]
  41. return {
  42. 'id': video_id,
  43. 'display_id': display_id,
  44. 'url': video_url,
  45. 'title': title,
  46. 'description': description,
  47. 'creator': creator,
  48. 'duration': duration,
  49. 'view_count': view_count,
  50. 'thumbnails': thumbnails,
  51. }