* add contributor link, add hide empty sections toggle, cleanup warnings, tests * fix darkmode label color * use primary and secondary colors ( for consistency with rest of codebase ) * add basic profile views / ui * add current profile view to important places ( navigationbar leading ) * reorder contributors row, update url * merge upstream into fork * add new icons, cleanup, tests. * close app icon sheet automatically on completion * add profilestore ( persistence, enviromentobject ), finalize profile settings view, cleanup, tests * add profilestore ( persistence, enviromentobject ), finalize profile settings view, cleanup, tests * add dismiss keyboard extension, dismiss keyboard on tap outside ( profile settings view ) * fix icon transparency issue, add profile data to icloud sync * remove weird empty view ( search ) shadow, fix dismiss keyboard, align system appearance to other rows ( style ), cleanup, tests * fancy profile switch manu ( navigationbar ) * add explore view ( basic library and search view copy ) * fix uikit alerts not using the correct accentColor * apply custom accentColor to stepper components * style consistency ( icons, colors ), change duplicate section title ( "Info" ), hide more empty sections conditionally, cleanup * fix missing section headers * fix copy paste error ^^' * add empty explore view placeholder, add new shimmer effect ( configurable via settings ), cleanup * convert ContinueWatchingManager() singleton to dependency injected enviroment object to match similar manager structures * fix spelling, inject profile into library and continueWatching Managers, fix iCloudSync premature execution, remove profile from explore view ( wont be needed ) * add update profile function to library and continuewatching managers ( to reload the media items ), change media fetching style of continuewatchingmanager to better match librarymanager, update libraryview to use the new continuewatchingmanager fetch style * fix state desync on insertion / removal / profile change * switched from filtering by profile ids to seperated data storage via user default suites with different ids. * update todo markers * fix bookmarks not getting overwritten on empty userdefaults load * add the profile button back to the explore view ( you might wanna change profile quickly ), add todos * moved some views into folders, renamed contentview to rootview, moved bookmark button into navigationbar, used randomUseragents everywhere, add tvos target, add tvos images and basic tabview, started work on settings view design * add new shimmer type, swap two settings rows, add detailed instructions to some todos * Squashed commit of the following: commit |
||
|---|---|---|
| .github/workflows | ||
| assets | ||
| Sora | ||
| Sulfur.xcodeproj | ||
| SulfurTV | ||
| .gitattributes | ||
| .gitignore | ||
| ipabuild.sh | ||
| LICENSE | ||
| README.md | ||
Sora
Also known as Sulfur, for copyright issues.
Table of Contents
Features
- iOS/iPadOS 15.0+ support
- macOS support 12.0+
- Sync via iCloud data
- JavaScript module support
- Tracking Services (AniList, Trakt)
- Apple KeyChain support for auth Tokens
- Streams support (Jellyfin/Plex like servers)
- External Media players (VLC, infuse, Outplayer, nPlayer)
- Background playback and Picture-in-Picture (PiP) support
Frequently Asked Questions
-
What is Sora? Sora is a modular web scraping application designed to work exclusively with custom modules.
-
Is Sora safe? Yes, Sora is open-source and prioritizes user privacy. It does not store user data on external servers and does not collect crash logs.
-
Will Sora ever be paid? No, Sora will always remain free without subscriptions, paid content, or any type of login.
-
How can i get module? Sora does not include any modules by default. You will need to find and add the necessary modules yourself, or make them.
Acknowledgements
-
KingFisher - MIT License
-
Drops - MIT License
-
50/50 for the app icon
License
This project is licensed under the GNU General Public License v3.0 (GPLv3.0).
Copyright © 2024-2025 cranci. All rights reserved.
Sora is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Sora is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Sora. If not, see <https://www.gnu.org/licenses/>.
Legal
Sora is not made for Piracy! The Sora project does not condone any form of piracy.
No Liability
The developer(s) of this software assumes no liability for damages, legal claims, or other issues arising from the use or misuse of this software or any third-party modules. Users bear full responsibility for their actions. Use this software and modules at your own risk.
Third-Party Websites and Intellectual Property
This software is not affiliated with or endorsed by any third-party entity. Any references to third-party sites in user-generated modules do not imply endorsement. Users are responsible for verifying that their scraping activities comply with the terms of service and intellectual property rights of the sites they interact with.
DMCA
The developer(s) is not responsible for the misuse of any content inside or outside the app and shall not be responsible for the dissemination of any content within the app. Any violations should be send to the source website or module creator. The developer is not legally responsible for any module used inside the app.