diff --git a/src/friendlypins/scripts/fpins.py b/src/friendlypins/scripts/fpins.py
index 0835d2d..2fd8974 100644
--- a/src/friendlypins/scripts/fpins.py
+++ b/src/friendlypins/scripts/fpins.py
@@ -13,7 +13,7 @@ def _download_thumbnails(args):
     :returns: zero on success, non-zero on failure
     :rtype: :class:`int`
     """
-    return download_thumbnails(args.token, args.board, args.path)
+    return download_thumbnails(args.token, args.board, args.path, args.delete)
 
 
 def get_args(args):
@@ -59,6 +59,11 @@ def get_args(args):
         required=True,
         help="Path to the folder where thumbnails are to be downloaded",
     )
+    thumbnails_cmd.add_argument(
+        '--delete', '-d',
+        action="store_true",
+        help="Deletes each pin as it's thumbnail is downloaded"
+    )
 
     # If we've been given debugging arguments, convert them to the
     # format argparse expects
diff --git a/src/friendlypins/utils/console_actions.py b/src/friendlypins/utils/console_actions.py
index e6208fd..84c63b7 100644
--- a/src/friendlypins/utils/console_actions.py
+++ b/src/friendlypins/utils/console_actions.py
@@ -38,12 +38,13 @@ def _download_pin(pin, folder):
         return 2
     return 0
 
-def download_thumbnails(api_token, board_name, output_folder):
+def download_thumbnails(api_token, board_name, output_folder, delete):
     """Downloads thumbnails of all pins on a board
 
     :param str api_token: Authentication token for accessing the Pinterest API
     :param str board_name: name of the board containing the pins to process
     :param str output_folder: path where the thumbnails are to be downloaded
+    :param bool delete: flag to delete pins as their thumbnails are downloaded
     :returns:
         status code describing the result of the action
         zero on success, non-zero on failure
@@ -71,6 +72,9 @@ def download_thumbnails(api_token, board_name, output_folder):
         retval = _download_pin(cur_pin, output_folder)
         if retval:
             return retval
+        if delete:
+            cur_pin.delete()
+
     return 0
 
 if __name__ == "__main__":

