You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.6 KiB

10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
  1. # coding: utf-8
  2. from __future__ import unicode_literals
  3. from ..compat import (
  4. compat_urllib_parse_unquote,
  5. compat_urllib_parse_urlencode,
  6. )
  7. from .common import InfoExtractor
  8. from ..utils import (
  9. parse_duration,
  10. int_or_none,
  11. ExtractorError,
  12. )
  13. class Porn91IE(InfoExtractor):
  14. IE_NAME = '91porn'
  15. _VALID_URL = r'(?:https?://)(?:www\.|)91porn\.com/.+?\?viewkey=(?P<id>[\w\d]+)'
  16. _TEST = {
  17. 'url': 'http://91porn.com/view_video.php?viewkey=7e42283b4f5ab36da134',
  18. 'md5': '6df8f6d028bc8b14f5dbd73af742fb20',
  19. 'info_dict': {
  20. 'id': '7e42283b4f5ab36da134',
  21. 'title': '18岁大一漂亮学妹,水嫩性感,再爽一次!',
  22. 'ext': 'mp4',
  23. 'duration': 431,
  24. 'age_limit': 18,
  25. }
  26. }
  27. def _real_extract(self, url):
  28. video_id = self._match_id(url)
  29. self._set_cookie('91porn.com', 'language', 'cn_CN')
  30. webpage = self._download_webpage(
  31. 'http://91porn.com/view_video.php?viewkey=%s' % video_id, video_id)
  32. if '作为游客,你每天只可观看10个视频' in webpage:
  33. raise ExtractorError('91 Porn says: Daily limit 10 videos exceeded', expected=True)
  34. title = self._search_regex(
  35. r'<div id="viewvideo-title">([^<]+)</div>', webpage, 'title')
  36. title = title.replace('\n', '')
  37. # get real url
  38. file_id = self._search_regex(
  39. r'so.addVariable\(\'file\',\'(\d+)\'', webpage, 'file id')
  40. sec_code = self._search_regex(
  41. r'so.addVariable\(\'seccode\',\'([^\']+)\'', webpage, 'sec code')
  42. max_vid = self._search_regex(
  43. r'so.addVariable\(\'max_vid\',\'(\d+)\'', webpage, 'max vid')
  44. url_params = compat_urllib_parse_urlencode({
  45. 'VID': file_id,
  46. 'mp4': '1',
  47. 'seccode': sec_code,
  48. 'max_vid': max_vid,
  49. })
  50. info_cn = self._download_webpage(
  51. 'http://91porn.com/getfile.php?' + url_params, video_id,
  52. 'Downloading real video url')
  53. video_url = compat_urllib_parse_unquote(self._search_regex(
  54. r'file=([^&]+)&', info_cn, 'url'))
  55. duration = parse_duration(self._search_regex(
  56. r'时长:\s*</span>\s*(\d+:\d+)', webpage, 'duration', fatal=False))
  57. comment_count = int_or_none(self._search_regex(
  58. r'留言:\s*</span>\s*(\d+)', webpage, 'comment count', fatal=False))
  59. return {
  60. 'id': video_id,
  61. 'title': title,
  62. 'url': video_url,
  63. 'duration': duration,
  64. 'comment_count': comment_count,
  65. 'age_limit': self._rta_search(webpage),
  66. }