Compare commits

..

No commits in common. "3faa6f9a40c831d018875095ec141352de681f11" and "fadf973e8f57a0a3367de3aa72e5f568d8ddca37" have entirely different histories.

16 changed files with 316 additions and 1140 deletions

2
.gitignore vendored
View File

@ -1,5 +1,3 @@
/.idea/*
/aniworld/bin/*
/aniworld/lib/*
/src/__pycache__/*
/src/__pycache__/

2
.gitmodules vendored
View File

@ -1,4 +1,4 @@
[submodule "src/AniWorld-Downloader"]
path = src/AniWorld-Downloader
url = https://github.com/lukaspupkalipinski/AniWorld-Downloader.git
url = https://github.com/lukaspupkalipinski/AniWorld-Downloader
branch = next

View File

View File

@ -1,786 +0,0 @@
Unexpected error processing folder 'A.I.C.O. Incarnation (2018)': ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 667, in send
resp = conn.urlopen(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\util.py", line 38, in reraise
raise value.with_traceback(tb)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\repo\AniWorld\src\FolderLookup.py", line 31, in __init
missings, site = self.__GetMissingEpisodesAndSeason(serie.key, mp4_files)
File "D:\repo\AniWorld\src\FolderLookup.py", line 136, in __GetMissingEpisodesAndSeason
expected_dict = get_season_episode_count(key) # key season , value count of episodes
File "D:\repo\AniWorld\src\AniWorld-Downloader\src\aniworld\common\common.py", line 245, in get_season_episode_count
response = session.get(base_url, headers=ANIWORLD_HEADERS, timeout=DEFAULT_REQUEST_TIMEOUT)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 602, in get
return self.request("GET", url, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 682, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Unexpected error processing folder 'A.I.C.O. Incarnation (2018)': ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 667, in send
resp = conn.urlopen(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\util.py", line 38, in reraise
raise value.with_traceback(tb)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\repo\AniWorld\src\FolderLookup.py", line 31, in __init
missings, site = self.__GetMissingEpisodesAndSeason(serie.key, mp4_files)
File "D:\repo\AniWorld\src\FolderLookup.py", line 136, in __GetMissingEpisodesAndSeason
expected_dict = get_season_episode_count(key) # key season , value count of episodes
File "D:\repo\AniWorld\src\AniWorld-Downloader\src\aniworld\common\common.py", line 245, in get_season_episode_count
response = session.get(base_url, headers=ANIWORLD_HEADERS, timeout=DEFAULT_REQUEST_TIMEOUT)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 602, in get
return self.request("GET", url, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 682, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Unexpected error processing folder 'A.I.C.O. Incarnation (2018)': argument of type 'types.GenericAlias' is not iterable
Traceback (most recent call last):
File "D:\repo\AniWorld\src\FolderLookup.py", line 34, in __init
if folder not in self.folderDict:
TypeError: argument of type 'types.GenericAlias' is not iterable
Unexpected error processing folder 'A.I.C.O. Incarnation (2018)': ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 667, in send
resp = conn.urlopen(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\util.py", line 38, in reraise
raise value.with_traceback(tb)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\repo\AniWorld\src\FolderLookup.py", line 31, in __init
missings, site = self.__GetMissingEpisodesAndSeason(serie.key, mp4_files)
File "D:\repo\AniWorld\src\FolderLookup.py", line 136, in __GetMissingEpisodesAndSeason
expected_dict = get_season_episode_count(key) # key season , value count of episodes
File "D:\repo\AniWorld\src\AniWorld-Downloader\src\aniworld\common\common.py", line 245, in get_season_episode_count
response = session.get(base_url, headers=ANIWORLD_HEADERS, timeout=DEFAULT_REQUEST_TIMEOUT)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 602, in get
return self.request("GET", url, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 682, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Unexpected error processing folder 'Aesthetica of a Rogue Hero (2012)': ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 667, in send
resp = conn.urlopen(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\util.py", line 38, in reraise
raise value.with_traceback(tb)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\repo\AniWorld\src\FolderLookup.py", line 31, in __init
missings, site = self.__GetMissingEpisodesAndSeason(serie.key, mp4_files)
File "D:\repo\AniWorld\src\FolderLookup.py", line 136, in __GetMissingEpisodesAndSeason
expected_dict = get_season_episode_count(key) # key season , value count of episodes
File "D:\repo\AniWorld\src\AniWorld-Downloader\src\aniworld\common\common.py", line 245, in get_season_episode_count
response = session.get(base_url, headers=ANIWORLD_HEADERS, timeout=DEFAULT_REQUEST_TIMEOUT)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 602, in get
return self.request("GET", url, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 682, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Unexpected error processing folder 'A.I.C.O. Incarnation (2018)': ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 534, in _make_request
response = conn.getresponse()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 516, in getresponse
httplib_response = super().getresponse()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\http\client.py", line 1375, in getresponse
response.begin()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\http\client.py", line 318, in begin
version, status, reason = self._read_status()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\http\client.py", line 287, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 667, in send
resp = conn.urlopen(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\util.py", line 38, in reraise
raise value.with_traceback(tb)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 534, in _make_request
response = conn.getresponse()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 516, in getresponse
httplib_response = super().getresponse()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\http\client.py", line 1375, in getresponse
response.begin()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\http\client.py", line 318, in begin
version, status, reason = self._read_status()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\http\client.py", line 287, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\repo\AniWorld\src\FolderLookup.py", line 31, in __init
missings, site = self.__GetMissingEpisodesAndSeason(serie.key, mp4_files)
File "D:\repo\AniWorld\src\FolderLookup.py", line 137, in __GetMissingEpisodesAndSeason
expected_dict = get_season_episode_count(key) # key season , value count of episodes
File "D:\repo\AniWorld\src\AniWorld-Downloader\src\aniworld\common\common.py", line 248, in get_season_episode_count
response = session.get(base_url, headers=ANIWORLD_HEADERS, timeout=DEFAULT_REQUEST_TIMEOUT)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 602, in get
return self.request("GET", url, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 682, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
Unexpected error processing folder 'Aesthetica of a Rogue Hero (2012)': ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 667, in send
resp = conn.urlopen(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\util.py", line 38, in reraise
raise value.with_traceback(tb)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\repo\AniWorld\src\FolderLookup.py", line 31, in __init
missings, site = self.__GetMissingEpisodesAndSeason(serie.key, mp4_files)
File "D:\repo\AniWorld\src\FolderLookup.py", line 137, in __GetMissingEpisodesAndSeason
expected_dict = get_season_episode_count(key) # key season , value count of episodes
File "D:\repo\AniWorld\src\AniWorld-Downloader\src\aniworld\common\common.py", line 248, in get_season_episode_count
response = session.get(base_url, headers=ANIWORLD_HEADERS, timeout=DEFAULT_REQUEST_TIMEOUT)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 602, in get
return self.request("GET", url, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 682, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Unexpected error processing folder 'Alya Sometimes Hides Her Feelings in Russian (2024)': ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 667, in send
resp = conn.urlopen(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\util.py", line 38, in reraise
raise value.with_traceback(tb)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\repo\AniWorld\src\FolderLookup.py", line 31, in __init
missings, site = self.__GetMissingEpisodesAndSeason(serie.key, mp4_files)
File "D:\repo\AniWorld\src\FolderLookup.py", line 137, in __GetMissingEpisodesAndSeason
expected_dict = get_season_episode_count(key) # key season , value count of episodes
File "D:\repo\AniWorld\src\AniWorld-Downloader\src\aniworld\common\common.py", line 248, in get_season_episode_count
response = session.get(base_url, headers=ANIWORLD_HEADERS, timeout=DEFAULT_REQUEST_TIMEOUT)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 602, in get
return self.request("GET", url, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 682, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Unexpected error processing folder 'Angels of Death (2018)': ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 667, in send
resp = conn.urlopen(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\util.py", line 38, in reraise
raise value.with_traceback(tb)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\repo\AniWorld\src\FolderLookup.py", line 31, in __init
missings, site = self.__GetMissingEpisodesAndSeason(serie.key, mp4_files)
File "D:\repo\AniWorld\src\FolderLookup.py", line 137, in __GetMissingEpisodesAndSeason
expected_dict = get_season_episode_count(key) # key season , value count of episodes
File "D:\repo\AniWorld\src\AniWorld-Downloader\src\aniworld\common\common.py", line 248, in get_season_episode_count
response = session.get(base_url, headers=ANIWORLD_HEADERS, timeout=DEFAULT_REQUEST_TIMEOUT)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 602, in get
return self.request("GET", url, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 682, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Unexpected error processing folder 'Arifureta (2019)': ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 667, in send
resp = conn.urlopen(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\util.py", line 38, in reraise
raise value.with_traceback(tb)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\repo\AniWorld\src\FolderLookup.py", line 31, in __init
missings, site = self.__GetMissingEpisodesAndSeason(serie.key, mp4_files)
File "D:\repo\AniWorld\src\FolderLookup.py", line 137, in __GetMissingEpisodesAndSeason
expected_dict = get_season_episode_count(key) # key season , value count of episodes
File "D:\repo\AniWorld\src\AniWorld-Downloader\src\aniworld\common\common.py", line 248, in get_season_episode_count
response = session.get(base_url, headers=ANIWORLD_HEADERS, timeout=DEFAULT_REQUEST_TIMEOUT)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 602, in get
return self.request("GET", url, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 682, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Folder: 'A.I.C.O. Incarnation (2018)' - Unexpected error processing folder 'A.I.C.O. Incarnation (2018)': ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 667, in send
resp = conn.urlopen(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen
retries = retries.increment(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\retry.py", line 474, in increment
raise reraise(type(error), error, _stacktrace)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\util.py", line 38, in reraise
raise value.with_traceback(tb)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
response = self._make_request(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
raise new_e
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
self._validate_conn(conn)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
conn.connect()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 741, in connect
sock_and_verified = _ssl_wrap_socket_and_match_hostname(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
ssl_sock = ssl_wrap_socket(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 480, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\urllib3\util\ssl_.py", line 524, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 513, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1104, in _create
self.do_handshake()
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\ssl.py", line 1375, in do_handshake
self._sslobj.do_handshake()
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\repo\AniWorld\src\FolderLookup.py", line 31, in __init
missings, site = self.__GetMissingEpisodesAndSeason(serie.key, mp4_files)
File "D:\repo\AniWorld\src\FolderLookup.py", line 137, in __GetMissingEpisodesAndSeason
expected_dict = get_season_episode_count(key) # key season , value count of episodes
File "D:\repo\AniWorld\src\AniWorld-Downloader\src\aniworld\common\common.py", line 248, in get_season_episode_count
response = session.get(base_url, headers=ANIWORLD_HEADERS, timeout=DEFAULT_REQUEST_TIMEOUT)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 602, in get
return self.request("GET", url, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
File "C:\Users\lukas\anaconda3\envs\AniWorld\lib\site-packages\requests\adapters.py", line 682, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Eine vorhandene Verbindung wurde vom Remotehost geschlossen', None, 10054, None))

View File

@ -1 +1 @@
Subproject commit a267efa72a12af19df6641ab2ab39e494a1d0ee8
Subproject commit 94e332f37b3f037d175e579ea370ab2be90534e4

View File

@ -2,23 +2,26 @@ import os
import re
import logging
from collections import defaultdict
import pickle
from Serie import Serie
import json
import traceback
from GlobalLogger import setupLogger, error_logger, noKeyFound_logger, noGerFound_logger
from Exceptions import NoKeyFoundException, MatchNotFoundError
import requests
from aniworld.common import get_season_episode_count
class SerieScanner:
class FolderLookup:
def __init__(self, basePath: str):
self.directory = basePath
self.folderDict: dict[str, Serie] = {} # Proper initialization
self.folderDict = dict[str, list[Serie]]
logging.info(f"Initialized Loader with base path: {self.directory}")
self.__init()
def is_null_or_whitespace(self, s):
return s is None or s.strip() == ""
def Scan(self):
def __init(self):
logging.info("Starting process to load missing episodes")
result = self.__find_mp4_files()
@ -28,31 +31,48 @@ class SerieScanner:
if (serie != None and not self.is_null_or_whitespace(serie.key)):
missings, site = self.__GetMissingEpisodesAndSeason(serie.key, mp4_files)
serie.episodeDict = missings
serie.save_to_file(os.path.join(os.path.join(self.directory, folder), 'data'))
self.__SaveData(serie, folder)
if folder not in self.folderDict:
self.folderDict[folder] = []
self.folderDict[folder] = serie
noKeyFound_logger.info(f"Saved Serie: '{str(serie)}'")
self.folderDict[folder].append(serie)
except NoKeyFoundException as nkfe:
NoKeyFoundException.error(f"Error processing folder '{folder}': {nkfe}")
noKeyFound_logger.error(f"Error processing folder '{folder}': {nkfe}")
except Exception as e:
error_logger.error(f"Folder: '{folder}' - Unexpected error processing folder '{folder}': {e} \n {traceback.format_exc()}")
error_logger.error(f"Unexpected error processing folder '{folder}': {e} \n {traceback.format_exc()}")
continue
def __find_mp4_files(self):
logging.info("Scanning for .mp4 files")
for anime_name in os.listdir(self.directory):
anime_path = os.path.join(self.directory, anime_name)
if os.path.isdir(anime_path):
mp4_files = []
has_files = False
for root, _, files in os.walk(anime_path):
for file in files:
if file.endswith(".mp4"):
mp4_files.append(os.path.join(root, file))
has_files = True
yield anime_name, mp4_files if has_files else []
for root_folder_name in os.listdir(self.directory):
folder_data = defaultdict(list) # Dictionary to store MP4 files per folder
folder = os.path.join(self.directory, root_folder_name)
logging.info(f"Processing folder: {root_folder_name}")
# First pass: Scan all folders and collect MP4 file data
for root, dirs, files in os.walk(folder):
mp4_files = [file for file in files if file.endswith('.mp4')]
if mp4_files:
folder_data[root_folder_name].extend(mp4_files)
yield root_folder_name, folder_data[root_folder_name]
for dir in self.__find_empty_folders():
logging.info(f"Found no .mp4 files in {dir}")
yield dir, []
def __find_empty_folders(self):
"""Yield folder names that do not contain any mp4 files in a given directory."""
for folder in os.listdir(self.directory):
folder_path = os.path.join(self.directory, folder)
if os.path.isdir(folder_path): # Ensure it's a directory
has_mp4 = any(file.endswith(".mp4") for file in os.listdir(folder_path))
if not has_mp4:
yield folder # Yield the folder name if no mp4 files found
def __remove_year(self, input_string: str):
cleaned_string = re.sub(r'\(\d{4}\)', '', input_string).strip()
@ -67,17 +87,25 @@ class SerieScanner:
if os.path.exists(key_file):
with open(key_file, 'r') as file:
key = file.read().strip()
logging.info(f"Key found for folder '{folder_name}': {key}")
return Serie(key, "", "aniworld.to", folder_name, dict())
key = file.read().strip()
return Serie(key, "", "aniworld.to" ,folder_name)
if os.path.exists(serie_file):
with open(serie_file, "rb") as file:
logging.info(f"load serie_file from '{folder_name}': {serie_file}")
return Serie.load_from_file(serie_file)
return pickle.load(file)
return None
def __SaveData(self, serie: Serie, folder_name: str):
"""Saves a Serie object to a file using JSON."""
folder_path = os.path.join(self.directory, folder_name)
serie_file = os.path.join(folder_path, 'data')
with open(serie_file, "w", encoding="utf-8") as file:
json.dump(serie, file, indent=4)
def __GetEpisodeAndSeason(self, filename: str):
pattern = r'S(\d+)E(\d+)'
@ -114,8 +142,19 @@ class SerieScanner:
missing_episodes = [ep for ep in range(1, expected_count + 1) if ep not in existing_episodes]
if missing_episodes:
episodes_dict[season] = missing_episodes
episodes_dict[season] = [missing_episodes]
return episodes_dict, "aniworld.to"
#gg = FolderLookup("\\\\sshfs.r\\ubuntu@192.168.178.43\\media\\serien\\Serien")
base_url = f"https://aniworld.to/anime/stream/aico-incarnation"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
"Accept": "*/*",
"Referer": "https://www.example.com"
}
session = requests.Session()
response = requests.get(base_url, headers=headers, timeout=30)
c = response.content;

