Browse Source

[clyp] Add extractor

Update __init__.py

[clyp.it] Extract ID idiomatically and make duration and description optional
totalwebcasting
Cian Ruane 9 years ago
committed by Sergey M․
parent
commit
4e16c1f80b
2 changed files with 58 additions and 0 deletions
  1. +1
    -0
      youtube_dl/extractor/__init__.py
  2. +57
    -0
      youtube_dl/extractor/clyp.py

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

@ -90,6 +90,7 @@ from .cliphunter import CliphunterIE
from .clipsyndicate import ClipsyndicateIE
from .cloudy import CloudyIE
from .clubic import ClubicIE
from .clyp import ClypIE
from .cmt import CMTIE
from .cnet import CNETIE
from .cnn import (


+ 57
- 0
youtube_dl/extractor/clyp.py View File

@ -0,0 +1,57 @@
# coding: utf-8
from __future__ import unicode_literals
import re
from .common import InfoExtractor
class ClypIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?clyp\.it/(?P<id>[a-z0-9]+)'
_TESTS = [{
'url': 'https://clyp.it/ojz2wfah',
'md5': '1d4961036c41247ecfdcc439c0cddcbb',
'info_dict': {
'id': 'ojz2wfah',
'ext': 'mp3',
'title': 'Krisson80 - bits wip wip',
'description': '#Krisson80BitsWipWip #chiptune\n#wip',
},
}, {
'url': 'https://clyp.it/ojz2wfah',
'only_matching': True,
}]
def _real_extract(self, url):
audio_id = self._match_id(url)
api_url = 'https://api.clyp.it/' + audio_id
metadata = self._download_json(api_url, audio_id)
title = metadata['Title']
description = None
if metadata['Description']: description = metadata['Description']
duration = None
if metadata['Duration']: duration = int(metadata['Duration'])
formats = [
{
'url': metadata['OggUrl'],
'format_id': 'ogg',
'preference': -2
},{
'url': metadata['Mp3Url'],
'format_id': 'mp3',
'preference': -1
}]
return {
'id': audio_id,
'title': title,
'formats': formats,
'description': description,
'duration': duration
}

Loading…
Cancel
Save