Browse Source

[clyp] Add extractor

Update __init__.py

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

1
youtube_dl/extractor/__init__.py

@ -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
youtube_dl/extractor/clyp.py

@ -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