Browse Source

Merge remote-tracking branch 't0mm0/x-minus'

totalwebcasting
Philipp Hagemeister 10 years ago
parent
commit
0bbf12239c
2 changed files with 54 additions and 0 deletions
  1. +1
    -0
      youtube_dl/extractor/__init__.py
  2. +53
    -0
      youtube_dl/extractor/xminus.py

+ 1
- 0
youtube_dl/extractor/__init__.py View File

@ -484,6 +484,7 @@ from .wrzuta import WrzutaIE
from .xbef import XBefIE from .xbef import XBefIE
from .xboxclips import XboxClipsIE from .xboxclips import XboxClipsIE
from .xhamster import XHamsterIE from .xhamster import XHamsterIE
from .xminus import XMinusIE
from .xnxx import XNXXIE from .xnxx import XNXXIE
from .xvideos import XVideosIE from .xvideos import XVideosIE
from .xtube import XTubeUserIE, XTubeIE from .xtube import XTubeUserIE, XTubeIE


+ 53
- 0
youtube_dl/extractor/xminus.py View File

@ -0,0 +1,53 @@
# coding: utf-8
from __future__ import unicode_literals
from .common import InfoExtractor
from ..utils import int_or_none
class XMinusIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?x-minus\.org/track/(?P<id>[0-9]+)'
_TEST = {
'url': 'http://x-minus.org/track/4542/%D0%BF%D0%B5%D1%81%D0%B5%D0%BD%D0%BA%D0%B0-%D1%88%D0%BE%D1%84%D0%B5%D1%80%D0%B0.html',
'md5': '401a15f2d2dcf6d592cb95528d72a2a8',
'info_dict': {
'id': '4542',
'ext': 'mp3',
'title': 'Леонид Агутин-Песенка шофера',
'duration': 156,
}
}
def _real_extract(self, url):
video_id = self._match_id(url)
# TODO more code goes here, for example ...
webpage = self._download_webpage(url, video_id)
artist = self._html_search_regex(
r'minus_track.artist="(.+?)"', webpage, 'artist')
title = artist + '-' + self._html_search_regex(
r'minus_track.title="(.+?)"', webpage, 'title')
duration = int_or_none(self._html_search_regex(
r'minus_track.dur_sec=\'([0-9]+?)\'', webpage, 'duration'))
enc_token = self._html_search_regex(
r'data-mt="(.*?)"', webpage, 'enc_token')
token = self._decode_token(enc_token)
url = 'http://x-minus.org/dwlf/{}/{}.mp3'.format(video_id, token)
return {
'id': video_id,
'title': title,
'url': url,
'duration': duration,
}
def _decode_token(self, enc_token):
token = ''
pos = 0
for c in reversed(enc_token):
if pos != 3:
token += chr(ord(c) - 1)
else:
token += c
pos += 1
return token

Loading…
Cancel
Save