AI prompts
base on Torrent client for iOS 16+ [AltStore Button]: https://img.shields.io/badge/Download-AltStore-green?style=flat
[AltStore Link]: https://intradeus.github.io/http-protocol-redirector?r=altstore://source?url=https://xitrix.github.io/iTorrent/AltStore.json 'Download with AltStore.'
[SideStore Button]: https://img.shields.io/badge/Download-SideStore-purple?style=flat
[SideStore Link]: https://intradeus.github.io/http-protocol-redirector?r=sidestore://source?url=https://xitrix.github.io/iTorrent/AltStore.json 'Download with SideStore.'
[Jailbreak Button]: https://img.shields.io/badge/Download-Jailbreak-red?style=flat
[Jailbreak Link]: https://intradeus.github.io/http-protocol-redirector?r=itms-services://?action=download-manifest&url=https://github.com/XITRIX/iTorrent/releases/latest/download/manifest.plist 'Download with Jailbreak.'
[GitHub Button]: https://img.shields.io/badge/Download-GitHub-black?style=flat
[GitHub Link]: https://github.com/XITRIX/iTorrent/releases 'Download from GitHub.'
<img align="left" width="100" height="100" src="https://github.com/user-attachments/assets/0faf6075-273b-4b74-92d6-dccab7f4b964">
# iTorrent - iOS Torrent client App
[![AltStore Button]][AltStore Link]
[![SideStore Button]][SideStore Link]
[![GitHub Button]][GitHub Link]
[![Jailbreak Button]][Jailbreak Link]
![](https://img.shields.io/badge/iOS-16.0+-blue.svg)
> [!WARNING]
> iTorrent 2.0 app is in beta preview state, expect to see some bugs and be ready report about them.
## Screenshots
<details>
<summary>iPhone Screenshots</summary>
<p float="left">
<img width="250" src="https://github.com/user-attachments/assets/73256524-4861-4b8f-afba-5bd657badb2f" />
<img width="250" src="https://github.com/user-attachments/assets/9ac2c682-a3b4-4498-8daa-6c5c6f742946" />
<img width="250" src="https://github.com/user-attachments/assets/c2f06516-862a-47b5-b69b-aed4f6043aae" />
<img width="250" src="https://github.com/user-attachments/assets/c7dff083-4fe7-4440-9961-9eb472e22142" />
<img width="250" src="https://github.com/user-attachments/assets/be15d663-0d5b-40ed-aa6c-1f3eb9e00a1e" />
<img width="250" src="https://github.com/user-attachments/assets/20aac5d9-8746-4357-b1d8-7aa15bac2747" />
</p>
</details>
<details>
<summary>iPad Screenshots</summary>
<p float="left">
<img width="378" src="https://github.com/user-attachments/assets/5152a496-6949-4c33-a0b9-4ec9e1ea32e8" />
<img width="378" src="https://github.com/user-attachments/assets/5af9eb69-4eb4-419c-bcae-2b42f5553eea" />
</p>
</details>
## Info
It is an ordinary torrent client for iOS with Files app support.
What can this app do:
- Download in the background
- Live Activity and Dynamic Island progress widget
- Sequential download (use VLC to watch films while loading)
- Add torrent files from Share menu (Safari and other apps)
- Add magnet links directly from Safari
- Store files in Files app
- File sharing directly from app
- Download torrent by link
- Download torrent by magnet
- Send notification on torrent downloaded
- WebDav Server
- Select files to download or not
- Change UI to dark theme
- RSS Feed
- ???
## Localization
Now iTorrent supports the following languages:
- English
- Russian
- Spanish
- Simplified Chinese
If you are fluent in the languages not listed above and want to help with translation, you are welcome!
## Libraries used
- [LibTorrent](https://github.com/arvidn/libtorrent)
- [OpenSSL](https://github.com/krzyzanowskim/OpenSSL)
- [MvvmFoundation](https://github.com/XITRIX/MVVMFoundation)
- [CombineCocoa](https://github.com/XITRIX/CombineCocoa)
- [SWXMLHash](https://github.com/drmohundro/SWXMLHash)
- [MarqueeText](https://github.com/joekndy/MarqueeText)
- [MarqueeLabel](https://github.com/cbpowell/MarqueeLabel)
- [GCDWebServer](https://github.com/XITRIX/GCDWebServer)
- [Firebase](https://github.com/firebase/firebase-ios-sdk)
## Donate for donuts
- [Patreon](https://www.patreon.com/xitrix)
- [PayPal](https://paypal.me/x1trix)
## Important information
This app using Firebase Analytics and so it collects next information from your device:
- The country of your internet provider
- Time of app's working session
All this data presents as statistic, and cannot be used to get someone's personal information
Also this app using Firebase Crashlytics, which collects the next information when application crashes:
- Model of your device (IPhone X or IPad Pro (10.5 inch) for example)
- Device orientation
- Free space on RAM and ROM
- IOS version
- Time of crash
- Detailed log of the thread where the stuck happens
All this information is using for bug fixing and improving the quality of this app
More information you can find on [Firebase website](https://firebase.google.com)
## License
Copyright (c) 2024 XITRIX (Vinogradov Daniil)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
", Assign "at most 3 tags" to the expected json: {"id":"11269","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"