View File

@ -2,15 +2,10 @@ import os
import re
import subprocess
import logging
import json
import requests
import html
from urllib.parse import quote
from Serie import Serie
from aniworld.models import Anime, Episode, NoMachingLanguage
from aniworld.config import PROVIDER_HEADERS, INVALID_PATH_CHARS, ANIWORLD_TO, session, DEFAULT_REQUEST_TIMEOUT
from aniworld.parser import arguments
from aniworld.models import Anime
from aniworld.config import PROVIDER_HEADERS, INVALID_PATH_CHARS
from aniworld.parser import arguments
# Read timeout from environment variable, default to 600 seconds (10 minutes)
timeout = int(os.getenv("DOWNLOAD_TIMEOUT", 600))
@ -20,57 +15,6 @@ download_error_handler = logging.FileHandler("../download_errors.log")
download_error_handler.setLevel(logging.ERROR)
download_error_logger.addHandler(download_error_handler)
def CreateSerie(searchEntry):
return Serie(searchEntry["link"], searchEntry["name"], "aniworld.to", searchEntry["link"], {})
def search_anime(keyword: str = None) -> str:
search_url = f"{ANIWORLD_TO}/ajax/seriesSearch?keyword={quote(keyword)}"
anime_list = fetch_anime_list(search_url)
return anime_list
def fetch_anime_list(url: str) -> list:
response = session.get(url, timeout=DEFAULT_REQUEST_TIMEOUT)
response.raise_for_status()
clean_text = response.text.strip()
try:
decoded_data = json.loads(html.unescape(clean_text))
return decoded_data if isinstance(decoded_data, list) else []
except json.JSONDecodeError:
try:
# Remove BOM and problematic characters
clean_text = clean_text.encode('utf-8').decode('utf-8-sig')
# Remove problematic characters
clean_text = re.sub(r'[\x00-\x1F\x7F-\x9F]', '', clean_text)
# Parse the new text
decoded_data = json.loads(clean_text)
return decoded_data if isinstance(decoded_data, list) else []
except (requests.RequestException, json.JSONDecodeError) as exc:
raise ValueError("Could not get valid anime: ") from exc
def AniWorld_download_episode(directory, folder, season, episode, key):
"""Helper function to download an individual episode."""
try:
folder_path = os.path.join(directory, folder, f"Season {season}")
anime = Anime(
episode_list=[Episode(slug=key, season=season, episode=episode)],
language="German Dub",
output_directory=folder_path
)
logging.info(f"Downloading anime {key} season {season} episode {episode}")
download(anime)
logging.info(f"Downloading completed anime {key} season {season} episode {episode}")
except KeyError as keye:
download_error_logger.error(f"Language not found for anime: {key} season: {season} episode: {episode}")
except NoMachingLanguage as ee:
download_error_logger.error(f"Language not found for anime: {key} season: {season} episode: {episode}")
except Exception as e:
logging.error(f"Error downloading episode {episode} of season {season} for anime {key}: {e}")
def download(anime: Anime): # pylint: disable=too-many-branches
for episode in anime:
sanitized_anime_title = ''.join(
@ -99,8 +43,7 @@ def download(anime: Anime): # pylint: disable=too-many-branches
#"--concurrent-fragments", "4",
"-o", output_path,
"--quiet",
"--no-warnings",
"--progress"
"--no-warnings"
]
if anime.provider in PROVIDER_HEADERS:

