[twitter] improve '"replies": "self"' (#2665)
If a username is given in the input URL, only download from replies by that user.
This commit is contained in:
@@ -40,6 +40,7 @@ class TwitterExtractor(Extractor):
|
|||||||
self.quoted = self.config("quoted", False)
|
self.quoted = self.config("quoted", False)
|
||||||
self.videos = self.config("videos", True)
|
self.videos = self.config("videos", True)
|
||||||
self.cards = self.config("cards", False)
|
self.cards = self.config("cards", False)
|
||||||
|
self._user_id = None
|
||||||
self._user_cache = {}
|
self._user_cache = {}
|
||||||
self._init_sizes()
|
self._init_sizes()
|
||||||
|
|
||||||
@@ -79,7 +80,8 @@ class TwitterExtractor(Extractor):
|
|||||||
if "in_reply_to_user_id_str" in data and (
|
if "in_reply_to_user_id_str" in data and (
|
||||||
not self.replies or (
|
not self.replies or (
|
||||||
self.replies == "self" and
|
self.replies == "self" and
|
||||||
data["in_reply_to_user_id_str"] != data["user_id_str"]
|
(self._user_id or data["in_reply_to_user_id_str"]) !=
|
||||||
|
data["user_id_str"]
|
||||||
)
|
)
|
||||||
):
|
):
|
||||||
self.log.debug("Skipping %s (reply)", data["id_str"])
|
self.log.debug("Skipping %s (reply)", data["id_str"])
|
||||||
@@ -1031,19 +1033,23 @@ class TwitterAPI():
|
|||||||
def _user_id_by_screen_name(self, screen_name):
|
def _user_id_by_screen_name(self, screen_name):
|
||||||
if screen_name.startswith("id:"):
|
if screen_name.startswith("id:"):
|
||||||
self._user = util.SENTINEL
|
self._user = util.SENTINEL
|
||||||
return screen_name[3:]
|
user_id = screen_name[3:]
|
||||||
|
|
||||||
user = ()
|
else:
|
||||||
try:
|
user = ()
|
||||||
user = self._user = self.user_by_screen_name(screen_name)
|
try:
|
||||||
return user["rest_id"]
|
user = self._user = self.user_by_screen_name(screen_name)
|
||||||
except KeyError:
|
user_id = user["rest_id"]
|
||||||
if "unavailable_message" in user:
|
except KeyError:
|
||||||
raise exception.NotFoundError("{} ({})".format(
|
if "unavailable_message" in user:
|
||||||
user["unavailable_message"].get("text"),
|
raise exception.NotFoundError("{} ({})".format(
|
||||||
user.get("reason")), False)
|
user["unavailable_message"].get("text"),
|
||||||
else:
|
user.get("reason")), False)
|
||||||
raise exception.NotFoundError("user")
|
else:
|
||||||
|
raise exception.NotFoundError("user")
|
||||||
|
|
||||||
|
self.extractor._user_id = user_id
|
||||||
|
return user_id
|
||||||
|
|
||||||
@cache(maxage=3600)
|
@cache(maxage=3600)
|
||||||
def _guest_token(self):
|
def _guest_token(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user