diff --git a/docs/supportedsites.md b/docs/supportedsites.md
index 8d412f6e..07649933 100644
--- a/docs/supportedsites.md
+++ b/docs/supportedsites.md
@@ -676,7 +676,7 @@ Consider all sites to be NSFW unless otherwise known.
| Sex.com |
https://www.sex.com/ |
- Boards, Pins, related Pins, Search Results |
+ Boards, Pins, User Pins, related Pins, Search Results |
|
diff --git a/gallery_dl/extractor/sexcom.py b/gallery_dl/extractor/sexcom.py
index 9f4bfc3a..edf35dae 100644
--- a/gallery_dl/extractor/sexcom.py
+++ b/gallery_dl/extractor/sexcom.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright 2019-2020 Mike Fährmann
+# Copyright 2019-2022 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
@@ -167,6 +167,27 @@ class SexcomRelatedPinExtractor(SexcomPinExtractor):
return self._pagination(url)
+class SexcomPinsExtractor(SexcomExtractor):
+ """Extractor for a user's pins on www.sex.com"""
+ subcategory = "pins"
+ directory_fmt = ("{category}", "{user}")
+ pattern = r"(?:https?://)?(?:www\.)?sex\.com/user/([^/?#]+)/pins/"
+ test = ("https://www.sex.com/user/sirjuan79/pins/", {
+ "count": ">= 15",
+ })
+
+ def __init__(self, match):
+ SexcomExtractor.__init__(self, match)
+ self.user = match.group(1)
+
+ def metadata(self):
+ return {"user": text.unquote(self.user)}
+
+ def pins(self):
+ url = "{}/user/{}/pins/".format(self.root, self.user)
+ return self._pagination(url)
+
+
class SexcomBoardExtractor(SexcomExtractor):
"""Extractor for pins from a board on www.sex.com"""
subcategory = "board"
diff --git a/scripts/supportedsites.py b/scripts/supportedsites.py
index 2e31becd..64b9ef30 100755
--- a/scripts/supportedsites.py
+++ b/scripts/supportedsites.py
@@ -182,6 +182,9 @@ SUBCATEGORY_MAP = {
"sankaku": {
"books": "Book Searches",
},
+ "sexcom": {
+ "pins": "User Pins",
+ },
"smugmug": {
"path": "Images from Users and Folders",
},