Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

复制失败后增加一键重试按钮 #5242

Closed
4 tasks done
liuhangbin opened this issue Sep 19, 2023 · 10 comments
Closed
4 tasks done

复制失败后增加一键重试按钮 #5242

liuhangbin opened this issue Sep 19, 2023 · 10 comments
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@liuhangbin
Copy link

Please make sure of the following things

  • I have read the documentation.
  • I'm sure there are no duplicate issues or discussions.
  • I'm sure this feature is not implemented.
  • I'm sure it's a reasonable and popular requirement.

Description of the feature / 需求描述

跨网盘复制的时候经常会出现复制出错。每个失败都需要单独点击重试。有点麻烦。请问是否可以增加一个一键全部重试按钮。这样方便大家重新复制。

另外如果可以的话,还可以增加一个选择框,可以一键全部选择,然后单独取消个别失败不再重试。

Suggested solution / 实现思路

类似CD2实现。

Additional context / 附件

No response

@liuhangbin liuhangbin added the enhancement New feature or request label Sep 19, 2023
@ssln5014
Copy link

赞成

@pongfcnkl
Copy link

pongfcnkl commented Sep 30, 2023

简单的用python写了个一键重试(自己糊弄的半成品,欢迎python大神修改)
alist一键重试.zip

config.yaml里api_domain是你的alist域名或者ip端口,authorization需要f12抓取,在网络里,找到get就有了
QQ截图20230930212839

@ssln5014
Copy link

ssln5014 commented Oct 1, 2023

简单的用python写了个一键重试(自己糊弄的半成品,欢迎python大神修改) alist一键重试.zip

config.yaml里api_domain是你的alist域名或者ip端口,authorization需要f12抓取,在网络里,找到get就有了 QQ截图20230930212839

很好用,谢谢

@xhofe xhofe self-assigned this Oct 1, 2023
@xhofe xhofe added this to the v3.29.0 milestone Oct 1, 2023
@xhofe xhofe added the working In process label Oct 1, 2023
@jianboy
Copy link

jianboy commented Oct 30, 2023

我问一下,复制

A 文件夹 复制到 B文件夹,复制到一半异常。 那么,重新执行 A文件夹复制到 B文件夹, 那么 B文件夹是会

  • 1、文件覆盖呢,
  • 2、重命名保存,
  • 3、检测是否存在,存在则不复制。

哪种情况呢?

@jianboy
Copy link

jianboy commented Oct 30, 2023

注意:

复制异常,重启alist复制列表清空了。所以无法重试。。。。。。。。。。。。。。所以重试按钮都没用,想问一下,复制的规则是什么。

@pongfcnkl
Copy link

pongfcnkl commented Oct 30, 2023

@jianboy

会重命名保存,另外不建议重启alist,直接用脚本批量重试就行

@jianboy
Copy link

jianboy commented Oct 31, 2023

@pongfcnkl 谢谢,那目录怎么同步呢?

长时间运行,alist会崩溃的,比如网络异常,接口异常。所以重启是无法避免的。

比如 A 目录,同步到 B 目录。同步策略:

文件大小一致,或者简单的文件名存在就不复制。

@pongfcnkl
Copy link

pongfcnkl commented Oct 31, 2023

@jianboy
同步这玩意只能自己用Python调用api写脚本了,根据文件大小和文件名来判断是否需要同步呗
好像隔壁clouddrive2快出同步了,如果有同步需求建议换隔壁的clouddrive2
持久化任务3.29版本可能会出

@ox68
Copy link

ox68 commented Nov 8, 2023

希望作者可以实现这个功能

@xhofe xhofe closed this as completed in b2890f0 Nov 21, 2023
@github-actions github-actions bot removed the working In process label Nov 21, 2023
@ssln5014
Copy link

好耶!

