aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/nitter.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/extractor/nitter.py')
-rw-r--r--gallery_dl/extractor/nitter.py35
1 files changed, 14 insertions, 21 deletions
diff --git a/gallery_dl/extractor/nitter.py b/gallery_dl/extractor/nitter.py
index cfc8861..69d8299 100644
--- a/gallery_dl/extractor/nitter.py
+++ b/gallery_dl/extractor/nitter.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright 2022-2023 Mike Fährmann
+# Copyright 2022-2025 Mike Fährmann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
@@ -24,15 +24,13 @@ class NitterExtractor(BaseExtractor):
self.cookies_domain = self.root.partition("://")[2]
BaseExtractor.__init__(self, match)
- lastindex = match.lastindex
- self.user = match.group(lastindex)
- self.user_id = match.group(lastindex + 1)
+ self.user = self.groups[-2]
+ self.user_id = self.groups[-1]
self.user_obj = None
def items(self):
retweets = self.config("retweets", False)
- videos = self.config("videos", True)
- if videos:
+ if videos := self.config("videos", True):
ytdl = (videos == "ytdl")
videos = True
self.cookies.set("hlsPlayback", "on", domain=self.cookies_domain)
@@ -43,11 +41,8 @@ class NitterExtractor(BaseExtractor):
self.log.debug("Skipping %s (retweet)", tweet["tweet_id"])
continue
- attachments = tweet.pop("_attach", "")
- if attachments:
+ if attachments := tweet.pop("_attach", ""):
files = []
- append = files.append
-
for url in text.extract_iter(
attachments, 'href="', '"'):
@@ -67,15 +62,12 @@ class NitterExtractor(BaseExtractor):
file = {"url": url, "_http_retry": _retry_on_404}
file["filename"], _, file["extension"] = \
name.rpartition(".")
- append(file)
+ files.append(file)
if videos and not files:
if ytdl:
- append({
- "url": "ytdl:{}/i/status/{}".format(
- self.root, tweet["tweet_id"]),
- "extension": None,
- })
+ url = f"ytdl:{self.root}/i/status/{tweet['tweet_id']}"
+ files.append({"url": url, "extension": "mp4"})
else:
for url in text.extract_iter(
attachments, 'data-url="', '"'):
@@ -88,7 +80,7 @@ class NitterExtractor(BaseExtractor):
if url[0] == "/":
url = self.root + url
- append({
+ files.append({
"url" : "ytdl:" + url,
"filename" : name.rpartition(".")[0],
"extension": "mp4",
@@ -98,7 +90,8 @@ class NitterExtractor(BaseExtractor):
attachments, '<source src="', '"'):
if url[0] == "/":
url = self.root + url
- append(text.nameext_from_url(url, {"url": url}))
+ files.append(
+ text.nameext_from_url(url, {"url": url}))
else:
files = ()
@@ -206,10 +199,10 @@ class NitterExtractor(BaseExtractor):
if self.user_id:
self.user = self.request(
- "{}/i/user/{}".format(self.root, self.user_id),
+ f"{self.root}/i/user/{self.user_id}",
allow_redirects=False,
).headers["location"].rpartition("/")[2]
- base_url = url = "{}/{}{}".format(self.root, self.user, path)
+ base_url = url = f"{self.root}/{self.user}{path}"
while True:
tweets_html = self.request(url).text.split(
@@ -285,7 +278,7 @@ class NitterTweetExtractor(NitterExtractor):
example = "https://nitter.net/USER/status/12345"
def tweets(self):
- url = "{}/i/status/{}".format(self.root, self.user)
+ url = f"{self.root}/i/status/{self.user}"
html = text.extr(self.request(url).text, 'class="main-tweet', '''\
</div>
</div></div></div>''')