aboutsummaryrefslogtreecommitdiffstats
path: root/youtube_dlc
diff options
context:
space:
mode:
Diffstat (limited to 'youtube_dlc')
-rw-r--r--youtube_dlc/extractor/bandcamp.py4
-rw-r--r--youtube_dlc/extractor/expressen.py7
-rw-r--r--youtube_dlc/extractor/iprima.py3
-rw-r--r--youtube_dlc/extractor/youtube.py12
4 files changed, 20 insertions, 6 deletions
diff --git a/youtube_dlc/extractor/bandcamp.py b/youtube_dlc/extractor/bandcamp.py
index 2022e69f8..9dbafe86d 100644
--- a/youtube_dlc/extractor/bandcamp.py
+++ b/youtube_dlc/extractor/bandcamp.py
@@ -99,7 +99,6 @@ class BandcampIE(InfoExtractor):
webpage, 'track info', default='{}')
track_info = self._parse_json(trackinfo_block, title)
-
if track_info:
file_ = track_info.get('file')
if isinstance(file_, dict):
@@ -115,7 +114,7 @@ class BandcampIE(InfoExtractor):
'acodec': ext,
'abr': int_or_none(abr_str),
})
- track = track_info.get('title')
+
track_id = str_or_none(track_info.get('track_id') or track_info.get('id'))
track_number = int_or_none(track_info.get('track_num'))
duration = float_or_none(track_info.get('duration'))
@@ -126,6 +125,7 @@ class BandcampIE(InfoExtractor):
webpage, key, default=None, group='value')
return data.replace(r'\"', '"').replace('\\\\', '\\') if data else data
+ track = extract('title')
artist = extract('artist')
album = extract('album_title')
timestamp = unified_timestamp(
diff --git a/youtube_dlc/extractor/expressen.py b/youtube_dlc/extractor/expressen.py
index f79365038..dc8b855d2 100644
--- a/youtube_dlc/extractor/expressen.py
+++ b/youtube_dlc/extractor/expressen.py
@@ -15,7 +15,7 @@ from ..utils import (
class ExpressenIE(InfoExtractor):
_VALID_URL = r'''(?x)
https?://
- (?:www\.)?expressen\.se/
+ (?:www\.)?(?:expressen|di)\.se/
(?:(?:tvspelare/video|videoplayer/embed)/)?
tv/(?:[^/]+/)*
(?P<id>[^/?#&]+)
@@ -42,13 +42,16 @@ class ExpressenIE(InfoExtractor):
}, {
'url': 'https://www.expressen.se/videoplayer/embed/tv/ditv/ekonomistudion/experterna-har-ar-fragorna-som-avgor-valet/?embed=true&external=true&autoplay=true&startVolume=0&partnerId=di',
'only_matching': True,
+ }, {
+ 'url': 'https://www.di.se/videoplayer/embed/tv/ditv/borsmorgon/implantica-rusar-70--under-borspremiaren-hor-styrelsemedlemmen/?embed=true&external=true&autoplay=true&startVolume=0&partnerId=di',
+ 'only_matching': True,
}]
@staticmethod
def _extract_urls(webpage):
return [
mobj.group('url') for mobj in re.finditer(
- r'<iframe[^>]+\bsrc=(["\'])(?P<url>(?:https?:)?//(?:www\.)?expressen\.se/(?:tvspelare/video|videoplayer/embed)/tv/.+?)\1',
+ r'<iframe[^>]+\bsrc=(["\'])(?P<url>(?:https?:)?//(?:www\.)?(?:expressen|di)\.se/(?:tvspelare/video|videoplayer/embed)/tv/.+?)\1',
webpage)]
def _real_extract(self, url):
diff --git a/youtube_dlc/extractor/iprima.py b/youtube_dlc/extractor/iprima.py
index 53a550c11..648ae6741 100644
--- a/youtube_dlc/extractor/iprima.py
+++ b/youtube_dlc/extractor/iprima.py
@@ -86,7 +86,8 @@ class IPrimaIE(InfoExtractor):
(r'<iframe[^>]+\bsrc=["\'](?:https?:)?//(?:api\.play-backend\.iprima\.cz/prehravac/embedded|prima\.iprima\.cz/[^/]+/[^/]+)\?.*?\bid=(p\d+)',
r'data-product="([^"]+)">',
r'id=["\']player-(p\d+)"',
- r'playerId\s*:\s*["\']player-(p\d+)'),
+ r'playerId\s*:\s*["\']player-(p\d+)',
+ r'\bvideos\s*=\s*["\'](p\d+)'),
webpage, 'real id')
playerpage = self._download_webpage(
diff --git a/youtube_dlc/extractor/youtube.py b/youtube_dlc/extractor/youtube.py
index 293d6069d..e68395583 100644
--- a/youtube_dlc/extractor/youtube.py
+++ b/youtube_dlc/extractor/youtube.py
@@ -39,6 +39,7 @@ from ..utils import (
mimetype2ext,
orderedSet,
parse_codecs,
+ parse_count,
parse_duration,
remove_quotes,
remove_start,
@@ -2455,7 +2456,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
def _extract_count(count_name):
return str_to_int(self._search_regex(
- r'-%s-button[^>]+><span[^>]+class="yt-uix-button-content"[^>]*>([\d,]+)</span>'
+ r'"accessibilityData":\{"label":"([\d,\w]+) %ss"\}'
% re.escape(count_name),
video_webpage, count_name, default=None))
@@ -2484,6 +2485,14 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
video_duration = parse_duration(self._html_search_meta(
'duration', video_webpage, 'video duration'))
+ # Get Subscriber Count of channel
+ subscriber_count = parse_count(self._search_regex(
+ r'"text":"([\d\.]+\w?) subscribers"',
+ video_webpage,
+ 'subscriber count',
+ default=None
+ ))
+
# annotations
video_annotations = None
if self._downloader.params.get('writeannotations', False):
@@ -2621,6 +2630,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
'album': album,
'release_date': release_date,
'release_year': release_year,
+ 'subscriber_count': subscriber_count,
}