p115client 0.0.5.11.11__tar.gz → 0.0.5.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/PKG-INFO +1 -1
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/client.py +344 -92
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/pyproject.toml +1 -1
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/LICENSE +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/__init__.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/_upload.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/const.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/exception.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/py.typed +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/__init__.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/attr.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/auth.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/download.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/edit.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/export_dir.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/fs_files.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/history.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/iterdir.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/life.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/offline.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/pool.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/request.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/upload.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/util.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/tool/xys.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/p115client/type.py +0 -0
- {p115client-0.0.5.11.11 → p115client-0.0.5.12}/readme.md +0 -0
@@ -17730,32 +17730,35 @@ class P115Client(P115OpenClient):
|
|
17730
17730
|
########## Offline Download API ##########
|
17731
17731
|
|
17732
17732
|
@overload
|
17733
|
-
def
|
17733
|
+
def _offline_web_request(
|
17734
17734
|
self,
|
17735
|
-
payload: dict,
|
17735
|
+
payload: dict = {},
|
17736
17736
|
/,
|
17737
17737
|
ac: str = "",
|
17738
|
+
method: str = "POST",
|
17738
17739
|
*,
|
17739
17740
|
async_: Literal[False] = False,
|
17740
17741
|
**request_kwargs,
|
17741
17742
|
) -> dict:
|
17742
17743
|
...
|
17743
17744
|
@overload
|
17744
|
-
def
|
17745
|
+
def _offline_web_request(
|
17745
17746
|
self,
|
17746
|
-
payload: dict,
|
17747
|
+
payload: dict = {},
|
17747
17748
|
/,
|
17748
17749
|
ac: str = "",
|
17750
|
+
method: str = "POST",
|
17749
17751
|
*,
|
17750
17752
|
async_: Literal[True],
|
17751
17753
|
**request_kwargs,
|
17752
17754
|
) -> Coroutine[Any, Any, dict]:
|
17753
17755
|
...
|
17754
|
-
def
|
17756
|
+
def _offline_web_request(
|
17755
17757
|
self,
|
17756
|
-
payload: dict,
|
17758
|
+
payload: dict = {},
|
17757
17759
|
/,
|
17758
17760
|
ac: str = "",
|
17761
|
+
method: str = "POST",
|
17759
17762
|
*,
|
17760
17763
|
async_: Literal[False, True] = False,
|
17761
17764
|
**request_kwargs,
|
@@ -17763,41 +17766,47 @@ class P115Client(P115OpenClient):
|
|
17763
17766
|
api = "http://lixian.115.com/web/lixian/"
|
17764
17767
|
if ac:
|
17765
17768
|
payload["ac"] = ac
|
17769
|
+
if method.upper() == "POST":
|
17770
|
+
request_kwargs["data"] = payload
|
17771
|
+
else:
|
17772
|
+
request_kwargs["params"] = payload
|
17766
17773
|
return self.request(
|
17767
17774
|
url=api,
|
17768
|
-
method=
|
17769
|
-
data=payload,
|
17775
|
+
method=method,
|
17770
17776
|
async_=async_,
|
17771
17777
|
**request_kwargs,
|
17772
17778
|
)
|
17773
17779
|
|
17774
17780
|
@overload
|
17775
|
-
def
|
17781
|
+
def _offline_lixian_request(
|
17776
17782
|
self,
|
17777
|
-
payload: dict,
|
17783
|
+
payload: dict = {},
|
17778
17784
|
/,
|
17779
17785
|
ac: str = "",
|
17786
|
+
method: str = "POST",
|
17780
17787
|
*,
|
17781
17788
|
async_: Literal[False] = False,
|
17782
17789
|
**request_kwargs,
|
17783
17790
|
) -> dict:
|
17784
17791
|
...
|
17785
17792
|
@overload
|
17786
|
-
def
|
17793
|
+
def _offline_lixian_request(
|
17787
17794
|
self,
|
17788
|
-
payload: dict,
|
17795
|
+
payload: dict = {},
|
17789
17796
|
/,
|
17790
17797
|
ac: str = "",
|
17798
|
+
method: str = "POST",
|
17791
17799
|
*,
|
17792
17800
|
async_: Literal[True],
|
17793
17801
|
**request_kwargs,
|
17794
17802
|
) -> Coroutine[Any, Any, dict]:
|
17795
17803
|
...
|
17796
|
-
def
|
17804
|
+
def _offline_lixian_request(
|
17797
17805
|
self,
|
17798
|
-
payload: dict,
|
17806
|
+
payload: dict = {},
|
17799
17807
|
/,
|
17800
17808
|
ac: str = "",
|
17809
|
+
method: str = "POST",
|
17801
17810
|
*,
|
17802
17811
|
async_: Literal[False, True] = False,
|
17803
17812
|
**request_kwargs,
|
@@ -17805,19 +17814,22 @@ class P115Client(P115OpenClient):
|
|
17805
17814
|
api = "http://lixian.115.com/lixian/"
|
17806
17815
|
if ac:
|
17807
17816
|
payload["ac"] = ac
|
17808
|
-
|
17817
|
+
if method.upper() == "POST":
|
17818
|
+
request_kwargs["data"] = payload
|
17819
|
+
request_kwargs["ecdh_encrypt"] = True
|
17820
|
+
else:
|
17821
|
+
request_kwargs["params"] = payload
|
17809
17822
|
return self.request(
|
17810
17823
|
url=api,
|
17811
|
-
method=
|
17812
|
-
data=payload,
|
17824
|
+
method=method,
|
17813
17825
|
async_=async_,
|
17814
17826
|
**request_kwargs,
|
17815
17827
|
)
|
17816
17828
|
|
17817
17829
|
@overload
|
17818
|
-
def
|
17830
|
+
def _offline_lixianssp_request(
|
17819
17831
|
self,
|
17820
|
-
payload: dict,
|
17832
|
+
payload: dict = {},
|
17821
17833
|
/,
|
17822
17834
|
ac: str = "",
|
17823
17835
|
*,
|
@@ -17826,9 +17838,9 @@ class P115Client(P115OpenClient):
|
|
17826
17838
|
) -> dict:
|
17827
17839
|
...
|
17828
17840
|
@overload
|
17829
|
-
def
|
17841
|
+
def _offline_lixianssp_request(
|
17830
17842
|
self,
|
17831
|
-
payload: dict,
|
17843
|
+
payload: dict = {},
|
17832
17844
|
/,
|
17833
17845
|
ac: str = "",
|
17834
17846
|
*,
|
@@ -17836,9 +17848,9 @@ class P115Client(P115OpenClient):
|
|
17836
17848
|
**request_kwargs,
|
17837
17849
|
) -> Coroutine[Any, Any, dict]:
|
17838
17850
|
...
|
17839
|
-
def
|
17851
|
+
def _offline_lixianssp_request(
|
17840
17852
|
self,
|
17841
|
-
payload: dict,
|
17853
|
+
payload: dict = {},
|
17842
17854
|
/,
|
17843
17855
|
ac: str = "",
|
17844
17856
|
*,
|
@@ -17846,6 +17858,7 @@ class P115Client(P115OpenClient):
|
|
17846
17858
|
**request_kwargs,
|
17847
17859
|
) -> dict | Coroutine[Any, Any, dict]:
|
17848
17860
|
api = "http://lixian.115.com/lixianssp/"
|
17861
|
+
request_kwargs["method"] = "POST"
|
17849
17862
|
for k, v in payload.items():
|
17850
17863
|
payload[k] = str(v)
|
17851
17864
|
if ac:
|
@@ -17867,61 +17880,81 @@ class P115Client(P115OpenClient):
|
|
17867
17880
|
request_kwargs.setdefault("parse", parse)
|
17868
17881
|
return self.request(
|
17869
17882
|
url=api,
|
17870
|
-
method="POST",
|
17871
17883
|
data={"data": rsa_encode(dumps(payload)).decode("ascii")},
|
17872
17884
|
async_=async_,
|
17873
17885
|
**request_kwargs,
|
17874
17886
|
)
|
17875
17887
|
|
17876
17888
|
@overload
|
17877
|
-
def
|
17889
|
+
def _offline_request(
|
17878
17890
|
self,
|
17879
|
-
payload: dict,
|
17891
|
+
payload: dict = {},
|
17880
17892
|
/,
|
17881
17893
|
ac: str = "",
|
17882
|
-
|
17894
|
+
method: str = "POST",
|
17895
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
17896
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
17883
17897
|
*,
|
17884
17898
|
async_: Literal[False] = False,
|
17885
17899
|
**request_kwargs,
|
17886
17900
|
) -> dict:
|
17887
17901
|
...
|
17888
17902
|
@overload
|
17889
|
-
def
|
17903
|
+
def _offline_request(
|
17890
17904
|
self,
|
17891
|
-
payload: dict,
|
17905
|
+
payload: dict = {},
|
17892
17906
|
/,
|
17893
17907
|
ac: str = "",
|
17894
|
-
|
17908
|
+
method: str = "POST",
|
17909
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
17910
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
17895
17911
|
*,
|
17896
17912
|
async_: Literal[True],
|
17897
17913
|
**request_kwargs,
|
17898
17914
|
) -> Coroutine[Any, Any, dict]:
|
17899
17915
|
...
|
17900
|
-
def
|
17916
|
+
def _offline_request(
|
17901
17917
|
self,
|
17902
|
-
payload: dict,
|
17918
|
+
payload: dict = {},
|
17903
17919
|
/,
|
17904
17920
|
ac: str = "",
|
17905
|
-
|
17921
|
+
method: str = "POST",
|
17922
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
17923
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
17906
17924
|
*,
|
17907
17925
|
async_: Literal[False, True] = False,
|
17908
|
-
ecdh_encrypt: bool = False,
|
17909
17926
|
**request_kwargs,
|
17910
17927
|
) -> dict | Coroutine[Any, Any, dict]:
|
17911
|
-
if
|
17912
|
-
|
17913
|
-
|
17914
|
-
|
17915
|
-
|
17916
|
-
|
17917
|
-
|
17928
|
+
if type is None:
|
17929
|
+
api = complete_lixian_api("?ct=lixian&ac="+ac, base_url=base_url)
|
17930
|
+
if method.upper() == "POST":
|
17931
|
+
request_kwargs["data"] = payload
|
17932
|
+
else:
|
17933
|
+
request_kwargs["params"] = payload
|
17934
|
+
return self.request(url=api, method=method, async_=async_, **request_kwargs)
|
17935
|
+
match type:
|
17936
|
+
case "web":
|
17937
|
+
call: Callable = self._offline_web_request
|
17938
|
+
case "ssp":
|
17939
|
+
call = self._offline_lixianssp_request
|
17940
|
+
case _:
|
17941
|
+
call = self._offline_lixian_request
|
17942
|
+
return call(
|
17943
|
+
payload,
|
17944
|
+
ac,
|
17945
|
+
method=method,
|
17946
|
+
async_=async_,
|
17947
|
+
**request_kwargs,
|
17948
|
+
)
|
17918
17949
|
|
17919
|
-
@overload
|
17950
|
+
@overload
|
17920
17951
|
def offline_add_torrent(
|
17921
17952
|
self,
|
17922
17953
|
payload: str | dict,
|
17923
17954
|
/,
|
17924
|
-
|
17955
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
17956
|
+
method: str = "POST",
|
17957
|
+
type: Literal[None, "", "web", "ssp"] = "ssp",
|
17925
17958
|
*,
|
17926
17959
|
async_: Literal[False] = False,
|
17927
17960
|
**request_kwargs,
|
@@ -17932,7 +17965,9 @@ class P115Client(P115OpenClient):
|
|
17932
17965
|
self,
|
17933
17966
|
payload: str | dict,
|
17934
17967
|
/,
|
17935
|
-
|
17968
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
17969
|
+
method: str = "POST",
|
17970
|
+
type: Literal[None, "", "web", "ssp"] = "ssp",
|
17936
17971
|
*,
|
17937
17972
|
async_: Literal[True],
|
17938
17973
|
**request_kwargs,
|
@@ -17942,7 +17977,9 @@ class P115Client(P115OpenClient):
|
|
17942
17977
|
self,
|
17943
17978
|
payload: str | dict,
|
17944
17979
|
/,
|
17945
|
-
|
17980
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
17981
|
+
method: str = "POST",
|
17982
|
+
type: Literal[None, "", "web", "ssp"] = "ssp",
|
17946
17983
|
*,
|
17947
17984
|
async_: Literal[False, True] = False,
|
17948
17985
|
**request_kwargs,
|
@@ -17964,14 +18001,24 @@ class P115Client(P115OpenClient):
|
|
17964
18001
|
"""
|
17965
18002
|
if isinstance(payload, str):
|
17966
18003
|
payload = {"info_hash": payload}
|
17967
|
-
return self.
|
18004
|
+
return self._offline_request(
|
18005
|
+
payload,
|
18006
|
+
"add_task_bt",
|
18007
|
+
method=method,
|
18008
|
+
type=type,
|
18009
|
+
base_url=base_url,
|
18010
|
+
async_=async_,
|
18011
|
+
**request_kwargs,
|
18012
|
+
)
|
17968
18013
|
|
17969
18014
|
@overload
|
17970
18015
|
def offline_add_url(
|
17971
18016
|
self,
|
17972
18017
|
payload: str | dict,
|
17973
18018
|
/,
|
17974
|
-
|
18019
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
18020
|
+
method: str = "POST",
|
18021
|
+
type: Literal[None, "", "web", "ssp"] = "ssp",
|
17975
18022
|
*,
|
17976
18023
|
async_: Literal[False] = False,
|
17977
18024
|
**request_kwargs,
|
@@ -17982,7 +18029,9 @@ class P115Client(P115OpenClient):
|
|
17982
18029
|
self,
|
17983
18030
|
payload: str | dict,
|
17984
18031
|
/,
|
17985
|
-
|
18032
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
18033
|
+
method: str = "POST",
|
18034
|
+
type: Literal[None, "", "web", "ssp"] = "ssp",
|
17986
18035
|
*,
|
17987
18036
|
async_: Literal[True],
|
17988
18037
|
**request_kwargs,
|
@@ -17992,7 +18041,9 @@ class P115Client(P115OpenClient):
|
|
17992
18041
|
self,
|
17993
18042
|
payload: str | dict,
|
17994
18043
|
/,
|
17995
|
-
|
18044
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
18045
|
+
method: str = "POST",
|
18046
|
+
type: Literal[None, "", "web", "ssp"] = "ssp",
|
17996
18047
|
*,
|
17997
18048
|
async_: Literal[False, True] = False,
|
17998
18049
|
**request_kwargs,
|
@@ -18008,14 +18059,24 @@ class P115Client(P115OpenClient):
|
|
18008
18059
|
"""
|
18009
18060
|
if isinstance(payload, str):
|
18010
18061
|
payload = {"url": payload}
|
18011
|
-
return self.
|
18062
|
+
return self._offline_request(
|
18063
|
+
payload,
|
18064
|
+
"add_task_url",
|
18065
|
+
method=method,
|
18066
|
+
type=type,
|
18067
|
+
base_url=base_url,
|
18068
|
+
async_=async_,
|
18069
|
+
**request_kwargs,
|
18070
|
+
)
|
18012
18071
|
|
18013
|
-
@overload
|
18072
|
+
@overload
|
18014
18073
|
def offline_add_urls(
|
18015
18074
|
self,
|
18016
18075
|
payload: str | Iterable[str] | dict,
|
18017
18076
|
/,
|
18018
|
-
|
18077
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
18078
|
+
method: str = "POST",
|
18079
|
+
type: Literal[None, "", "web", "ssp"] = "ssp",
|
18019
18080
|
*,
|
18020
18081
|
async_: Literal[False] = False,
|
18021
18082
|
**request_kwargs,
|
@@ -18026,7 +18087,9 @@ class P115Client(P115OpenClient):
|
|
18026
18087
|
self,
|
18027
18088
|
payload: str | Iterable[str] | dict,
|
18028
18089
|
/,
|
18029
|
-
|
18090
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
18091
|
+
method: str = "POST",
|
18092
|
+
type: Literal[None, "", "web", "ssp"] = "ssp",
|
18030
18093
|
*,
|
18031
18094
|
async_: Literal[True],
|
18032
18095
|
**request_kwargs,
|
@@ -18036,7 +18099,9 @@ class P115Client(P115OpenClient):
|
|
18036
18099
|
self,
|
18037
18100
|
payload: str | Iterable[str] | dict,
|
18038
18101
|
/,
|
18039
|
-
|
18102
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
18103
|
+
method: str = "POST",
|
18104
|
+
type: Literal[None, "", "web", "ssp"] = "ssp",
|
18040
18105
|
*,
|
18041
18106
|
async_: Literal[False, True] = False,
|
18042
18107
|
**request_kwargs,
|
@@ -18059,7 +18124,15 @@ class P115Client(P115OpenClient):
|
|
18059
18124
|
payload = {f"url[{i}]": url for i, url in enumerate(payload) if url}
|
18060
18125
|
if not payload:
|
18061
18126
|
raise ValueError("no `url` specified")
|
18062
|
-
return self.
|
18127
|
+
return self._offline_request(
|
18128
|
+
payload,
|
18129
|
+
"add_task_urls",
|
18130
|
+
method=method,
|
18131
|
+
type=type,
|
18132
|
+
base_url=base_url,
|
18133
|
+
async_=async_,
|
18134
|
+
**request_kwargs,
|
18135
|
+
)
|
18063
18136
|
|
18064
18137
|
@overload
|
18065
18138
|
def offline_clear(
|
@@ -18067,6 +18140,8 @@ class P115Client(P115OpenClient):
|
|
18067
18140
|
payload: int | dict = 0,
|
18068
18141
|
/,
|
18069
18142
|
base_url: None | bool | str | Callable[[], str] = None,
|
18143
|
+
method: str = "POST",
|
18144
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18070
18145
|
*,
|
18071
18146
|
async_: Literal[False] = False,
|
18072
18147
|
**request_kwargs,
|
@@ -18078,6 +18153,8 @@ class P115Client(P115OpenClient):
|
|
18078
18153
|
payload: int | dict = 0,
|
18079
18154
|
/,
|
18080
18155
|
base_url: None | bool | str | Callable[[], str] = None,
|
18156
|
+
method: str = "POST",
|
18157
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18081
18158
|
*,
|
18082
18159
|
async_: Literal[True],
|
18083
18160
|
**request_kwargs,
|
@@ -18088,13 +18165,15 @@ class P115Client(P115OpenClient):
|
|
18088
18165
|
payload: int | dict = 0,
|
18089
18166
|
/,
|
18090
18167
|
base_url: None | bool | str | Callable[[], str] = None,
|
18168
|
+
method: str = "POST",
|
18169
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18091
18170
|
*,
|
18092
18171
|
async_: Literal[False, True] = False,
|
18093
18172
|
**request_kwargs,
|
18094
18173
|
) -> dict | Coroutine[Any, Any, dict]:
|
18095
18174
|
"""清空离线任务列表
|
18096
18175
|
|
18097
|
-
POST https://115.com/
|
18176
|
+
POST https://lixian.115.com/lixian/?ac=task_clear
|
18098
18177
|
|
18099
18178
|
:payload:
|
18100
18179
|
- flag: int = 0 💡 标识,用于对应某种情况
|
@@ -18106,10 +18185,17 @@ class P115Client(P115OpenClient):
|
|
18106
18185
|
- 4: 已完成+删除源文件
|
18107
18186
|
- 5: 全部+删除源文件
|
18108
18187
|
"""
|
18109
|
-
api = complete_lixian_api("?ct=lixian&ac=task_clear", base_url=base_url)
|
18110
18188
|
if isinstance(payload, int):
|
18111
18189
|
payload = {"flag": payload}
|
18112
|
-
return self.
|
18190
|
+
return self._offline_request(
|
18191
|
+
payload,
|
18192
|
+
"task_clear",
|
18193
|
+
method=method,
|
18194
|
+
type=type,
|
18195
|
+
base_url=base_url,
|
18196
|
+
async_=async_,
|
18197
|
+
**request_kwargs,
|
18198
|
+
)
|
18113
18199
|
|
18114
18200
|
@overload
|
18115
18201
|
def offline_download_path(
|
@@ -18146,6 +18232,49 @@ class P115Client(P115OpenClient):
|
|
18146
18232
|
api = complete_webapi("/offine/downpath", base_url=base_url)
|
18147
18233
|
return self.request(url=api, async_=async_, **request_kwargs)
|
18148
18234
|
|
18235
|
+
@overload
|
18236
|
+
def offline_download_path_set(
|
18237
|
+
self,
|
18238
|
+
payload: int | str | dict,
|
18239
|
+
/,
|
18240
|
+
base_url: bool | str | Callable[[], str] = False,
|
18241
|
+
*,
|
18242
|
+
async_: Literal[False] = False,
|
18243
|
+
**request_kwargs,
|
18244
|
+
) -> dict:
|
18245
|
+
...
|
18246
|
+
@overload
|
18247
|
+
def offline_download_path_set(
|
18248
|
+
self,
|
18249
|
+
payload: int | str | dict,
|
18250
|
+
/,
|
18251
|
+
base_url: bool | str | Callable[[], str] = False,
|
18252
|
+
*,
|
18253
|
+
async_: Literal[True],
|
18254
|
+
**request_kwargs,
|
18255
|
+
) -> Coroutine[Any, Any, dict]:
|
18256
|
+
...
|
18257
|
+
def offline_download_path_set(
|
18258
|
+
self,
|
18259
|
+
payload: int | str | dict,
|
18260
|
+
/,
|
18261
|
+
base_url: bool | str | Callable[[], str] = False,
|
18262
|
+
*,
|
18263
|
+
async_: Literal[False, True] = False,
|
18264
|
+
**request_kwargs,
|
18265
|
+
) -> dict | Coroutine[Any, Any, dict]:
|
18266
|
+
"""设置默认选择的离线下载到的目录信息
|
18267
|
+
|
18268
|
+
POST https://webapi.115.com/offine/downpath
|
18269
|
+
|
18270
|
+
:payload:
|
18271
|
+
- file_id: int | str 💡 目录 id
|
18272
|
+
"""
|
18273
|
+
api = complete_webapi("/offine/downpath", base_url=base_url)
|
18274
|
+
if isinstance(payload, (int, str)):
|
18275
|
+
payload = {"file_id": payload}
|
18276
|
+
return self.request(url=api, method="POST", data=payload, async_=async_, **request_kwargs)
|
18277
|
+
|
18149
18278
|
@overload
|
18150
18279
|
def offline_info(
|
18151
18280
|
self,
|
@@ -18181,12 +18310,14 @@ class P115Client(P115OpenClient):
|
|
18181
18310
|
api = complete_api("/?ct=offline&ac=space", base_url=base_url)
|
18182
18311
|
return self.request(url=api, async_=async_, **request_kwargs)
|
18183
18312
|
|
18184
|
-
@overload
|
18313
|
+
@overload
|
18185
18314
|
def offline_list(
|
18186
18315
|
self,
|
18187
18316
|
payload: int | dict = 1,
|
18188
18317
|
/,
|
18189
18318
|
base_url: None | bool | str | Callable[[], str] = None,
|
18319
|
+
method: str = "GET",
|
18320
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18190
18321
|
*,
|
18191
18322
|
async_: Literal[False] = False,
|
18192
18323
|
**request_kwargs,
|
@@ -18195,9 +18326,11 @@ class P115Client(P115OpenClient):
|
|
18195
18326
|
@overload
|
18196
18327
|
def offline_list(
|
18197
18328
|
self,
|
18198
|
-
payload: int | dict,
|
18329
|
+
payload: int | dict = 1,
|
18199
18330
|
/,
|
18200
18331
|
base_url: None | bool | str | Callable[[], str] = None,
|
18332
|
+
method: str = "GET",
|
18333
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18201
18334
|
*,
|
18202
18335
|
async_: Literal[True],
|
18203
18336
|
**request_kwargs,
|
@@ -18208,27 +18341,38 @@ class P115Client(P115OpenClient):
|
|
18208
18341
|
payload: int | dict = 1,
|
18209
18342
|
/,
|
18210
18343
|
base_url: None | bool | str | Callable[[], str] = None,
|
18344
|
+
method: str = "GET",
|
18345
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18211
18346
|
*,
|
18212
18347
|
async_: Literal[False, True] = False,
|
18213
18348
|
**request_kwargs,
|
18214
18349
|
) -> dict | Coroutine[Any, Any, dict]:
|
18215
18350
|
"""获取当前的离线任务列表
|
18216
18351
|
|
18217
|
-
|
18352
|
+
GET https://lixian.115.com/lixian/?ac=task_lists
|
18218
18353
|
|
18219
18354
|
:payload:
|
18220
18355
|
- page: int | str = 1
|
18221
18356
|
"""
|
18222
|
-
api = complete_lixian_api("?ct=lixian&ac=task_lists", base_url=base_url)
|
18223
18357
|
if isinstance(payload, int):
|
18224
18358
|
payload = {"page": payload}
|
18225
|
-
return self.
|
18359
|
+
return self._offline_request(
|
18360
|
+
payload,
|
18361
|
+
"task_lists",
|
18362
|
+
method=method,
|
18363
|
+
type=type,
|
18364
|
+
base_url=base_url,
|
18365
|
+
async_=async_,
|
18366
|
+
**request_kwargs,
|
18367
|
+
)
|
18226
18368
|
|
18227
18369
|
@overload
|
18228
18370
|
def offline_quota_info(
|
18229
18371
|
self,
|
18230
18372
|
/,
|
18231
18373
|
base_url: None | bool | str | Callable[[], str] = None,
|
18374
|
+
method: str = "GET",
|
18375
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18232
18376
|
*,
|
18233
18377
|
async_: Literal[False] = False,
|
18234
18378
|
**request_kwargs,
|
@@ -18239,6 +18383,8 @@ class P115Client(P115OpenClient):
|
|
18239
18383
|
self,
|
18240
18384
|
/,
|
18241
18385
|
base_url: None | bool | str | Callable[[], str] = None,
|
18386
|
+
method: str = "GET",
|
18387
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18242
18388
|
*,
|
18243
18389
|
async_: Literal[True],
|
18244
18390
|
**request_kwargs,
|
@@ -18248,22 +18394,32 @@ class P115Client(P115OpenClient):
|
|
18248
18394
|
self,
|
18249
18395
|
/,
|
18250
18396
|
base_url: None | bool | str | Callable[[], str] = None,
|
18397
|
+
method: str = "GET",
|
18398
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18251
18399
|
*,
|
18252
18400
|
async_: Literal[False, True] = False,
|
18253
18401
|
**request_kwargs,
|
18254
18402
|
) -> dict | Coroutine[Any, Any, dict]:
|
18255
18403
|
"""获取当前离线配额信息(简略)
|
18256
18404
|
|
18257
|
-
GET https://lixian.115.com/lixian/?
|
18405
|
+
GET https://lixian.115.com/lixian/?ac=get_quota_info
|
18258
18406
|
"""
|
18259
|
-
|
18260
|
-
|
18407
|
+
return self._offline_request(
|
18408
|
+
ac="get_quota_info",
|
18409
|
+
method=method,
|
18410
|
+
type=type,
|
18411
|
+
base_url=base_url,
|
18412
|
+
async_=async_,
|
18413
|
+
**request_kwargs,
|
18414
|
+
)
|
18261
18415
|
|
18262
18416
|
@overload
|
18263
18417
|
def offline_quota_package_array(
|
18264
18418
|
self,
|
18265
18419
|
/,
|
18266
18420
|
base_url: None | bool | str | Callable[[], str] = None,
|
18421
|
+
method: str = "GET",
|
18422
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18267
18423
|
*,
|
18268
18424
|
async_: Literal[False] = False,
|
18269
18425
|
**request_kwargs,
|
@@ -18274,6 +18430,8 @@ class P115Client(P115OpenClient):
|
|
18274
18430
|
self,
|
18275
18431
|
/,
|
18276
18432
|
base_url: None | bool | str | Callable[[], str] = None,
|
18433
|
+
method: str = "GET",
|
18434
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18277
18435
|
*,
|
18278
18436
|
async_: Literal[True],
|
18279
18437
|
**request_kwargs,
|
@@ -18283,22 +18441,32 @@ class P115Client(P115OpenClient):
|
|
18283
18441
|
self,
|
18284
18442
|
/,
|
18285
18443
|
base_url: None | bool | str | Callable[[], str] = None,
|
18444
|
+
method: str = "GET",
|
18445
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18286
18446
|
*,
|
18287
18447
|
async_: Literal[False, True] = False,
|
18288
18448
|
**request_kwargs,
|
18289
18449
|
) -> dict | Coroutine[Any, Any, dict]:
|
18290
18450
|
"""获取当前离线配额信息(详细)
|
18291
18451
|
|
18292
|
-
GET https://lixian.115.com/lixian/?
|
18452
|
+
GET https://lixian.115.com/lixian/?ac=get_quota_package_array
|
18293
18453
|
"""
|
18294
|
-
|
18295
|
-
|
18454
|
+
return self._offline_request(
|
18455
|
+
ac="get_quota_package_array",
|
18456
|
+
method=method,
|
18457
|
+
type=type,
|
18458
|
+
base_url=base_url,
|
18459
|
+
async_=async_,
|
18460
|
+
**request_kwargs,
|
18461
|
+
)
|
18296
18462
|
|
18297
18463
|
@overload
|
18298
18464
|
def offline_quota_package_info(
|
18299
18465
|
self,
|
18300
18466
|
/,
|
18301
18467
|
base_url: None | bool | str | Callable[[], str] = None,
|
18468
|
+
method: str = "GET",
|
18469
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18302
18470
|
*,
|
18303
18471
|
async_: Literal[False] = False,
|
18304
18472
|
**request_kwargs,
|
@@ -18309,6 +18477,8 @@ class P115Client(P115OpenClient):
|
|
18309
18477
|
self,
|
18310
18478
|
/,
|
18311
18479
|
base_url: None | bool | str | Callable[[], str] = None,
|
18480
|
+
method: str = "GET",
|
18481
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18312
18482
|
*,
|
18313
18483
|
async_: Literal[True],
|
18314
18484
|
**request_kwargs,
|
@@ -18318,16 +18488,24 @@ class P115Client(P115OpenClient):
|
|
18318
18488
|
self,
|
18319
18489
|
/,
|
18320
18490
|
base_url: None | bool | str | Callable[[], str] = None,
|
18491
|
+
method: str = "GET",
|
18492
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18321
18493
|
*,
|
18322
18494
|
async_: Literal[False, True] = False,
|
18323
18495
|
**request_kwargs,
|
18324
18496
|
) -> dict | Coroutine[Any, Any, dict]:
|
18325
18497
|
"""获取当前离线配额信息(详细)
|
18326
18498
|
|
18327
|
-
GET https://lixian.115.com/lixian/?
|
18499
|
+
GET https://lixian.115.com/lixian/?ac=get_quota_package_info
|
18328
18500
|
"""
|
18329
|
-
|
18330
|
-
|
18501
|
+
return self._offline_request(
|
18502
|
+
ac="get_quota_package_info",
|
18503
|
+
method=method,
|
18504
|
+
type=type,
|
18505
|
+
base_url=base_url,
|
18506
|
+
async_=async_,
|
18507
|
+
**request_kwargs,
|
18508
|
+
)
|
18331
18509
|
|
18332
18510
|
@overload
|
18333
18511
|
def offline_remove(
|
@@ -18335,6 +18513,8 @@ class P115Client(P115OpenClient):
|
|
18335
18513
|
payload: str | Iterable[str] | dict,
|
18336
18514
|
/,
|
18337
18515
|
base_url: None | bool | str | Callable[[], str] = None,
|
18516
|
+
method: str = "POST",
|
18517
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18338
18518
|
*,
|
18339
18519
|
async_: Literal[False] = False,
|
18340
18520
|
**request_kwargs,
|
@@ -18346,6 +18526,8 @@ class P115Client(P115OpenClient):
|
|
18346
18526
|
payload: str | Iterable[str] | dict,
|
18347
18527
|
/,
|
18348
18528
|
base_url: None | bool | str | Callable[[], str] = None,
|
18529
|
+
method: str = "POST",
|
18530
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18349
18531
|
*,
|
18350
18532
|
async_: Literal[True],
|
18351
18533
|
**request_kwargs,
|
@@ -18356,6 +18538,8 @@ class P115Client(P115OpenClient):
|
|
18356
18538
|
payload: str | Iterable[str] | dict,
|
18357
18539
|
/,
|
18358
18540
|
base_url: None | bool | str | Callable[[], str] = None,
|
18541
|
+
method: str = "POST",
|
18542
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18359
18543
|
*,
|
18360
18544
|
async_: Literal[False, True] = False,
|
18361
18545
|
**request_kwargs,
|
@@ -18370,14 +18554,21 @@ class P115Client(P115OpenClient):
|
|
18370
18554
|
- ...
|
18371
18555
|
- flag: 0 | 1 = <default> 💡 是否删除源文件
|
18372
18556
|
"""
|
18373
|
-
api = complete_lixian_api("?ct=lixian&ac=task_del", base_url=base_url)
|
18374
18557
|
if isinstance(payload, str):
|
18375
18558
|
payload = {"hash[0]": payload}
|
18376
18559
|
elif not isinstance(payload, dict):
|
18377
18560
|
payload = {f"hash[{i}]": hash for i, hash in enumerate(payload)}
|
18378
18561
|
if not payload:
|
18379
18562
|
raise ValueError("no `hash` (info_hash) specified")
|
18380
|
-
return self.
|
18563
|
+
return self._offline_request(
|
18564
|
+
payload,
|
18565
|
+
"task_del",
|
18566
|
+
method=method,
|
18567
|
+
type=type,
|
18568
|
+
base_url=base_url,
|
18569
|
+
async_=async_,
|
18570
|
+
**request_kwargs,
|
18571
|
+
)
|
18381
18572
|
|
18382
18573
|
@overload
|
18383
18574
|
def offline_restart(
|
@@ -18386,6 +18577,7 @@ class P115Client(P115OpenClient):
|
|
18386
18577
|
/,
|
18387
18578
|
base_url: None | bool | str | Callable[[], str] = None,
|
18388
18579
|
method: str = "POST",
|
18580
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18389
18581
|
*,
|
18390
18582
|
async_: Literal[False] = False,
|
18391
18583
|
**request_kwargs,
|
@@ -18398,6 +18590,7 @@ class P115Client(P115OpenClient):
|
|
18398
18590
|
/,
|
18399
18591
|
base_url: None | bool | str | Callable[[], str] = None,
|
18400
18592
|
method: str = "POST",
|
18593
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18401
18594
|
*,
|
18402
18595
|
async_: Literal[True],
|
18403
18596
|
**request_kwargs,
|
@@ -18409,6 +18602,7 @@ class P115Client(P115OpenClient):
|
|
18409
18602
|
/,
|
18410
18603
|
base_url: None | bool | str | Callable[[], str] = None,
|
18411
18604
|
method: str = "POST",
|
18605
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18412
18606
|
*,
|
18413
18607
|
async_: Literal[False, True] = False,
|
18414
18608
|
**request_kwargs,
|
@@ -18420,20 +18614,26 @@ class P115Client(P115OpenClient):
|
|
18420
18614
|
:payload:
|
18421
18615
|
- info_hash: str 💡 待重试任务的 info_hash
|
18422
18616
|
"""
|
18423
|
-
api = complete_lixian_api("?ct=lixian&ac=restart", base_url=base_url)
|
18424
18617
|
if isinstance(payload, str):
|
18425
18618
|
payload = {"info_hash": payload}
|
18426
|
-
|
18427
|
-
|
18428
|
-
|
18429
|
-
|
18430
|
-
|
18619
|
+
return self._offline_request(
|
18620
|
+
payload,
|
18621
|
+
"restart",
|
18622
|
+
method=method,
|
18623
|
+
type=type,
|
18624
|
+
base_url=base_url,
|
18625
|
+
async_=async_,
|
18626
|
+
**request_kwargs,
|
18627
|
+
)
|
18431
18628
|
|
18432
18629
|
@overload
|
18433
18630
|
def offline_task_count(
|
18434
18631
|
self,
|
18632
|
+
payload: dict | int = 0,
|
18435
18633
|
/,
|
18436
18634
|
base_url: None | bool | str | Callable[[], str] = None,
|
18635
|
+
method: str = "GET",
|
18636
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18437
18637
|
*,
|
18438
18638
|
async_: Literal[False] = False,
|
18439
18639
|
**request_kwargs,
|
@@ -18442,8 +18642,11 @@ class P115Client(P115OpenClient):
|
|
18442
18642
|
@overload
|
18443
18643
|
def offline_task_count(
|
18444
18644
|
self,
|
18645
|
+
payload: dict | int = 0,
|
18445
18646
|
/,
|
18446
18647
|
base_url: None | bool | str | Callable[[], str] = None,
|
18648
|
+
method: str = "GET",
|
18649
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18447
18650
|
*,
|
18448
18651
|
async_: Literal[True],
|
18449
18652
|
**request_kwargs,
|
@@ -18451,18 +18654,33 @@ class P115Client(P115OpenClient):
|
|
18451
18654
|
...
|
18452
18655
|
def offline_task_count(
|
18453
18656
|
self,
|
18657
|
+
payload: dict | int = 0,
|
18454
18658
|
/,
|
18455
18659
|
base_url: None | bool | str | Callable[[], str] = None,
|
18660
|
+
method: str = "GET",
|
18661
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18456
18662
|
*,
|
18457
18663
|
async_: Literal[False, True] = False,
|
18458
18664
|
**request_kwargs,
|
18459
18665
|
) -> dict | Coroutine[Any, Any, dict]:
|
18460
18666
|
"""获取当前正在运行的离线任务数
|
18461
18667
|
|
18462
|
-
GET https://lixian.115.com/lixian/?
|
18668
|
+
GET https://lixian.115.com/lixian/?ac=get_task_cnt
|
18669
|
+
|
18670
|
+
:payload:
|
18671
|
+
flag: int = 0
|
18463
18672
|
"""
|
18464
|
-
|
18465
|
-
|
18673
|
+
if isinstance(payload, int):
|
18674
|
+
payload = {"flag": 0}
|
18675
|
+
return self._offline_request(
|
18676
|
+
payload,
|
18677
|
+
"get_task_cnt",
|
18678
|
+
method=method,
|
18679
|
+
type=type,
|
18680
|
+
base_url=base_url,
|
18681
|
+
async_=async_,
|
18682
|
+
**request_kwargs,
|
18683
|
+
)
|
18466
18684
|
|
18467
18685
|
@overload
|
18468
18686
|
def offline_torrent_info(
|
@@ -18470,6 +18688,8 @@ class P115Client(P115OpenClient):
|
|
18470
18688
|
payload: str | dict,
|
18471
18689
|
/,
|
18472
18690
|
base_url: None | bool | str | Callable[[], str] = None,
|
18691
|
+
method: str = "GET",
|
18692
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18473
18693
|
*,
|
18474
18694
|
async_: Literal[False] = False,
|
18475
18695
|
**request_kwargs,
|
@@ -18481,6 +18701,8 @@ class P115Client(P115OpenClient):
|
|
18481
18701
|
payload: str | dict,
|
18482
18702
|
/,
|
18483
18703
|
base_url: None | bool | str | Callable[[], str] = None,
|
18704
|
+
method: str = "GET",
|
18705
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18484
18706
|
*,
|
18485
18707
|
async_: Literal[True],
|
18486
18708
|
**request_kwargs,
|
@@ -18491,27 +18713,39 @@ class P115Client(P115OpenClient):
|
|
18491
18713
|
payload: str | dict,
|
18492
18714
|
/,
|
18493
18715
|
base_url: None | bool | str | Callable[[], str] = None,
|
18716
|
+
method: str = "GET",
|
18717
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18494
18718
|
*,
|
18495
18719
|
async_: Literal[False, True] = False,
|
18496
18720
|
**request_kwargs,
|
18497
18721
|
) -> dict | Coroutine[Any, Any, dict]:
|
18498
18722
|
"""查看种子的文件列表等信息
|
18499
18723
|
|
18500
|
-
|
18724
|
+
GET https://lixian.115.com/lixian/?ac=torrent
|
18501
18725
|
|
18502
18726
|
:payload:
|
18503
18727
|
- sha1: str
|
18504
18728
|
"""
|
18505
|
-
api = complete_lixian_api("?ct=lixian&ac=torrent", base_url=base_url)
|
18506
18729
|
if isinstance(payload, str):
|
18507
18730
|
payload = {"sha1": payload}
|
18508
|
-
return self.
|
18731
|
+
return self._offline_request(
|
18732
|
+
payload,
|
18733
|
+
"torrent",
|
18734
|
+
method=method,
|
18735
|
+
type=type,
|
18736
|
+
base_url=base_url,
|
18737
|
+
async_=async_,
|
18738
|
+
**request_kwargs,
|
18739
|
+
)
|
18509
18740
|
|
18510
18741
|
@overload
|
18511
18742
|
def offline_upload_torrent_path(
|
18512
18743
|
self,
|
18744
|
+
payload: dict | int = 1,
|
18513
18745
|
/,
|
18514
|
-
base_url: bool | str | Callable[[], str] =
|
18746
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
18747
|
+
method: str = "GET",
|
18748
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18515
18749
|
*,
|
18516
18750
|
async_: Literal[False] = False,
|
18517
18751
|
**request_kwargs,
|
@@ -18520,8 +18754,11 @@ class P115Client(P115OpenClient):
|
|
18520
18754
|
@overload
|
18521
18755
|
def offline_upload_torrent_path(
|
18522
18756
|
self,
|
18757
|
+
payload: dict | int = 1,
|
18523
18758
|
/,
|
18524
|
-
base_url: bool | str | Callable[[], str] =
|
18759
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
18760
|
+
method: str = "GET",
|
18761
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18525
18762
|
*,
|
18526
18763
|
async_: Literal[True],
|
18527
18764
|
**request_kwargs,
|
@@ -18529,18 +18766,33 @@ class P115Client(P115OpenClient):
|
|
18529
18766
|
...
|
18530
18767
|
def offline_upload_torrent_path(
|
18531
18768
|
self,
|
18769
|
+
payload: dict | int = 1,
|
18532
18770
|
/,
|
18533
|
-
base_url: bool | str | Callable[[], str] =
|
18771
|
+
base_url: None | bool | str | Callable[[], str] = None,
|
18772
|
+
method: str = "GET",
|
18773
|
+
type: Literal[None, "", "web", "ssp"] = None,
|
18534
18774
|
*,
|
18535
18775
|
async_: Literal[False, True] = False,
|
18536
18776
|
**request_kwargs,
|
18537
18777
|
) -> dict | Coroutine[Any, Any, dict]:
|
18538
18778
|
"""获取当前的种子上传到的目录,当你添加种子任务后,这个种子会在此目录中保存
|
18539
18779
|
|
18540
|
-
GET https://115.com/?
|
18780
|
+
GET https://lixian.115.com/lixian/?ac=get_id
|
18781
|
+
|
18782
|
+
:payload:
|
18783
|
+
- torrent: int = 1
|
18541
18784
|
"""
|
18542
|
-
|
18543
|
-
|
18785
|
+
if isinstance(payload, int):
|
18786
|
+
payload = {"torrent": payload}
|
18787
|
+
return self._offline_request(
|
18788
|
+
payload,
|
18789
|
+
"get_id",
|
18790
|
+
method=method,
|
18791
|
+
type=type,
|
18792
|
+
base_url=base_url,
|
18793
|
+
async_=async_,
|
18794
|
+
**request_kwargs,
|
18795
|
+
)
|
18544
18796
|
|
18545
18797
|
########## Recyclebin API ##########
|
18546
18798
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|