aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/extractor/nuevo.py
blob: ccc697e4f45a9a9abff64c6db980f25b53028434 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# encoding: utf-8
from __future__ import unicode_literals

from .common import InfoExtractor

from ..utils import (
    float_or_none,
    xpath_text
)


class NuevoBaseIE(InfoExtractor):
    def _extract_nuevo(self, config_url, video_id):
        tree = self._download_xml(config_url, video_id, transform_source=lambda s: s.strip())

        title = xpath_text(tree, './title')
        if title:
            title = title.strip()

        thumbnail = xpath_text(tree, './image')
        duration = float_or_none(xpath_text(tree, './duration'))

        formats = []
        for element_name, format_id in (('file', 'sd'), ('filehd', 'hd')):
            video_url = tree.find(element_name)
            video_url is None or formats.append({
                'format_id': format_id,
                'url': video_url.text
            })

        return {
            'id': video_id,
            'title': title,
            'thumbnail': thumbnail,
            'duration': duration,
            'formats': formats
        }