From bda44462defa77c709e23d8184b8382a5300bbc4 Mon Sep 17 00:00:00 2001 From: Andrew Udvare Date: Sun, 13 May 2018 12:28:15 -0400 Subject: [PATCH] [ringneighbors] Add new extractor --- youtube_dl/extractor/extractors.py | 1 + youtube_dl/extractor/ringneighbors.py | 66 +++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 youtube_dl/extractor/ringneighbors.py diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index f03f98a6c..595ece4dd 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -907,6 +907,7 @@ from .revision3 import ( Revision3IE, ) from .rice import RICEIE +from .ringneighbors import RingNeighborsIE from .rmcdecouverte import RMCDecouverteIE from .ro220 import Ro220IE from .rockstargames import RockstarGamesIE diff --git a/youtube_dl/extractor/ringneighbors.py b/youtube_dl/extractor/ringneighbors.py new file mode 100644 index 000000000..128b65e4e --- /dev/null +++ b/youtube_dl/extractor/ringneighbors.py @@ -0,0 +1,66 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + determine_ext, + int_or_none, + parse_iso8601, + urljoin, +) + + +class RingNeighborsIE(InfoExtractor): + IE_NAME = 'ringneighbors' + IE_DESC = 'Surveillance video from a shared link from Neighbors (app within Ring)' + _VALID_URL = r'https?://neighbors\.ring\.com/n/(?P[^/]+)/?' + _TEST = { + 'url': 'https://neighbors.ring.com/n/oEdj2', + 'md5': '4f9038a4a926dea5db3d399d0326abe7', + 'info_dict': { + 'id': 'oEdj2', + 'ext': 'mp4', + 'title': 'Ding Dong Ditch is alive and well', + 'thumbnail': 'https://neighbors.ring.com/assets/images/default_og_image.png', + 'upload_date': '20180210', + 'location': '4721 Indian Deer Rd, Windermere, FL 34786, USA', + 'description': 'Get crime and safety alerts from your neighbors', + 'timestamp': 1518298052, + } + } + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + url = self._html_search_regex(r']+value="(?Phttps?://share.ring.com/[^\.]+\.mp4)"', + webpage, + 'url', + group='url') + dt = self._html_search_regex(']+class="event\-date">(?P[^<]+)', + webpage, + 'Event date (ISO 8601)', + group='event_date', + fatal=False) + loc = self._html_search_regex(']+class="event\-address">(?P
[^<]+)', + webpage, + 'Location', + group='address', + fatal=False) + upload_date = None + if dt: + upload_date = dt[0:10].replace('-', '') + base = 'https://neighbors.ring.com/' + thumbnail = urljoin(base, self._og_search_thumbnail(webpage)) + + return { + 'id': video_id, + 'title': self._og_search_property('title', webpage).strip(), + 'url': url, + 'ext': determine_ext(url), + 'description': self._html_search_meta('description', webpage, 'Description'), + 'upload_date': upload_date, + 'release_date': upload_date, + 'timestamp': int_or_none(parse_iso8601(dt)), + 'location': loc, + 'thumbnail': thumbnail, + }