Browse Source

[pinkbike] new extractor

totalwebcasting
Mister Hat 9 years ago
parent
commit
7198063d96
2 changed files with 79 additions and 0 deletions
  1. +1
    -0
      youtube_dl/extractor/__init__.py
  2. +78
    -0
      youtube_dl/extractor/pinkbike.py

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

@ -394,6 +394,7 @@ from .pbs import PBSIE
from .philharmoniedeparis import PhilharmonieDeParisIE
from .phoenix import PhoenixIE
from .photobucket import PhotobucketIE
from .pinkbike import PinkbikeIE
from .planetaplay import PlanetaPlayIE
from .pladform import PladformIE
from .played import PlayedIE


+ 78
- 0
youtube_dl/extractor/pinkbike.py View File

@ -0,0 +1,78 @@
# coding: utf-8
from __future__ import unicode_literals
import re
from .common import InfoExtractor
class PinkbikeIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?pinkbike\.com/video/(?P<id>[0-9]+)'
_TESTS = [{
'url': 'http://www.pinkbike.com/video/402811/',
'md5': '4814b8ca7651034cd87e3361d5c2155a',
'info_dict': {
'id': '402811',
'ext': 'mp4',
'title': 'Brandon Semenuk - RAW 100',
'thumbnail': 're:^https?://.*\.jpg$',
'location': 'Victoria, British Columbia, Canada',
'uploader_id': 'revelco',
'upload_date': '20150406',
'description': 'Official release: www.redbull.ca/rupertwalker',
'duration': '100'
}
}, {
'url': 'http://www.pinkbike.com/video/406629/',
'md5': 'c7a3e19a2bd5cde5a1cda6b2b46caa74',
'info_dict': {
'id': '406629',
'ext': 'mp4',
'title': 'Chromag: Reece Wallace in Utah',
'thumbnail': 're:^https?://.*\.jpg$',
'location': 'Whistler, British Columbia, Canada',
'uploader_id': 'Chromagbikes',
'upload_date': '20150505',
'description': 'Reece Wallace shredding Virgin, Utah. Video by Virtu Media.',
'duration': '180'
}
}]
def _real_extract(self, url):
video_id = self._match_id(url)
webpage = self._download_webpage(url, video_id)
title = self._html_search_regex(r'<title>(.*?)</title>', webpage, 'title')
title = title[:-len(' Video - Pinkbike')]
description = self._html_search_meta('description', webpage, 'description')
description = description[len(title + '. '):]
uploader_id = self._html_search_regex(r'un:\s*"(.*?)"', webpage, 'uploader_id')
upload_date = self._html_search_regex(
r'class="fullTime"\s*title="([0-9]{4}(?:-[0-9]{2}){2})"',
webpage, 'upload_date')
upload_date = upload_date.replace('-', '')
location = self._html_search_regex(
r'<dt>Location</dt>\n?\s*<dd>\n?(.*?)\s*<img',
webpage, 'location')
formats = re.findall(
r'<source data-quality=\\"([0-9]+)p\\" src=\\"(.*?)\\">',
webpage)
formats = [{'url': fmt[1], 'height': fmt[0]} for fmt in formats]
return {
'id': video_id,
'title': title,
'description': description,
'duration': self._html_search_meta('video:duration', webpage, 'duration'),
'thumbnail': self._html_search_meta('og:image', webpage, 'thumbnail'),
'uploader_id': uploader_id,
'upload_date': upload_date,
'location': location,
'formats': formats
}

Loading…
Cancel
Save