diff --git a/gallery_dl/extractor/cohost.py b/gallery_dl/extractor/cohost.py index c8ee7f45..e1f60407 100644 --- a/gallery_dl/extractor/cohost.py +++ b/gallery_dl/extractor/cohost.py @@ -191,3 +191,33 @@ class CohostTagExtractor(CohostExtractor): params["refTimestamp"] = pagination["refTimestamp"] params["skipPosts"] = \ pagination["currentSkip"] + pagination["idealPageStride"] + + +class CohostLikesExtractor(CohostExtractor): + """Extractor for liked posts""" + subcategory = "likes" + pattern = BASE_PATTERN + r"/rc/liked-posts" + example = "https://cohost.org/rc/liked-posts" + + def posts(self): + url = "{}/rc/liked-posts".format(self.root) + params = {} + + while True: + page = self.request(url, params=params).text + data = util.json_loads(text.extr( + page, 'id="__COHOST_LOADER_STATE__">', '')) + + try: + feed = data["liked-posts-feed"] + except KeyError: + feed = data.popitem()[1] + + yield from feed["posts"] + + pagination = feed["paginationMode"] + if not pagination.get("morePagesForward"): + return + params["refTimestamp"] = pagination["refTimestamp"] + params["skipPosts"] = \ + pagination["currentSkip"] + pagination["idealPageStride"]