truecharts-admin referenced this issue in truecharts/public Nov 25, 2023
…15347)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [xhofe/alist](https://togithub.com/alist-org/alist) | minor |
`v3.28.0` -> `v3.29.1` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>alist-org/alist (xhofe/alist)</summary>

###
[`v3.29.1`](https://togithub.com/alist-org/alist/releases/tag/v3.29.1)

[Compare
Source](https://togithub.com/alist-org/alist/compare/v3.29.0...v3.29.1)

#####    🐞 Bug Fixes

- Task popped but not execute  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5565](https://togithub.com/alist-org/alist/issues/5565)
[<samp>(68af2)</samp>](https://togithub.com/alist-org/alist/commit/68af284)

#####     [View changes on
GitHub](https://togithub.com/alist-org/alist/compare/v3.29.0...v3.29.1)

###
[`v3.29.0`](https://togithub.com/alist-org/alist/releases/tag/v3.29.0)

[Compare
Source](https://togithub.com/alist-org/alist/compare/v3.28.0...v3.29.0)

#####    🚀 Features

- Add `header` to `meta`  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5317](https://togithub.com/alist-org/alist/issues/5317)
[<samp>(9ff83)</samp>](https://togithub.com/alist-org/alist/commit/9ff83a7)
- Add ignore direct link params  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5434](https://togithub.com/alist-org/alist/issues/5434)
[<samp>(c0f9c)</samp>](https://togithub.com/alist-org/alist/commit/c0f9c8e)
- Refactor offline download
([#&#8203;5408](https://togithub.com/alist-org/alist/issues/5408) close
[#&#8203;4108](https://togithub.com/alist-org/alist/issues/4108))  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) and
[@&#8203;renovate](https://togithub.com/renovate)\[bot]
in[https://github.com/alist-org/alist/issues/5408](https://togithub.com/alist-org/alist/issues/5408)8
and[https://github.com/alist-org/alist/issues/4108](https://togithub.com/alist-org/alist/issues/4108)8
[<samp>(76928)</samp>](https://togithub.com/alist-org/alist/commit/769281b)
- Add `115_share` driver
([#&#8203;5481](https://togithub.com/alist-org/alist/issues/5481) close
[#&#8203;5384](https://togithub.com/alist-org/alist/issues/5384))  -  by
[@&#8203;SheltonZhu](https://togithub.com/SheltonZhu) in
[https://github.com/alist-org/alist/issues/5481](https://togithub.com/alist-org/alist/issues/5481)
and
[https://github.com/alist-org/alist/issues/5384](https://togithub.com/alist-org/alist/issues/5384)
[<samp>(da1c7)</samp>](https://togithub.com/alist-org/alist/commit/da1c7a4)
- Invalidate old token after changing the password  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5515](https://togithub.com/alist-org/alist/issues/5515)
[<samp>(3d518)</samp>](https://togithub.com/alist-org/alist/commit/3d51845)
- Support using external dist files  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5531](https://togithub.com/alist-org/alist/issues/5531)
[<samp>(6fc67)</samp>](https://togithub.com/alist-org/alist/commit/6fc6751)
- Refactor task module  -  by
[@&#8203;xhofe](https://togithub.com/xhofe)
[<samp>(11a30)</samp>](https://togithub.com/alist-org/alist/commit/11a30c5)
- Customize workers and retry of task (close
[#&#8203;5493](https://togithub.com/alist-org/alist/issues/5493) fix
[#&#8203;5274](https://togithub.com/alist-org/alist/issues/5274))  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5493](https://togithub.com/alist-org/alist/issues/5493)
and
[https://github.com/alist-org/alist/issues/5274](https://togithub.com/alist-org/alist/issues/5274)
[<samp>(7583c)</samp>](https://togithub.com/alist-org/alist/commit/7583c4d)
- Retry all failed task  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5242](https://togithub.com/alist-org/alist/issues/5242)
[<samp>(b2890)</samp>](https://togithub.com/alist-org/alist/commit/b2890f0)
- Add chaoxing and vtencent driver
([#&#8203;5526](https://togithub.com/alist-org/alist/issues/5526) close
[#&#8203;3347](https://togithub.com/alist-org/alist/issues/3347))  -  by
[@&#8203;msterzhang](https://togithub.com/msterzhang) in
[https://github.com/alist-org/alist/issues/5526](https://togithub.com/alist-org/alist/issues/5526)
and
[https://github.com/alist-org/alist/issues/3347](https://togithub.com/alist-org/alist/issues/3347)
[<samp>(12800)</samp>](https://togithub.com/alist-org/alist/commit/1280070)
- Allow keep files in offline download  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/4678](https://togithub.com/alist-org/alist/issues/4678)
[<samp>(b6134)</samp>](https://togithub.com/alist-org/alist/commit/b6134dc)
- Customize allow `origins`, `headers` and `methods`  -  by
[@&#8203;xhofe](https://togithub.com/xhofe)
[<samp>(3f405)</samp>](https://togithub.com/alist-org/alist/commit/3f405de)
-   **cloudreve**:
- Support thumbnail
([#&#8203;5373](https://togithub.com/alist-org/alist/issues/5373) close
[#&#8203;5348](https://togithub.com/alist-org/alist/issues/5348))  -  by
[@&#8203;itsHenry35](https://togithub.com/itsHenry35) in
[https://github.com/alist-org/alist/issues/5373](https://togithub.com/alist-org/alist/issues/5373)
and
[https://github.com/alist-org/alist/issues/5348](https://togithub.com/alist-org/alist/issues/5348)
[<samp>(7f733)</samp>](https://togithub.com/alist-org/alist/commit/7f73354)
- Folder size count and switch
([#&#8203;5457](https://togithub.com/alist-org/alist/issues/5457) close
[#&#8203;5395](https://togithub.com/alist-org/alist/issues/5395))  -  by
[@&#8203;itsHenry35](https://togithub.com/itsHenry35) in
[https://github.com/alist-org/alist/issues/5457](https://togithub.com/alist-org/alist/issues/5457)
and
[https://github.com/alist-org/alist/issues/5395](https://togithub.com/alist-org/alist/issues/5395)
[<samp>(65c5e)</samp>](https://togithub.com/alist-org/alist/commit/65c5ec0)
-   **crypt**:
- Optional pre-generated thumbnails  -  by
[@&#8203;chaoqing](https://togithub.com/chaoqing) in
[https://github.com/alist-org/alist/issues/5284](https://togithub.com/alist-org/alist/issues/5284)
[<samp>(fb13d)</samp>](https://togithub.com/alist-org/alist/commit/fb13dae)
- Add show hidden option  -  by
[@&#8203;textrix](https://togithub.com/textrix) in
[https://github.com/alist-org/alist/issues/5554](https://togithub.com/alist-org/alist/issues/5554)
[<samp>(fe34d)</samp>](https://togithub.com/alist-org/alist/commit/fe34d30)
-   **google_drive**:
- Add `hash_info`, `ctime`, `thumbnail`  -  by
[@&#8203;foxxorcat](https://togithub.com/foxxorcat) in
[https://github.com/alist-org/alist/issues/5334](https://togithub.com/alist-org/alist/issues/5334)
[<samp>(1a283)</samp>](https://togithub.com/alist-org/alist/commit/1a283bb)
-   **offline_download**:
- Add simple http tool  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/4002](https://togithub.com/alist-org/alist/issues/4002)
[<samp>(34746)</samp>](https://togithub.com/alist-org/alist/commit/34746e9)
-   **onedrive**:
- Custom host for download link  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5310](https://togithub.com/alist-org/alist/issues/5310)
[<samp>(0fd51)</samp>](https://togithub.com/alist-org/alist/commit/0fd5164)
-   **sso**:
- Custom username key for `OIDC`  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5169](https://togithub.com/alist-org/alist/issues/5169)
[<samp>(e719a)</samp>](https://togithub.com/alist-org/alist/commit/e719a1a)
-   **webdav**:
- Add `tls_insecure_skip_verify` field  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5490](https://togithub.com/alist-org/alist/issues/5490)
[<samp>(91f51)</samp>](https://togithub.com/alist-org/alist/commit/91f51f1)

#####    🐞 Bug Fixes

- Hash gcid empty file  -  by
[@&#8203;foxxorcat](https://togithub.com/foxxorcat) in
[https://github.com/alist-org/alist/issues/5394](https://togithub.com/alist-org/alist/issues/5394)
[<samp>(cdfbe)</samp>](https://togithub.com/alist-org/alist/commit/cdfbe6d)
- Incorrect content-type of apk files  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5385](https://togithub.com/alist-org/alist/issues/5385)
[<samp>(4355d)</samp>](https://togithub.com/alist-org/alist/commit/4355dae)
- Reflected XSS vulnerability plist api  -  by
[@&#8203;xhofe](https://togithub.com/xhofe)
[<samp>(61006)</samp>](https://togithub.com/alist-org/alist/commit/6100647)
- `content-type` conflicts with
[#&#8203;5420](https://togithub.com/alist-org/alist/issues/5420)  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5420](https://togithub.com/alist-org/alist/issues/5420)
[<samp>(d2688)</samp>](https://togithub.com/alist-org/alist/commit/d26887d)
-   **115**:
- Allow use proxy directly  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5324](https://togithub.com/alist-org/alist/issues/5324)
[<samp>(e8958)</samp>](https://togithub.com/alist-org/alist/commit/e895801)
- Limit request rate
([#&#8203;5367](https://togithub.com/alist-org/alist/issues/5367) close
[#&#8203;5275](https://togithub.com/alist-org/alist/issues/5275))  -  by
[@&#8203;foxxorcat](https://togithub.com/foxxorcat) and
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5367](https://togithub.com/alist-org/alist/issues/5367)
and
[https://github.com/alist-org/alist/issues/5275](https://togithub.com/alist-org/alist/issues/5275)
[<samp>(b9e19)</samp>](https://togithub.com/alist-org/alist/commit/b9e192b)
- Fix driver package import and variable  -  by
[@&#8203;SheltonZhu](https://togithub.com/SheltonZhu) in
[https://github.com/alist-org/alist/issues/5482](https://togithub.com/alist-org/alist/issues/5482)
[<samp>(3bbdd)</samp>](https://togithub.com/alist-org/alist/commit/3bbdd4f)
-   **aliyundrive_open**:
- Change default api to raw server  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5358](https://togithub.com/alist-org/alist/issues/5358)
[<samp>(7600d)</samp>](https://togithub.com/alist-org/alist/commit/7600dc2)
- Upload progress for normal upload  -  by
[@&#8203;NewbieOrange](https://togithub.com/NewbieOrange) in
[https://github.com/alist-org/alist/issues/5398](https://togithub.com/alist-org/alist/issues/5398)
[<samp>(8ef80)</samp>](https://togithub.com/alist-org/alist/commit/8ef8023)
- Mitigation measures for 15-minute limit
([#&#8203;5560](https://togithub.com/alist-org/alist/issues/5560) close
[#&#8203;5547](https://togithub.com/alist-org/alist/issues/5547))  -  by
[@&#8203;BlueSkyXN](https://togithub.com/BlueSkyXN) and
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5560](https://togithub.com/alist-org/alist/issues/5560)
and
[https://github.com/alist-org/alist/issues/5547](https://togithub.com/alist-org/alist/issues/5547)
[<samp>(0fbb9)</samp>](https://togithub.com/alist-org/alist/commit/0fbb986)
-   **baidu_netdisk**:
- Hash and `error 2`  -  by
[@&#8203;foxxorcat](https://togithub.com/foxxorcat) in
[https://github.com/alist-org/alist/issues/5356](https://togithub.com/alist-org/alist/issues/5356)
[<samp>(8ef89)</samp>](https://togithub.com/alist-org/alist/commit/8ef89ad)
- Upload file > 4GB  -  by [@&#8203;xhofe](https://togithub.com/xhofe)
in
[https://github.com/alist-org/alist/issues/5392](https://togithub.com/alist-org/alist/issues/5392)
[<samp>(4fc0a)</samp>](https://togithub.com/alist-org/alist/commit/4fc0a77)
-   **deps**:
- Update module github.com/ipfs/go-ipfs-api to v0.7.0  -  by
[@&#8203;renovate](https://togithub.com/renovate)\[bot]
in[https://github.com/alist-org/alist/issues/5247](https://togithub.com/alist-org/alist/issues/5247)7
[<samp>(eb918)</samp>](https://togithub.com/alist-org/alist/commit/eb91865)
- Update module github.com/aliyun/aliyun-oss-go-sdk to
v2.2.9+incompatible  -  by
[@&#8203;renovate](https://togithub.com/renovate)\[bot]
in[https://github.com/alist-org/alist/issues/5141](https://togithub.com/alist-org/alist/issues/5141)1
[<samp>(69a98)</samp>](https://togithub.com/alist-org/alist/commit/69a98ea)
- Update module golang.org/x/net to v0.17.0 \[security]  -  by
[@&#8203;renovate](https://togithub.com/renovate)\[bot]
in[https://github.com/alist-org/alist/issues/5370](https://togithub.com/alist-org/alist/issues/5370)0
[<samp>(cc86d)</samp>](https://togithub.com/alist-org/alist/commit/cc86d6f)
- Update golang.org/x/exp digest to
[`7918f67`](https://togithub.com/alist-org/alist/commit/7918f67)  -  by
[@&#8203;renovate](https://togithub.com/renovate)\[bot]
in[https://github.com/alist-org/alist/issues/5366](https://togithub.com/alist-org/alist/issues/5366)6
[<samp>(4dff4)</samp>](https://togithub.com/alist-org/alist/commit/4dff494)
- Update module github.com/charmbracelet/lipgloss to v0.9.1  -  by
[@&#8203;renovate](https://togithub.com/renovate)\[bot]
in[https://github.com/alist-org/alist/issues/5234](https://togithub.com/alist-org/alist/issues/5234)4
[<samp>(a6325)</samp>](https://togithub.com/alist-org/alist/commit/a632596)
- Update module github.com/aws/aws-sdk-go to v1.46.7  -  by
[@&#8203;renovate](https://togithub.com/renovate)\[bot]
in[https://github.com/alist-org/alist/issues/5068](https://togithub.com/alist-org/alist/issues/5068)8
[<samp>(a7421)</samp>](https://togithub.com/alist-org/alist/commit/a7421d8)
-   **local**:
- Video file thumbnails not displaying on iOS Safari  -  by
[@&#8203;gmugu](https://togithub.com/gmugu) in
[https://github.com/alist-org/alist/issues/5420](https://togithub.com/alist-org/alist/issues/5420)
[<samp>(867ac)</samp>](https://togithub.com/alist-org/alist/commit/867acca)
-   **mopan**:
- 302 Redirect
([#&#8203;5505](https://togithub.com/alist-org/alist/issues/5505) close
[#&#8203;5502](https://togithub.com/alist-org/alist/issues/5502))  -  by
[@&#8203;foxxorcat](https://togithub.com/foxxorcat) and
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5505](https://togithub.com/alist-org/alist/issues/5505)
and
[https://github.com/alist-org/alist/issues/5502](https://togithub.com/alist-org/alist/issues/5502)
[<samp>(55a14)</samp>](https://togithub.com/alist-org/alist/commit/55a14bc)
-   **onedrive_app**:
- Incorrect api on `_accessToken`  -  by
[@&#8203;jeffmingup](https://togithub.com/jeffmingup) in
[https://github.com/alist-org/alist/issues/5346](https://togithub.com/alist-org/alist/issues/5346)
[<samp>(35d67)</samp>](https://togithub.com/alist-org/alist/commit/35d6722)
-   **terabox**:
- Auto refresh `JsToken`  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5277](https://togithub.com/alist-org/alist/issues/5277)
[<samp>(6b67a)</samp>](https://togithub.com/alist-org/alist/commit/6b67a36)
- Encode parameters for `filemanager` api  -  by
[@&#8203;URenko](https://togithub.com/URenko) in
[https://github.com/alist-org/alist/issues/5308](https://togithub.com/alist-org/alist/issues/5308)
[<samp>(e1ef6)</samp>](https://togithub.com/alist-org/alist/commit/e1ef690)
-   **vtencent**:
- Hack file with size 0 but actual size is not 0  -  by
[@&#8203;xhofe](https://togithub.com/xhofe)
[<samp>(d455a)</samp>](https://togithub.com/alist-org/alist/commit/d455a23)
-   **weiyun**:
- Unmarshal overflow  -  by
[@&#8203;foxxorcat](https://togithub.com/foxxorcat) in
[https://github.com/alist-org/alist/issues/5459](https://togithub.com/alist-org/alist/issues/5459)
[<samp>(68f44)</samp>](https://togithub.com/alist-org/alist/commit/68f440a)
-   **wopan**:
- Fatal error concurrent map writes  -  by
[@&#8203;xhofe](https://togithub.com/xhofe) in
[https://github.com/alist-org/alist/issues/5352](https://togithub.com/alist-org/alist/issues/5352)
[<samp>(1ebc9)</samp>](https://togithub.com/alist-org/alist/commit/1ebc96a)

#####    🏎 Performance

- **webdav**: Support request with cookies  -  by
[@&#8203;gmugu](https://togithub.com/gmugu) in
[https://github.com/alist-org/alist/issues/5391](https://togithub.com/alist-org/alist/issues/5391)
[<samp>(aaffa)</samp>](https://togithub.com/alist-org/alist/commit/aaffaee)

#####     [View changes on
GitHub](https://togithub.com/alist-org/alist/compare/v3.28.0...v3.29.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy42OC4wIiwidXBkYXRlZEluVmVyIjoiMzcuNjguMSIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

6 participants