A modular web scraping app
Find a file
undeaD_D 2127b3b9e6
Move Development from Fork into main Repository (#100)
* 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 5d076e0cf7
Author: cranci <100066266+cranci1@users.noreply.github.com>
Date:   Tue Apr 22 15:03:25 2025 +0200

    Aniskip logic and basic buttons (#96) (#97)

    * Aniskip logic and basic buttons

    * good fuckin enough for now

    * im callin good enough

    * bug fix

    * its something

    * hallelujah

    * Update SearchView.swift

    * made subs go up the progress bar if it is showing

    ---------

    Co-authored-by: ibro <54913038+xibrox@users.noreply.github.com>
    Co-authored-by: Seiike <122684677+Seeike@users.noreply.github.com>

commit 0ad4659d2c
Author: Seiike <122684677+Seeike@users.noreply.github.com>
Date:   Sun Apr 20 19:50:15 2025 +0200

    hello 👋  (#95)

    * bug fix dimming

    * improved the fetchEpisodeMetadata logic

commit 83cf7b0e9f
Merge: d28a55a 68e8196
Author: cranci <100066266+cranci1@users.noreply.github.com>
Date:   Sun Apr 20 08:53:08 2025 +0200

    Implementation of loading modal and dim mode (#93)

---------

Co-authored-by: Dominic Drees <dominic.drees@atino.de>
Co-authored-by: Francesco <100066266+cranci1@users.noreply.github.com>
2025-04-22 16:49:57 +02:00
.github/workflows Update build.yml 2025-03-04 11:28:53 +01:00
assets yes 2025-03-08 18:37:26 +01:00
Sora Move Development from Fork into main Repository (#100) 2025-04-22 16:49:57 +02:00
Sulfur.xcodeproj Move Development from Fork into main Repository (#100) 2025-04-22 16:49:57 +02:00
SulfurTV Move Development from Fork into main Repository (#100) 2025-04-22 16:49:57 +02:00
.gitattributes Initial commit 2024-12-18 15:53:15 +01:00
.gitignore Added gitignore 2025-01-03 21:15:45 +01:00
ipabuild.sh Update ipabuild.sh 2025-03-03 11:30:44 +01:00
LICENSE Initial commit 2024-12-18 15:53:15 +01:00
README.md Update README.md 2025-04-19 22:00:21 +02:00

Sora

Also known as Sulfur, for copyright issues.

Build and Release IPA Discord Platform

An iOS and macOS modular web scraping app, under the GPLv3.0 License.

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

  1. What is Sora? Sora is a modular web scraping application designed to work exclusively with custom modules.

  2. 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.

  3. Will Sora ever be paid? No, Sora will always remain free without subscriptions, paid content, or any type of login.

  4. 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

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/>.

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.