Rather than backing up successfully, it threw a pair of exceptions, with the following console output:
moonlit-tulip: Backup complete: Found empty set of posts
Caught exception while saving post 57632338982:
Traceback (most recent call last):
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1928, in save_post
f.write(self.get_post())
^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1806, in get_post
content = self.get_content()
^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1541, in get_content
append_try('caption')
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1512, in append_try
elt = re.sub(r"""(?i)(<img\s(?:[^>]*\s)?src\s*=\s*["'])(.*?)(["'][^>]*>)""",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/re/__init__.py", line 186, in sub
return _compile(pattern, flags).sub(repl, string, count)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1697, in get_inline_image
saved_name = self.download_media(image_url, filename=image_filename)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1785, in download_media
return self._download_media_inner(url, get_path, path_parts, media_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1958, in _download_media_inner
wget_retrieve(url, dstpath, post_id=self.ident, post_timestamp=self.post['timestamp'])
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 848, in __call__
_retrieve_loop(
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 687, in _retrieve_loop
err, doctype = gethttp(url, hstat, doctype, logger, retry_counter, use_dns_check)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 297, in gethttp
resp = urlopen(url, use_dns_check, request_headers, preload_content=False, enforce_content_length=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 831, in urlopen
return poolman.request('GET', url, headers=req_headers, retries=HTTP_RETRY, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/_request_methods.py", line 136, in request
return self.request_encode_url(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/_request_methods.py", line 183, in request_encode_url
return self.urlopen(method, url, **extra_kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 231, in urlopen
return super().urlopen(method, url, redirect, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/poolmanager.py", line 443, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/connectionpool.py", line 789, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/connectionpool.py", line 536, in _make_request
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 173, in getresponse
return WGHTTPResponse(
^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 104, in __init__
super().__init__(
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/response.py", line 593, in __init__
super().__init__(
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/response.py", line 338, in __init__
self.retries = retries
^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/response.py", line 406, in retries
if retries is not None and retries.history:
^^^^^^^^^^^^^^^
AttributeError: 'bool' object has no attribute 'history'
Unable to download video in post #170435533203
Traceback (most recent call last):style
File "/home/alyssa/.local/bin/tumblr-backup", line 8, in <module>
sys.exit(main())
^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 2394, in main
tb.backup(account, options.prev_archives[i] if options.prev_archives else None)
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1441, in backup
build_index()
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1233, in build_index
get_avatar(prev_archive, no_get=self.options.no_get)
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 679, in get_avatar
wget_retrieve(url, avatar_dest, adjust_basename=adj_bn)
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 848, in __call__
_retrieve_loop(
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 687, in _retrieve_loop
err, doctype = gethttp(url, hstat, doctype, logger, retry_counter, use_dns_check)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 297, in gethttp
resp = urlopen(url, use_dns_check, request_headers, preload_content=False, enforce_content_length=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 831, in urlopen
return poolman.request('GET', url, headers=req_headers, retries=HTTP_RETRY, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/_request_methods.py", line 136, in request
return self.request_encode_url(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/_request_methods.py", line 183, in request_encode_url
return self.urlopen(method, url, **extra_kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 231, in urlopen
return super().urlopen(method, url, redirect, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/poolmanager.py", line 443, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/connectionpool.py", line 789, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/connectionpool.py", line 536, in _make_request
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 173, in getresponse
return WGHTTPResponse(
^^^^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 104, in __init__
super().__init__(
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/response.py", line 593, in __init__
super().__init__(
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/response.py", line 338, in __init__
self.retries = retries
^^^^^^^^^^^^
File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/response.py", line 406, in retries
if retries is not None and retries.history:
^^^^^^^^^^^^^^^
AttributeError: 'bool' object has no attribute 'history'
The two exception-raising posts, for reference, are here and here. The former strikes me as particularly interesting, since, to my perception when viewing the page as opposed to the source code, it doesn't seem to contain a video at all.
Using tumblr-backup 1.0.3, installed this morning with
[video,notes,jq]
optional dependencies, I just attempted to run the following command:Rather than backing up successfully, it threw a pair of exceptions, with the following console output:
The two exception-raising posts, for reference, are here and here. The former strikes me as particularly interesting, since, to my perception when viewing the page as opposed to the source code, it doesn't seem to contain a video at all.