Add option to delete pins post download
We should add an option to the `fpins dt` command to delete pins once their thumbnails have been successfully downloaded. I'm thinking adding support for an optional '--delete' parameter should do the trick.
diff --git a/unit_tests/test_console_actions.py b/unit_tests/test_console_actions.py
index 0d5e174..d92a3e9 100644
--- a/unit_tests/test_console_actions.py
+++ b/unit_tests/test_console_actions.py
@@ -74,7 +74,7 @@ def test_download_thumbnails(api_requests, user_requests, board_requests, action
     mock_os.path.exists.return_value = False
 
     # Flex our code
-    result = download_thumbnails("1234abcd", expected_board_name, "/tmp")
+    result = download_thumbnails("1234abcd", expected_board_name, "/tmp", False)
 
     # Make sure the call was successful, and that our mock APIs
     # that must have executed as part of the process were called
@@ -85,6 +85,91 @@ def test_download_thumbnails(api_requests, user_requests, board_requests, action
     mock_open.assert_called()
 
 
+@mock.patch("friendlypins.utils.console_actions.os")
+@mock.patch("friendlypins.utils.console_actions.open")
+@mock.patch("friendlypins.utils.console_actions.requests")
+@mock.patch("friendlypins.board.requests")
+@mock.patch("friendlypins.user.requests")
+@mock.patch("friendlypins.api.requests")
+@mock.patch("friendlypins.pin.requests")
+def test_download_thumbnails_with_delete(pin_requests, api_requests, user_requests, board_requests, action_requests, mock_open, mock_os):
+
+    # Fake user data for the user authenticating to Pinterest
+    expected_user_data = {
+        'data': {
+            'url': 'https://www.pinterest.com/MyUserName/',
+            'first_name': "John",
+            'last_name': "Doe",
+            'id': "12345678"
+        }
+    }
+
+    # Fake board data for the boards owned by the fake authenticated user
+    expected_board_name = "MyBoard"
+    expected_board_data = {
+        "data": [{
+            "id": "6789",
+            "name": expected_board_name,
+            "url": "https://www.pinterest.ca/MyName/MyBoard/"
+        }]
+    }
+
+    # Fake pin data for the fake board, with fake thumbnail metadata
+    expected_thumbnail_url = "https://i.pinimg.com/originals/1/2/3/abcd.jpg"
+    expected_pin_data = {
+        "data": [{
+            "id": "1234",
+            "url": "https://www.pinterest.ca/MyName/MyPin/",
+            "note": "My Pin descriptive text",
+            "link": "http://www.mysite.com/target",
+            "media": {
+                "type": "image"
+            },
+            "image": {
+                "original": {
+                    "url": expected_thumbnail_url,
+                    "width": "800",
+                    "height": "600"
+                }
+            }
+        }],
+        "page": {
+            "cursor": None
+        }
+    }
+
+    # fake our Pinterest API data to flex our implementation logic
+    mock_user_response = mock.MagicMock()
+    mock_user_response.json.return_value = expected_user_data
+    api_requests.get.return_value = mock_user_response
+
+    mock_board_response = mock.MagicMock()
+    mock_board_response.json.return_value = expected_board_data
+    user_requests.get.return_value = mock_board_response
+
+    mock_pin_response = mock.MagicMock()
+    mock_pin_response.json.return_value = expected_pin_data
+    board_requests.get.return_value = mock_pin_response
+
+    mock_delete_response = mock.MagicMock()
+    pin_requests.delete.return_value = mock_delete_response
+
+    # Make sure the code think's the output file where the
+    # thumbnail is to be downloaded doesn't already exist
+    mock_os.path.exists.return_value = False
+
+    # Flex our code
+    result = download_thumbnails("1234abcd", expected_board_name, "/tmp", True)
+
+    # Make sure the call was successful, and that our mock APIs
+    # that must have executed as part of the process were called
+    assert result == 0
+    action_requests.get.assert_called_once_with(expected_thumbnail_url, stream=True)
+    mock_os.makedirs.assert_called()
+    mock_os.path.exists.assert_called()
+    mock_open.assert_called()
+    pin_requests.delete.assert_called_once()
+
 @mock.patch("friendlypins.utils.console_actions.os")
 @mock.patch("friendlypins.utils.console_actions.open")
 @mock.patch("friendlypins.utils.console_actions.requests")
@@ -160,7 +245,7 @@ def test_download_thumbnails_error(api_requests, user_requests, board_requests,
     action_requests.get.return_value = mock_action_response
 
     # Flex our code
-    result = download_thumbnails("1234abcd", expected_board_name, "/tmp")
+    result = download_thumbnails("1234abcd", expected_board_name, "/tmp", False)
 
     # Make sure the call was successful, and that our mock APIs
     # that must have executed as part of the process were called
@@ -239,7 +324,7 @@ def test_download_thumbnails_missing_board(api_requests, user_requests, board_re
     mock_os.path.exists.return_value = False
 
     # Flex our code
-    result = download_thumbnails("1234abcd", "FuBar", "/tmp")
+    result = download_thumbnails("1234abcd", "FuBar", "/tmp", False)
 
     # Make sure the call was successful, and that our mock APIs
     # that must have executed as part of the process were called
@@ -323,7 +408,7 @@ def test_download_thumbnails_exists(api_requests, user_requests, board_requests,
 
     # Flex our code
     output_folder = "/tmp"
-    result = download_thumbnails("1234abcd", expected_board_name, output_folder)
+    result = download_thumbnails("1234abcd", expected_board_name, output_folder, False)
 
     # Make sure the call was successful, and that our mock APIs
     # that must have executed as part of the process were called

pip install -e .[dev]
parse_log_pytest
requests six dateutils wheel twine pytest pytest-cov mock radon pylint sphinx tox
pytest
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster @ file:///home/ktietz/src/ci/alabaster_1611921544520/work
appdirs==1.4.4
astroid @ file:///tmp/build/80754af9/astroid_1628055155277/work
attrs @ file:///opt/conda/conda-bld/attrs_1642510447205/work
Babel @ file:///tmp/build/80754af9/babel_1620871417480/work
bleach @ file:///opt/conda/conda-bld/bleach_1641577558959/work
brotlipy==0.7.0
certifi==2021.5.30
cffi @ file:///tmp/build/80754af9/cffi_1625814693874/work
charset-normalizer @ file:///tmp/build/80754af9/charset-normalizer_1630003229654/work
cmarkgfm @ file:///tmp/build/80754af9/cmarkgfm_1613500901851/work
colorama @ file:///tmp/build/80754af9/colorama_1607707115595/work
coverage @ file:///tmp/build/80754af9/coverage_1614614208500/work
cryptography @ file:///tmp/build/80754af9/cryptography_1635366128178/work
dateutils @ file:///home/conda/feedstock_root/build_artifacts/dateutils_1603450192521/work
distlib @ file:///tmp/build/80754af9/distlib_1622544193819/work
docutils @ file:///tmp/build/80754af9/docutils_1620827982266/work
filelock @ file:///tmp/build/80754af9/filelock_1638521398314/work
flake8 @ file:///opt/conda/conda-bld/flake8_1648129545443/work
flake8-polyfill==1.0.2
-e git+https://github.com/TheFriendlyCoder/friendlypins.git@bb21be18fb37d054ecc015d31912e3bfc249fd0c#egg=friendlypins
future==0.18.2
idna @ file:///tmp/build/80754af9/idna_1637925883363/work
imagesize @ file:///tmp/build/80754af9/imagesize_1637939814114/work
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1631916693255/work
importlib-resources @ file:///tmp/build/80754af9/importlib_resources_1625135880749/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
isort @ file:///tmp/build/80754af9/isort_1628603791788/work
jeepney @ file:///tmp/build/80754af9/jeepney_1627537048313/work
Jinja2 @ file:///opt/conda/conda-bld/jinja2_1647436528585/work
keyring @ file:///tmp/build/80754af9/keyring_1629312932578/work
lazy-object-proxy @ file:///tmp/build/80754af9/lazy-object-proxy_1616526919073/work
mando==0.6.4
MarkupSafe @ file:///tmp/build/80754af9/markupsafe_1621528150516/work
mccabe==0.6.1
mock @ file:///tmp/build/80754af9/mock_1607622725907/work
more-itertools @ file:///tmp/build/80754af9/more-itertools_1637733554872/work
packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work
pkginfo @ file:///tmp/build/80754af9/pkginfo_1643162084911/work
pluggy @ file:///tmp/build/80754af9/pluggy_1615976315926/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pycodestyle @ file:///tmp/build/80754af9/pycodestyle_1636635402688/work
pycparser @ file:///tmp/build/80754af9/pycparser_1636541352034/work
pyflakes @ file:///tmp/build/80754af9/pyflakes_1636644436481/work
Pygments @ file:///opt/conda/conda-bld/pygments_1644249106324/work
pylint @ file:///tmp/build/80754af9/pylint_1627536508692/work
pyOpenSSL @ file:///opt/conda/conda-bld/pyopenssl_1643788558760/work
pyparsing @ file:///tmp/build/80754af9/pyparsing_1635766073266/work
PySocks @ file:///tmp/build/80754af9/pysocks_1605305763431/work
pytest==6.2.4
pytest-cov @ file:///tmp/build/80754af9/pytest-cov_1637159997573/work
python-dateutil @ file:///tmp/build/80754af9/python-dateutil_1626374649649/work
pytz==2021.3
radon @ file:///tmp/build/80754af9/radon_1620736734533/work
readme-renderer @ file:///tmp/build/80754af9/readme_renderer_1613501421530/work
requests @ file:///opt/conda/conda-bld/requests_1641824580448/work
requests-toolbelt @ file:///Users/ktietz/demo/mc3/conda-bld/requests-toolbelt_1629456163440/work
rfc3986 @ file:///Users/ktietz/demo/mc3/conda-bld/rfc3986_1629478296451/work
SecretStorage @ file:///tmp/build/80754af9/secretstorage_1614022884787/work
six @ file:///tmp/build/80754af9/six_1644875935023/work
snowballstemmer @ file:///tmp/build/80754af9/snowballstemmer_1637937080595/work
Sphinx @ file:///opt/conda/conda-bld/sphinx_1643644169832/work
sphinxcontrib-applehelp @ file:///home/ktietz/src/ci/sphinxcontrib-applehelp_1611920841464/work
sphinxcontrib-devhelp @ file:///home/ktietz/src/ci/sphinxcontrib-devhelp_1611920923094/work
sphinxcontrib-htmlhelp @ file:///tmp/build/80754af9/sphinxcontrib-htmlhelp_1623945626792/work
sphinxcontrib-jsmath @ file:///home/ktietz/src/ci/sphinxcontrib-jsmath_1611920942228/work
sphinxcontrib-qthelp @ file:///home/ktietz/src/ci/sphinxcontrib-qthelp_1611921055322/work
sphinxcontrib-serializinghtml @ file:///tmp/build/80754af9/sphinxcontrib-serializinghtml_1624451540180/work
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
tox @ file:///home/conda/feedstock_root/build_artifacts/tox_1656596559115/work
tqdm @ file:///opt/conda/conda-bld/tqdm_1647339053476/work
twine==1.15.0
typed-ast @ file:///tmp/build/80754af9/typed-ast_1624953671446/work
typing_extensions @ file:///opt/conda/conda-bld/typing_extensions_1647553014482/work
urllib3 @ file:///opt/conda/conda-bld/urllib3_1643638302206/work
virtualenv @ file:///tmp/build/80754af9/virtualenv_1620973272978/work
webencodings==0.5.1
wrapt==1.12.1
zipp @ file:///tmp/build/80754af9/zipp_1633618647012/work

name: friendlypins
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - alabaster=0.7.12=pyhd3eb1b0_0
  - appdirs=1.4.4=pyhd3eb1b0_0
  - astroid=2.6.6=py36h06a4308_0
  - attrs=21.4.0=pyhd3eb1b0_0
  - babel=2.9.1=pyhd3eb1b0_0
  - bleach=4.1.0=pyhd3eb1b0_0
  - brotlipy=0.7.0=py36h27cfd23_1003
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - cffi=1.14.6=py36h400218f_0
  - charset-normalizer=2.0.4=pyhd3eb1b0_0
  - cmarkgfm=0.4.2=py36h27cfd23_0
  - colorama=0.4.4=pyhd3eb1b0_0
  - coverage=5.5=py36h27cfd23_2
  - cryptography=35.0.0=py36hd23ed53_0
  - dateutils=0.6.12=py_0
  - dbus=1.13.18=hb2f20db_0
  - distlib=0.3.2=pyhd3eb1b0_0
  - docutils=0.17.1=py36h06a4308_1
  - expat=2.6.4=h6a678d5_0
  - filelock=3.4.0=pyhd3eb1b0_0
  - flake8=4.0.1=pyhd3eb1b0_1
  - flake8-polyfill=1.0.2=pyhd3eb1b0_1
  - future=0.18.2=py36_1
  - glib=2.69.1=h4ff587b_1
  - idna=3.3=pyhd3eb1b0_0
  - imagesize=1.3.0=pyhd3eb1b0_0
  - importlib-metadata=4.8.1=py36h06a4308_0
  - importlib_metadata=4.8.1=hd3eb1b0_0
  - importlib_resources=5.2.0=pyhd3eb1b0_1
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - isort=5.9.3=pyhd3eb1b0_0
  - jeepney=0.7.1=pyhd3eb1b0_0
  - jinja2=3.0.3=pyhd3eb1b0_0
  - keyring=23.1.0=py36h06a4308_0
  - lazy-object-proxy=1.6.0=py36h27cfd23_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - markupsafe=2.0.1=py36h27cfd23_0
  - mccabe=0.6.1=py36_1
  - mock=4.0.3=pyhd3eb1b0_0
  - more-itertools=8.12.0=pyhd3eb1b0_0
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=21.3=pyhd3eb1b0_0
  - pcre=8.45=h295c915_0
  - pip=21.2.2=py36h06a4308_0
  - pkginfo=1.8.2=pyhd3eb1b0_0
  - pluggy=0.13.1=py36h06a4308_0
  - py=1.11.0=pyhd3eb1b0_0
  - pycodestyle=2.8.0=pyhd3eb1b0_0
  - pycparser=2.21=pyhd3eb1b0_0
  - pyflakes=2.4.0=pyhd3eb1b0_0
  - pygments=2.11.2=pyhd3eb1b0_0
  - pylint=2.9.6=py36h06a4308_1
  - pyopenssl=22.0.0=pyhd3eb1b0_0
  - pyparsing=3.0.4=pyhd3eb1b0_0
  - pysocks=1.7.1=py36h06a4308_0
  - pytest=6.2.4=py36h06a4308_2
  - pytest-cov=3.0.0=pyhd3eb1b0_0
  - python=3.6.13=h12debd9_1
  - python-dateutil=2.8.2=pyhd3eb1b0_0
  - pytz=2021.3=pyhd3eb1b0_0
  - radon=4.5.1=pyhd3eb1b0_0
  - readline=8.2=h5eee18b_0
  - readme_renderer=24.0=py36h06a4308_0
  - requests=2.27.1=pyhd3eb1b0_0
  - requests-toolbelt=0.9.1=pyhd3eb1b0_0
  - rfc3986=1.4.0=pyhd3eb1b0_0
  - secretstorage=3.3.1=py36h06a4308_0
  - setuptools=58.0.4=py36h06a4308_0
  - six=1.16.0=pyhd3eb1b0_1
  - snowballstemmer=2.2.0=pyhd3eb1b0_0
  - sphinx=4.4.0=pyhd3eb1b0_0
  - sphinxcontrib-applehelp=1.0.2=pyhd3eb1b0_0
  - sphinxcontrib-devhelp=1.0.2=pyhd3eb1b0_0
  - sphinxcontrib-htmlhelp=2.0.0=pyhd3eb1b0_0
  - sphinxcontrib-jsmath=1.0.1=pyhd3eb1b0_0
  - sphinxcontrib-qthelp=1.0.3=pyhd3eb1b0_0
  - sphinxcontrib-serializinghtml=1.1.5=pyhd3eb1b0_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd3eb1b0_0
  - tox=3.25.1=pyhd8ed1ab_0
  - tqdm=4.63.0=pyhd3eb1b0_0
  - typed-ast=1.4.3=py36h7f8727e_1
  - typing-extensions=4.1.1=hd3eb1b0_0
  - typing_extensions=4.1.1=pyh06a4308_0
  - urllib3=1.26.8=pyhd3eb1b0_0
  - virtualenv=20.4.6=py36h06a4308_1
  - webencodings=0.5.1=py36_1
  - wheel=0.37.1=pyhd3eb1b0_0
  - wrapt=1.12.1=py36h7b6447c_1
  - xz=5.6.4=h5eee18b_1
  - zipp=3.6.0=pyhd3eb1b0_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - mando==0.6.4
      - twine==1.15.0
prefix: /opt/conda/envs/friendlypins

unit_tests/test_console_actions.py::test_download_thumbnails unit_tests/test_console_actions.py::test_download_thumbnails_with_delete unit_tests/test_console_actions.py::test_download_thumbnails_error unit_tests/test_console_actions.py::test_download_thumbnails_missing_board unit_tests/test_console_actions.py::test_download_thumbnails_exists
src/friendlypins/scripts/fpins.py src/friendlypins/utils/console_actions.py
src/friendlypins/scripts/fpins.py src/friendlypins/utils/console_actions.py