View File

@ -1,184 +0,0 @@
import sys
import os
import logging
import AniWorldLoader
import SerieList
import SerieScanner
# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(funcName)s - %(message)s')
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(logging.Formatter(
"%(asctime)s - %(levelname)s - %(funcName)s - %(message)s")
)
logging.getLogger().addHandler(console_handler)
logging.getLogger("urllib3.connectionpool").setLevel(logging.INFO)
logging.getLogger('charset_normalizer').setLevel(logging.INFO)
logging.getLogger().setLevel(logging.INFO)
error_logger = logging.getLogger("ErrorLog")
error_handler = logging.FileHandler("../errors.log")
error_handler.setLevel(logging.ERROR)
error_logger.addHandler(error_handler)
noKeyFound_logger = logging.getLogger("NoKeyFound")
noKeyFound_handler = logging.FileHandler("../NoKeyFound.log")
noKeyFound_handler.setLevel(logging.ERROR)
noKeyFound_logger.addHandler(noKeyFound_handler)
noGerFound_logger = logging.getLogger("noGerFound")
noGerFound_handler = logging.FileHandler("../noGerFound.log")
noGerFound_handler.setLevel(logging.ERROR)
noGerFound_logger.addHandler(noGerFound_handler)
class NoKeyFoundException(Exception):
"""Exception raised when an anime key cannot be found."""
pass
class MatchNotFoundError(Exception):
"""Exception raised when an anime key cannot be found."""
pass
class SeriesApp:
def __init__(self, directory_to_search: str):
self.directory_to_search = directory_to_search
self.SerieScanner = SerieScanner.SerieScanner(directory_to_search)
self.List = SerieList.SerieList(self.directory_to_search)
print("Please wait while initializing...")
self.__InitList__()
def __InitList__(self):
self.series_list = self.List.GetMissingEpisode()
def display_series(self):
"""Print all series with assigned numbers."""
print("\nCurrent result:")
for i, serie in enumerate(self.series_list, 1):
print(f"{i}. {serie}")
def search(self, words :str) -> list:
return AniWorldLoader.search_anime(words)
def get_user_selection(self):
"""Handle user input for selecting series."""
self.display_series()
while True:
selection = input(
"\nSelect series by number (e.g. '1', '1,2' or 'all') or type 'rescan' to refresh: ").strip().lower()
if selection == "rescan":
self.rescan()
return None
selected_series = []
if selection == "all":
selected_series = self.series_list
else:
try:
indexes = [int(num) - 1 for num in selection.split(",")]
selected_series = [self.series_list[i] for i in indexes if 0 <= i < len(self.series_list)]
except ValueError:
print("Invalid selection. Going back to the result display.")
self.display_series()
continue
if selected_series:
return selected_series
else:
print("No valid series selected. Going back to the result display.")
return None
def print_progress_bar(self, current, total, length=20):
"""Generate progress bar string"""
filled_length = int(length * current // total)
bar = "@" * filled_length + "-" * (length - filled_length)
return f"[{bar}] {current} / {total}"
def download_series(self, series):
"""Simulate the downloading process with a progress bar."""
total_downloaded = 0
total_episodes = sum(sum(len(ep) for ep in serie.episodeDict.values()) for serie in series)
for serie in series:
serie_episodes = sum(len(ep) for ep in serie.episodeDict.values())
downloaded = 0
print(f"\nStarting download for {serie.folder}...\n")
for season, episodes in serie.episodeDict.items():
for episode in episodes:
if serie.site == "aniworld.to":
AniWorldLoader.AniWorld_download_episode(self.directory_to_search, serie.folder, season, episode, serie.key)
downloaded += 1
total_downloaded += 1
progress = self.print_progress_bar(downloaded, serie_episodes)
total_progress = self.print_progress_bar(total_downloaded, total_episodes)
sys.stdout.write(f"\r{serie.name}: {progress} (Total: {total_progress})")
sys.stdout.flush()
print("\nDownload complete!\n")
def rescan(self):
"""Rescan and refresh the series list."""
print("\nRescanning series...\n")
self.SerieScanner.Scan()
self.__InitList__()
def search_mode(self):
"""Search for a series and allow user to select an option."""
search_string = input("Enter search string: ").strip()
results = self.search(search_string)
if not results:
print("No results found. Returning to start.")
return
print("\nSearch results:")
for i, result in enumerate(results, 1):
print(f"{i}. {result}")
while True:
selection = input("\nSelect an option by number or type 'start' to return: ").strip().lower()
if selection == "start":
return
try:
index = int(selection) - 1
if 0 <= index < len(results):
chosen_name = results[index]
self.List.add(AniWorldLoader.CreateSerie(chosen_name))
return
else:
print("Invalid selection. Try again.")
except ValueError:
print("Invalid input. Try again.")
def run(self):
"""Main function to run the app."""
while True:
action = input("\nChoose action ('search' or 'local'): ").strip().lower()
if action == "search":
self.search_mode()
elif action == "local":
selected_series = self.get_user_selection()
if selected_series:
self.download_series(selected_series)
print("\nProgress: [@@@@@@@@@@@@@@@@@@@@] Complete")
break
else:
print("Invalid action. Please enter 'search' or 'local'.")
# Run the app
if __name__ == "__main__":
# Read the base directory from an environment variable
directory_to_search = os.getenv("ANIME_DIRECTORY", "\\\\sshfs.r\\ubuntu@192.168.178.43\\media\\serien\\Serien")
app = SeriesApp(directory_to_search)
app.run()

View File

@ -1,15 +1,10 @@
import json
class Serie:
def __init__(self, key: str, name: str, site: str, folder: str, episodeDict: dict[int, list[int]]):
def __init__(self, key: str, name: str, site: str, folder: str):
self._key = key
self._name = name
self._site = site
self._folder = folder
self._episodeDict = episodeDict
def __str__(self):
"""String representation of Serie object"""
return f"Serie(key='{self.key}', name='{self.name}', site='{self.site}', folder='{self.folder}', episodeDict={self.episodeDict})"
self._episodeDict = dict[int, list[int]]
@property
def key(self) -> str:
@ -50,33 +45,3 @@ class Serie:
@episodeDict.setter
def episodeDict(self, value: dict[int, list[int]]):
self._episodeDict = value
def to_dict(self):
"""Convert Serie object to dictionary for JSON serialization."""
return {
"key": self.key,
"name": self.name,
"site": self.site,
"folder": self.folder,
"episodeDict": {str(k): list(v) for k, v in self.episodeDict.items()}
}
@staticmethod
def from_dict(data: dict):
"""Create a Serie object from dictionary."""
episode_dict = {int(k): v for k, v in data["episodeDict"].items()} # Convert keys to int
return Serie(data["key"], data["name"], data["site"], data["folder"], episode_dict)
def save_to_file(self, filename: str):
"""Save Serie object to JSON file."""
with open(filename, "w") as file:
json.dump(self.to_dict(), file, indent=4)
@classmethod
def load_from_file(cls, filename: str) -> "Serie":
"""Load Serie object from JSON file."""
with open(filename, "r") as file:
data = json.load(file)
return cls.from_dict(data)

View File

@ -1,45 +0,0 @@
import os
import json
import logging
from Serie import Serie
class SerieList:
def __init__(self, basePath: str):
self.directory = basePath
self.folderDict: dict[str, Serie] = {} # Proper initialization
self.load_series()
def add(self, serie:Serie):
dataPath = os.path.join(self.directory, serie.folder, "data")
animePath = os.path.join(self.directory, serie.folder)
os.makedirs(animePath, exist_ok=True)
if not os.path.isfile(dataPath):
serie.save_to_file(dataPath)
self.folderDict[serie.folder] = serie;
def load_series(self):
""" Scan folders and load data files """
logging.info(f"Scanning anime folders in: {self.directory}")
for anime_folder in os.listdir(self.directory):
anime_path = os.path.join(self.directory, anime_folder, "data")
if os.path.isfile(anime_path):
logging.info(f"Found data folder: {anime_path}")
self.load_data(anime_folder, anime_path)
else:
logging.warning(f"Skipping {anime_folder} - No data folder found")
def load_data(self, anime_folder, data_path):
""" Load pickle files from the data folder """
try:
self.folderDict[anime_folder] = Serie.load_from_file(data_path)
logging.info(f"Successfully loaded {data_path} for {anime_folder}")
except Exception as e:
logging.error(f"Failed to load {data_path} in {anime_folder}: {e}")
def GetMissingEpisode(self):
"""Find all series with a non-empty episodeDict"""
return [serie for serie in self.folderDict.values() if len(serie.episodeDict) > 0]
#k = AnimeList("\\\\sshfs.r\\ubuntu@192.168.178.43\\media\\serien\\Serien")
#bbabab = k.GetMissingEpisode()
#print(bbabab)

59
src/console.py Normal file
View File

@ -0,0 +1,59 @@
import sys
import os
import traceback
import re
import logging
from concurrent.futures import ThreadPoolExecutor
from collections import defaultdict
from aniworld.models import Anime, Episode
from aniworld.common import get_season_episode_count, get_movie_episode_count
from aniworld.search import search_anime
from Loader import download
# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(funcName)s - %(message)s')
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(logging.Formatter(
"%(asctime)s - %(levelname)s - %(funcName)s - %(message)s")
)
logging.getLogger().addHandler(console_handler)
logging.getLogger("urllib3.connectionpool").setLevel(logging.INFO)
logging.getLogger('charset_normalizer').setLevel(logging.INFO)
logging.getLogger().setLevel(logging.INFO)
error_logger = logging.getLogger("ErrorLog")
error_handler = logging.FileHandler("../errors.log")
error_handler.setLevel(logging.ERROR)
error_logger.addHandler(error_handler)
noKeyFound_logger = logging.getLogger("NoKeyFound")
noKeyFound_handler = logging.FileHandler("../NoKeyFound.log")
noKeyFound_handler.setLevel(logging.ERROR)
noKeyFound_logger.addHandler(noKeyFound_handler)
noGerFound_logger = logging.getLogger("noGerFound")
noGerFound_handler = logging.FileHandler("../noGerFound.log")
noGerFound_handler.setLevel(logging.ERROR)
noGerFound_logger.addHandler(noGerFound_handler)
class NoKeyFoundException(Exception):
"""Exception raised when an anime key cannot be found."""
pass
class MatchNotFoundError(Exception):
"""Exception raised when an anime key cannot be found."""
pass
class ConsoleLoader:
def __init__(self, basePath: str):
self.directory = basePath
logging.info(f"Initialized Loader with base path: {self.directory}")
# Read the base directory from an environment variable
directory_to_search = os.getenv("ANIME_DIRECTORY", "\\\\sshfs.r\\ubuntu@192.168.178.43\\media\\serien\\Serien")
loader = Loader(directory_to_search)
loader.LoadMissing()

187
src/main.py Normal file
View File

@ -0,0 +1,187 @@
import os
import traceback
import re
import logging
from collections import defaultdict
from aniworld.models import Anime, Episode
from aniworld.common import get_season_episode_count
from aniworld.search import search_anime
from src.Loader import download
# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(funcName)s - %(message)s')
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(logging.Formatter(
"%(asctime)s - %(levelname)s - %(funcName)s - %(message)s")
)
logging.getLogger().addHandler(console_handler)
logging.getLogger("urllib3.connectionpool").setLevel(logging.INFO)
logging.getLogger('charset_normalizer').setLevel(logging.INFO)
logging.getLogger().setLevel(logging.INFO)
error_logger = logging.getLogger("ErrorLog")
error_handler = logging.FileHandler("../errors.log")
error_handler.setLevel(logging.ERROR)
error_logger.addHandler(error_handler)
noKeyFound_logger = logging.getLogger("NoKeyFound")
noKeyFound_handler = logging.FileHandler("../NoKeyFound.log")
noKeyFound_handler.setLevel(logging.ERROR)
noKeyFound_logger.addHandler(noKeyFound_handler)
noGerFound_logger = logging.getLogger("noGerFound")
noGerFound_handler = logging.FileHandler("../noGerFound.log")
noGerFound_handler.setLevel(logging.ERROR)
noGerFound_logger.addHandler(noGerFound_handler)
class NoKeyFoundException(Exception):
"""Exception raised when an anime key cannot be found."""
pass
class MatchNotFoundError(Exception):
"""Exception raised when an anime key cannot be found."""
pass
class Loader:
def __init__(self, basePath: str):
self.directory = basePath
logging.info(f"Initialized Loader with base path: {self.directory}")
def __find_mp4_files(self):
logging.info("Scanning for .mp4 files")
for root_folder_name in os.listdir(self.directory):
folder_data = defaultdict(list) # Dictionary to store MP4 files per folder
folder = os.path.join(self.directory, root_folder_name)
logging.info(f"Processing folder: {root_folder_name}")
# First pass: Scan all folders and collect MP4 file data
for root, dirs, files in os.walk(folder):
mp4_files = [file for file in files if file.endswith('.mp4')]
if mp4_files:
folder_data[root_folder_name].extend(mp4_files)
yield root_folder_name, folder_data[root_folder_name]
for dir in self.__find_empty_folders():
logging.info(f"Found no .mp4 files in {dir}")
yield dir, []
def __find_empty_folders(self):
"""Yield folder names that do not contain any mp4 files in a given directory."""
for folder in os.listdir(self.directory):
folder_path = os.path.join(self.directory, folder)
if os.path.isdir(folder_path): # Ensure it's a directory
has_mp4 = any(file.endswith(".mp4") for file in os.listdir(folder_path))
if not has_mp4:
yield folder # Yield the folder name if no mp4 files found
def __remove_year(self, input_string: str):
cleaned_string = re.sub(r'\(\d{4}\)', '', input_string).strip()
logging.debug(f"Removed year from '{input_string}' -> '{cleaned_string}'")
return cleaned_string
def __check_and_generate_key(self, folder_name: str):
folder_path = os.path.join(self.directory, folder_name)
key_file = os.path.join(folder_path, 'key')
if os.path.exists(key_file):
with open(key_file, 'r') as file:
key = file.read().strip()
logging.info(f"Key found for folder '{folder_name}': {key}")
return key
else:
try:
key = search_anime(folder_name, True)
if key:
key = key[0]['link']
with open(key_file, 'w') as file:
file.write(key)
logging.info(f"Generated new key for folder '{folder_name}': {key}")
return key
else:
raise NoKeyFoundException(f"No key found for folder '{folder_name}'")
except Exception as e:
raise NoKeyFoundException(f"Failed to retrieve key for folder '{folder_name}'") from e
def __GetEpisodeAndSeason(self, filename: str):
pattern = r'S(\d+)E(\d+)'
match = re.search(pattern, filename)
if match:
season = match.group(1)
episode = match.group(2)
logging.debug(f"Extracted season {season}, episode {episode} from '{filename}'")
return int(season), int(episode)
else:
logging.error(f"Failed to find season/episode pattern in '{filename}'")
raise MatchNotFoundError("Season and episode pattern not found in the filename.")
def __GetEpisodesAndSeasons(self, mp4_files: []):
episodes_dict = {}
for file in mp4_files:
season, episode = self.__GetEpisodeAndSeason(file)
if season in episodes_dict:
episodes_dict[season].append(episode)
else:
episodes_dict[season] = [episode]
return episodes_dict
def __GetMissingEpisodesAndSeason(self, key: str, mp4_files: []):
expected_dict = get_season_episode_count(key) # key season , value count of episodes
filedict = self.__GetEpisodesAndSeasons(mp4_files)
for season, expected_count in expected_dict.items():
existing_episodes = filedict.get(season, [])
missing_episodes = [ep for ep in range(1, expected_count + 1) if ep not in existing_episodes]
if missing_episodes:
yield season, missing_episodes
def LoadMissing(self):
logging.info("Starting process to load missing episodes")
result = self.__find_mp4_files()
def download_episode(folder, season, episode, key):
"""Helper function to download an individual episode."""
try:
folder_path = os.path.join(self.directory, folder, f"Season {season}")
anime = Anime(
episode_list=[Episode(slug=key, season=season, episode=episode)],
language="German Dub",
output_directory=folder_path
)
logging.info(f"Downloading anime {key} season {season} episode {episode}")
download(anime)
logging.info(f"Downloading completed anime {key} season {season} episode {episode}")
except KeyError as keye:
noGerFound_logger.error(f"Language not found for anime: {key} season: {season} episode: {episode}")
except Exception as e:
logging.error(f"Error downloading episode {episode} of season {season} for anime {key}: {e}")
for folder, mp4_files in result:
try:
key = self.__check_and_generate_key(folder)
missings = self.__GetMissingEpisodesAndSeason(key, mp4_files)
for season, missing_episodes in missings:
logging.info(f"Missing episodes for {key}\nSeason {str(season)}: Episodes: " + ",".join(f"{''.join(str(v))}" for v in missing_episodes))
for episode in missing_episodes:
download_episode(folder, season, episode, key)
except NoKeyFoundException as nkfe:
noKeyFound_logger.error(f"Error processing folder '{folder}': {nkfe}")
except Exception as e:
error_logger.error(f"Unexpected error processing folder '{folder}': {e} \n {traceback.format_exc()}")
continue
# Read the base directory from an environment variable
directory_to_search = os.getenv("ANIME_DIRECTORY", "\\\\sshfs.r\\ubuntu@192.168.178.43\\media\\serien\\Serien")
#directory_to_search = os.getenv("ANIME_DIRECTORY", "D:\\sss")
loader = Loader(directory_to_search)
loader.LoadMissing()