├── .gitignore ├── .github ├── scripts │ ├── push.sh │ ├── release.sh │ ├── download.py │ ├── id.txt │ └── post.py └── workflows │ ├── cleanup_releases.yml │ ├── cleanup_runs.yml │ └── channel-post.yml ├── venus.json ├── Mi439.json ├── munch.json ├── payton.json ├── RMX3461.json ├── liber.json ├── spes.json ├── fajita.json ├── lavender.json ├── whyred.json ├── avicii.json ├── miatoll.json ├── mojito.json ├── violet.json ├── RMX2020.json ├── davinci.json ├── haydn.json ├── lancelot.json ├── marble.json ├── raphael.json ├── sweet.json ├── veux.json ├── beryllium.json ├── enchilada.json ├── merlinx.json ├── alioth.json ├── README.md └── OTA.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /.github/scripts/push.sh: -------------------------------------------------------------------------------- 1 | git config --global user.email "sipunkumar85@gmail.com" 2 | git config --global user.name "Darkstar085" 3 | git fetch 4 | git pull 5 | COMMIT_MESSAGE=$(cat commit_mesg.txt) 6 | rm tag.txt 7 | rm commit_mesg.txt 8 | rm release_notes.txt 9 | rm urls.txt 10 | git add . 11 | git commit -m "$COMMIT_MESSAGE" 12 | git push origin fourteen 13 | -------------------------------------------------------------------------------- /.github/workflows/cleanup_releases.yml: -------------------------------------------------------------------------------- 1 | name: Delete Older Releases 2 | 3 | on: 4 | schedule: 5 | - cron: "30 18 * * 6" 6 | workflow_dispatch: 7 | 8 | jobs: 9 | delete_old_releases: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Checkout Repository 14 | uses: actions/checkout@v4 15 | 16 | - name: Delete Older Releases 17 | uses: dev-drprasad/delete-older-releases@v0.3.3 18 | with: 19 | keep_latest: 15 20 | env: 21 | GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} 22 | -------------------------------------------------------------------------------- /.github/workflows/cleanup_runs.yml: -------------------------------------------------------------------------------- 1 | name: Delete old workflow runs 2 | on: 3 | schedule: 4 | - cron: "30 18 * * 6" 5 | workflow_dispatch: 6 | jobs: 7 | del_runs: 8 | runs-on: ubuntu-latest 9 | permissions: 10 | actions: write 11 | contents: read 12 | steps: 13 | - name: Delete workflow runs 14 | uses: Mattraks/delete-workflow-runs@v2.0.6 15 | with: 16 | token: ${{ secrets.GITHUB_TOKEN }} 17 | repository: ${{ github.repository }} 18 | retain_days: 7 19 | keep_minimum_runs: 6 20 | -------------------------------------------------------------------------------- /venus.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1688908959, 5 | "filename": "SuperiorOS-Thirteen-venus-RELEASE-20230709-1326.zip", 6 | "id": "4aaf0e9ada58a76321b81a23de202f5c9e43dab808d0a838dcf4fe99a3fee9d8", 7 | "romtype": "RELEASE", 8 | "size":1883823534, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/venus/vanilla/SuperiorOS-Thirteen-venus-RELEASE-20230709-1326.zip", 10 | "version": "Thirteen", 11 | "device_name": "Xiaomi Mi 11", 12 | "maintainer": "Alan Lin" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /Mi439.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": 1666222664, 5 | "filename": "SuperiorOS-Thirteen-Mi439-RELEASE-20221019-2340.zip", 6 | "id": "81c2a3db2a4f419dcc36ca6c11471b19115880975eae00337de7597103fbee2a", 7 | "romtype": "Mi439", 8 | "size": 872970847, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/Mi439/vanilla/SuperiorOS-Thirteen-Mi439-RELEASE-20221019-2340.zip", 10 | "version": "Thirteen", 11 | "device_name": "Redmi 7a/ 8 series", 12 | "maintainer": "karann2354" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /munch.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": 1692415247, 5 | "filename": "SuperiorOS-Thirteen-munch-RELEASE-20230819-1242.zip", 6 | "id": "1f3e8673ab61028a82b0eb62a4a64713176c6d02539ed7a69b8bec4fcd6697ed", 7 | "romtype": "RELEASE", 8 | "size": 1406429504, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/munch/vanilla/SuperiorOS-Thirteen-munch-RELEASE-20230819-1242.zip", 10 | "version": "Thirteen", 11 | "device_name": "Poco F4", 12 | "maintainer": "Mudit (@Mudit1808)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /payton.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1697912346, 5 | "filename": "SuperiorOS-Thirteen-payton-RELEASE-20231021-1820.zip", 6 | "id": "7d116a66aae6da90435fd310eeb8dc1da3720409d632dbd4cd5e4a8e5559ae2a", 7 | "romtype": "RELEASE", 8 | "size":875019780, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/payton/vanilla/SuperiorOS-Thirteen-payton-RELEASE-20231021-1820.zip", 10 | "version": "Thirteen", 11 | "device_name": "Moto X4", 12 | "maintainer": "Dhinesh (@cool585)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /RMX3461.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1683950124, 5 | "filename": "SuperiorOS-Thirteen-RMX3461-RELEASE-20230513-0355.zip", 6 | "id": "9b0c1b5ca9dbd43ed3319ee6ebf129c9bdb0b890092671ba34ed58b1859bd0a7", 7 | "romtype": "RELEASE", 8 | "size":1516750298, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/RMX3461/vanilla/SuperiorOS-Thirteen-RMX3461-RELEASE-20230513-0355.zip", 10 | "version": "Thirteen", 11 | "device_name": "Realme 9 SE 5G", 12 | "maintainer": "ZirgomHaidar" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /liber.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1707610439, 5 | "filename": "SuperiorOS-Fourteen-liber-RELEASE-20240211-0016.zip", 6 | "id": "f6ea1e40d0747616bac4e61a10b19ccfbd9a5e6c1430fc874bcf3a19b168ba56", 7 | "romtype": "RELEASE", 8 | "size":869940707, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/liber/vanilla/SuperiorOS-Fourteen-liber-RELEASE-20240211-0016.zip", 10 | "version": "Fourteen", 11 | "device_name": "Moto One Fusion+", 12 | "maintainer": "Dhinesh (@cool585)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /spes.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1695444083, 5 | "filename": "SuperiorOS-Thirteen-spes-RELEASE-20230923-0442.zip", 6 | "id": "74996d5dc77f3ac6809962a5236b2e14a87723f1bf80853e09298bb399fdad52", 7 | "romtype": "RELEASE", 8 | "size":1082431908, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/spes/vanilla/SuperiorOS-Thirteen-spes-RELEASE-20230923-0442.zip", 10 | "version": "Thirteen", 11 | "device_name": "Redmi Note 11", 12 | "maintainer": "Enweazu Daniel (@dandollar1)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /fajita.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1707596385, 5 | "filename": "SuperiorOS-Fourteen-fajita-RELEASE-20240210-2026.zip", 6 | "id": "a9aa023e8cce8a273f6fa1fbda454d4348ece542697ff0f9dfab5e35ae1cbe41", 7 | "romtype": "RELEASE", 8 | "size":1132483883, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/fajita/vanilla/SuperiorOS-Fourteen-fajita-RELEASE-20240210-2026.zip", 10 | "version": "Fourteen", 11 | "device_name": "Oneplus 6T", 12 | "maintainer": "Vikas Yaduvanshi (@Vikas_2_0)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lavender.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1691693147, 5 | "filename": "SuperiorOS-Thirteen-lavender-RELEASE-20230810-1917.zip", 6 | "id": "71cd338e66073f80ae588ee85ee86f9de7cc9545c3415c16124fbd93d64e7d1e", 7 | "romtype": "RELEASE", 8 | "size":1108492106, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/lavender/vanilla/SuperiorOS-Thirteen-lavender-RELEASE-20230810-1917.zip", 10 | "version": "Thirteen", 11 | "device_name": "Xiaomi Redmi Note 7/7s", 12 | "maintainer": "Prashant" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /whyred.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1717062383, 5 | "filename": "SuperiorOS-Fourteen-whyred-RELEASE-20240530-0947.zip", 6 | "id": "f336fe95f292cf39ad5f4c5d9badd995c3fe846dee5c27c54224c515c5d9426b", 7 | "romtype": "RELEASE", 8 | "size":1003112696, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/whyred/vanilla/SuperiorOS-Fourteen-whyred-RELEASE-20240530-0947.zip", 10 | "version": "Fourteen", 11 | "device_name": "Xiaomi Redmi Note 5 Pro", 12 | "maintainer": "Sipun Ku Mahanta" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /avicii.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1735206792, 5 | "filename": "SuperiorOS-Fourteen-avicii-RELEASE-20241226-0954.zip", 6 | "id": "71a2754cc72f5f962e82aa97477ed77125162429fe917a22d1c876e91af341d7", 7 | "romtype": "RELEASE", 8 | "size":1299810935, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/avicii/vanilla/SuperiorOS-Fourteen-avicii-RELEASE-20241226-0954.zip", 10 | "version": "Fourteen", 11 | "device_name": "Oneplus Nord", 12 | "maintainer": "Sipun Ku Mahanta (@Darkstar085)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /miatoll.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1707571587, 5 | "filename": "SuperiorOS-Fourteen-miatoll-RELEASE-20240210-1333.zip", 6 | "id": "46e5e3e289b219c05b8ea6c050fdd2f502d9bd805cbc470f609822a89f1d6f90", 7 | "romtype": "RELEASE", 8 | "size":1494442687, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/miatoll/vanilla/SuperiorOS-Fourteen-miatoll-RELEASE-20240210-1333.zip", 10 | "version": "Fourteen", 11 | "device_name": "Redmi Note 9 Pro", 12 | "maintainer": "Clarence K (@clarencelol)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /mojito.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1698039032, 5 | "filename": "SuperiorOS-Thirteen-mojito-RELEASE-20231023-0530.zip", 6 | "id": "34913416b2b622c329a0f87d4d9863d0c2eb4a19d28272cf5f211d814528d71a", 7 | "romtype": "RELEASE", 8 | "size":1420490873, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/mojito/vanilla/SuperiorOS-Thirteen-mojito-RELEASE-20231023-0530.zip", 10 | "version": "Thirteen", 11 | "device_name": "Redmi Note 10", 12 | "maintainer": "Rom Bdr. Gharti (@Romgharti)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /violet.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1729208295, 5 | "filename": "SuperiorOS-Fourteen-violet-RELEASE-20241017-2339.zip", 6 | "id": "feb61b15e6590fecd0de1a9ff89840545ad9c09ba5d98b65d1b3063f67dfa2f6", 7 | "romtype": "RELEASE", 8 | "size":1629118639, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/violet/vanilla/SuperiorOS-Fourteen-violet-RELEASE-20241017-2339.zip", 10 | "version": "Fourteen", 11 | "device_name": "Xiaomi Redmi Note 7 Pro", 12 | "maintainer": "Nipin NA (@Joker_V2_0)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /RMX2020.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1692067597, 5 | "filename": "SuperiorOS-Thirteen-RMX2020-RELEASE-20230815-0250.zip", 6 | "id": "f2aed5bda6104704270065a09db229743fc4cff3661972457d1a380c04d8d8ea", 7 | "romtype": "RELEASE", 8 | "size":1051321793, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/RMX2020/vanilla/SuperiorOS-Thirteen-RMX2020-RELEASE-20230815-0250.zip", 10 | "version": "Thirteen", 11 | "device_name": "Realme C3/ Narzo 10A", 12 | "maintainer": "Lakshit (@WillyS69)" 13 | } 14 | ] 15 | } 16 | 17 | -------------------------------------------------------------------------------- /davinci.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": 1678326361, 5 | "filename": "SuperiorOS-Thirteen-davinci-RELEASE-20230309-0147.zip", 6 | "id": "e75d74da480bb1c91218d898e06fe6c615ef86fc0ad04fea9c1b1ddf00ca1646", 7 | "romtype": "RELEASE", 8 | "size": 1456551307, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/davinci/vanilla/SuperiorOS-Thirteen-davinci-RELEASE-20230309-0147.zip", 10 | "version": "Thirteen", 11 | "device_name": "Xiaomi Mi 9T/Redmi K20", 12 | "maintainer": "MK(@SILENT_KILLER404)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /haydn.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1707643276, 5 | "filename": "SuperiorOS-Fourteen-haydn-RELEASE-20240211-0930.zip", 6 | "id": "93bba21aea5dcb5ca27ea4e699bccdec7ca95481d808b54c692e23e857fdc94f", 7 | "romtype": "RELEASE", 8 | "size":1891397976, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/haydn/vanilla/SuperiorOS-Fourteen-haydn-RELEASE-20240211-0930.zip", 10 | "version": "Fourteen", 11 | "device_name": "Mi 11x pro/Redmi K40 Pro", 12 | "maintainer": "AshraySingh (@AshraySingh)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /lancelot.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1707622347, 5 | "filename": "SuperiorOS-Fourteen-lancelot-RELEASE-20240211-0334.zip", 6 | "id": "74d3af08941aa97efb398c48d0ac98300e2fc0ccb25b3384f228e4f1edaac73a", 7 | "romtype": "RELEASE", 8 | "size":1167326138, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/lancelot/vanilla/SuperiorOS-Fourteen-lancelot-RELEASE-20240211-0334.zip", 10 | "version": "Fourteen", 11 | "device_name": "Redmi 9 / Poco M2", 12 | "maintainer": "Soni Dharma (@TimJR205)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /marble.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1709627421, 5 | "filename": "SuperiorOS-Fourteen-marble-RELEASE-20240305-0832.zip", 6 | "id": "4919e4a8b25afca3c64c4a14a2a54be1f52e313976144bba4cf4c2a265ea1f03", 7 | "romtype": "RELEASE", 8 | "size":1746162885, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/marble/vanilla/SuperiorOS-Fourteen-marble-RELEASE-20240305-0832.zip", 10 | "version": "Fourteen", 11 | "device_name": "Redmi Note 12T/Poco F5", 12 | "maintainer": "Chaitanya (@Chaitanyakm)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /raphael.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1701275733, 5 | "filename": "SuperiorOS-Thirteen-raphael-RELEASE-20231129-1638.zip", 6 | "id": "a1153dcb28c63a69f7b40aa94648b2dc52f06eb9c77d99a8d8ca8ecb03dec674", 7 | "romtype": "RELEASE", 8 | "size":1701134524, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/raphael/vanilla/SuperiorOS-Thirteen-raphael-RELEASE-20231129-1638.zip", 10 | "version": "Thirteen", 11 | "device_name": "Xiaomi Redmi K20 Pro", 12 | "maintainer": "Anirban (@SageOfD6Path)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /sweet.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1707657674, 5 | "filename": "SuperiorOS-Fourteen-sweet-RELEASE-20240211-1329.zip", 6 | "id": "1880b0b27dd1c2c79a258789531e8cdfdcc7652de6ec991f3992c3d8fd7ba913", 7 | "romtype": "RELEASE", 8 | "size":1654062419, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/sweet/vanilla/SuperiorOS-Fourteen-sweet-RELEASE-20240211-1329.zip", 10 | "version": "Fourteen", 11 | "device_name": "Xiaomi Redmi Note 10 Pro", 12 | "maintainer": "Unsatifsed27 (@unsatifsed27)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /veux.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1688017130, 5 | "filename": "SuperiorOS-Thirteen-veux-RELEASE-20230629-0540.zip", 6 | "id": "8ef694d5315cc8bbfc2b8a847c0337184e34ba4280c152b8fdddbc0c30f4cd75", 7 | "romtype": "RELEASE", 8 | "size":1320526714, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/veux/vanilla/SuperiorOS-Thirteen-veux-RELEASE-20230629-0540.zip", 10 | "version": "Thirteen", 11 | "device_name": "Poco X4 Pro/ Redmi note 11 Pro+ 5G", 12 | "maintainer": "Anant Goel (@Anant_Goel)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /beryllium.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": 1707628912, 5 | "filename": "SuperiorOS-Fourteen-beryllium-RELEASE-20240211-0524.zip", 6 | "id": "5a47e767b5ed4b8a03d29147a6c6bd3243b5250b690a4347494027fe8313a623", 7 | "romtype": "RELEASE", 8 | "size": 1415787158, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/beryllium/vanilla/SuperiorOS-Fourteen-beryllium-RELEASE-20240211-0524.zip", 10 | "version": "Fourteen", 11 | "device_name": "Xiaomi Pocophone F1", 12 | "maintainer": "Akshat (@Legendleo90)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /enchilada.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1707584383, 5 | "filename": "SuperiorOS-Fourteen-enchilada-RELEASE-20240210-1710.zip", 6 | "id": "9f83e1dc030e11dcce6158bde9fd9e1cedfcde6fe9dc1666170d32aae558493c", 7 | "romtype": "RELEASE", 8 | "size":1131081772, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/enchilada/vanilla/SuperiorOS-Fourteen-enchilada-RELEASE-20240210-1710.zip", 10 | "version": "Fourteen", 11 | "device_name": "Oneplus 6", 12 | "maintainer": "Vikas Yaduvanshi (@Vikas_2_0)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /merlinx.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1707616972, 5 | "filename": "SuperiorOS-Fourteen-merlinx-RELEASE-20240211-0211.zip", 6 | "id": "7401a1cfaa8365cf35cd1269cb22fe380f41ca4afa88f6b89c05f95b9ca7d792", 7 | "romtype": "RELEASE", 8 | "size":1184116805, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/merlinx/vanilla/SuperiorOS-Fourteen-merlinx-RELEASE-20240211-0211.zip", 10 | "version": "Fourteen", 11 | "device_name": "Redmi Note 9 / Redmi 10X 4G", 12 | "maintainer": "Soni Dharma (@TimJR205)" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /alioth.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime":1697769270, 5 | "filename": "SuperiorOS-Thirteen-alioth-RELEASE-20231020-0234.zip", 6 | "id": "ad2c8671a0ac534703786ae2b6f6e375ea484d64d9a8fe9caa5f1283b80353ef", 7 | "romtype": "RELEASE", 8 | "size":1361514580, 9 | "url": "https://master.dl.sourceforge.net/project/superioros/alioth/vanilla/SuperiorOS-Thirteen-alioth-RELEASE-20231020-0234.zip", 10 | "version": "Thirteen", 11 | "device_name": "Poco F3/ Mi 11x/ Redmi K40", 12 | "maintainer": "CHAITANYA (@chaitanyakm)" 13 | } 14 | ] 15 | } 16 | 17 | -------------------------------------------------------------------------------- /.github/scripts/release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Copyright (C) 2021 Ashwin DS 4 | # 5 | # Part of SuperiorOS 6 | # 7 | # This program is free software; you can redistribute it and/or modify 8 | # it under the terms of the GNU General Public License as published by 9 | # the Free Software Foundation; 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program; if not, see . 18 | 19 | if [ -f "noupdates.txt" ]; then 20 | exit 21 | fi 22 | 23 | RELEASE_MESSAGE=$(cat tag.txt) 24 | gh release create "$RELEASE_MESSAGE" ./*.zip -F release_notes.txt -t "New Superior OS Update[Vanilla]" 25 | -------------------------------------------------------------------------------- /.github/scripts/download.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Copyright (C) 2021 Ashwin DS 4 | # 5 | # Part of SuperiorOS 6 | # 7 | # This program is free software; you can redistribute it and/or modify 8 | # it under the terms of the GNU General Public License as published by 9 | # the Free Software Foundation; 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program; if not, see . 18 | 19 | import requests 20 | import os 21 | import time 22 | try: 23 | urls = open("urls.txt", "r") 24 | 25 | except FileNotFoundError: 26 | print("NO UPDATES or artifacts missing") 27 | open("noupdates.txt", "w+").write("NO UPDATES or artifacts missing") 28 | exit() 29 | 30 | for url in urls.readlines(): 31 | print(url) 32 | os.system("sudo wget " + url) 33 | -------------------------------------------------------------------------------- /.github/scripts/id.txt: -------------------------------------------------------------------------------- 1 | 4aaf0e9ada58a76321b81a23de202f5c9e43dab808d0a838dcf4fe99a3fee9d8 2 | e75d74da480bb1c91218d898e06fe6c615ef86fc0ad04fea9c1b1ddf00ca1646 3 | 34913416b2b622c329a0f87d4d9863d0c2eb4a19d28272cf5f211d814528d71a 4 | 81c2a3db2a4f419dcc36ca6c11471b19115880975eae00337de7597103fbee2a 5 | 8ef694d5315cc8bbfc2b8a847c0337184e34ba4280c152b8fdddbc0c30f4cd75 6 | f2aed5bda6104704270065a09db229743fc4cff3661972457d1a380c04d8d8ea 7 | f6ea1e40d0747616bac4e61a10b19ccfbd9a5e6c1430fc874bcf3a19b168ba56 8 | 1880b0b27dd1c2c79a258789531e8cdfdcc7652de6ec991f3992c3d8fd7ba913 9 | ad2c8671a0ac534703786ae2b6f6e375ea484d64d9a8fe9caa5f1283b80353ef 10 | 1f3e8673ab61028a82b0eb62a4a64713176c6d02539ed7a69b8bec4fcd6697ed 11 | a1153dcb28c63a69f7b40aa94648b2dc52f06eb9c77d99a8d8ca8ecb03dec674 12 | 7401a1cfaa8365cf35cd1269cb22fe380f41ca4afa88f6b89c05f95b9ca7d792 13 | feb61b15e6590fecd0de1a9ff89840545ad9c09ba5d98b65d1b3063f67dfa2f6 14 | 9b0c1b5ca9dbd43ed3319ee6ebf129c9bdb0b890092671ba34ed58b1859bd0a7 15 | f336fe95f292cf39ad5f4c5d9badd995c3fe846dee5c27c54224c515c5d9426b 16 | 5a47e767b5ed4b8a03d29147a6c6bd3243b5250b690a4347494027fe8313a623 17 | 4919e4a8b25afca3c64c4a14a2a54be1f52e313976144bba4cf4c2a265ea1f03 18 | 74996d5dc77f3ac6809962a5236b2e14a87723f1bf80853e09298bb399fdad52 19 | 93bba21aea5dcb5ca27ea4e699bccdec7ca95481d808b54c692e23e857fdc94f 20 | 71a2754cc72f5f962e82aa97477ed77125162429fe917a22d1c876e91af341d7 21 | a9aa023e8cce8a273f6fa1fbda454d4348ece542697ff0f9dfab5e35ae1cbe41 22 | 7d116a66aae6da90435fd310eeb8dc1da3720409d632dbd4cd5e4a8e5559ae2a 23 | 46e5e3e289b219c05b8ea6c050fdd2f502d9bd805cbc470f609822a89f1d6f90 24 | 71cd338e66073f80ae588ee85ee86f9de7cc9545c3415c16124fbd93d64e7d1e 25 | 74d3af08941aa97efb398c48d0ac98300e2fc0ccb25b3384f228e4f1edaac73a 26 | 9f83e1dc030e11dcce6158bde9fd9e1cedfcde6fe9dc1666170d32aae558493c 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SuperiorOS Fourteen Maintainer Search 2 | 3 | Hello everyone! 4 | 5 | We are currently in search of dedicated maintainers for SuperiorOS Fourteen with Android Version 14. We have a few prerequisites that we expect our potential maintainers to meet: 6 | 7 | 1. **Knowledge of Git:** You should be proficient in Git operations like push, pull, cherry-pick, and rebase. This is essential for managing and contributing to our project effectively. 8 | 9 | 2. **Thoughtful Feature Requests:** We appreciate input and new ideas, but we're not looking for spammy feature requests. Any features you propose should make sense and will be considered for discussion and potential inclusion. 10 | 11 | 3. **No Inbuilt Kernelsu:** We do not allow inbuilt kernelsu in SuperiorOS. Please refrain from including it in your contributions. 12 | 13 | 4. **Commit Authorship:** Maintain proper commit authorship. This helps us keep track of contributions and gives credit to the right individuals for their work. 14 | 15 | 5. **Preserve Source for Official Releases:** We expect maintainers to maintain the integrity of the SuperiorOS source code for official releases. Any modifications should be in line with our project's goals and standards. 16 | 17 | If you believe you meet these requirements and are interested in becoming a maintainer for SuperiorOS, please go through the procedure outlined below. 18 | 19 | We appreciate your interest and look forward to welcoming new maintainers to our team. Together, we can continue to build and improve SuperiorOS! 20 | 21 | ## How to Apply 22 | 23 | Contact us via email at [superioros123@gmail.com](mailto:superioros123@gmail.com) with the following details, or you can also DM us on Telegram [**Darkstar**](https://t.me/Darkstar085): 24 | 25 | - **Sources:** All device trees which you used to build the ROM (Need modified trees). 26 | 27 | - **XDA Thread:** Your XDA thread for unofficial builds. [Optional] 28 | 29 | - **TG Id:** Your Telegram username. 30 | 31 | - **Screenshot:** Your About Phone screenshot. -------------------------------------------------------------------------------- /.github/workflows/channel-post.yml: -------------------------------------------------------------------------------- 1 | name: Channel Poster 2 | # Controls when the action will run. Triggers the workflow on push or pull request 3 | # events but only for the master branch 4 | on: 5 | push: 6 | branches: [fourteen] 7 | workflow_dispatch: 8 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 9 | jobs: 10 | # This workflow contains a single job called "build" 11 | poster: 12 | # The type of runner that the job will run on 13 | runs-on: ubuntu-latest 14 | # Steps represent a sequence of tasks that will be executed as part of the job 15 | steps: 16 | # Install necessary dependencies for the script to work 17 | - name: Install Dep 18 | run: sudo pip install pyTelegramBotAPI 19 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 20 | - name: Checkout Repo 21 | uses: actions/checkout@v4 22 | with: 23 | token: ${{ secrets.GH_TOKEN }} 24 | ref: fourteen 25 | 26 | - name: Github config 27 | run: | 28 | git config --global user.name "Darkstar085" 29 | git config --global user.email "sipunkumar85@gmail.com" 30 | 31 | # Post the update 32 | - name: Bot 33 | run: sudo -E python3 .github/scripts/post.py 34 | env: 35 | BOT_TOKEN: ${{ secrets.BOT_TOKEN }} 36 | CHAT: ${{ secrets.CHAT_ID }} 37 | 38 | - name: debug 39 | run: sudo ls 40 | 41 | - name: Upload artifacts 42 | uses: actions/upload-artifact@v4 43 | with: 44 | name: releases 45 | retention-days: 2 46 | path: | 47 | release_notes.txt 48 | urls.txt 49 | tag.txt 50 | 51 | # Commit the changes and push to git 52 | - name: Commit and Push Changes 53 | run: sudo bash .github/scripts/push.sh 54 | 55 | release: 56 | runs-on: ubuntu-latest 57 | needs: poster 58 | steps: 59 | - name: Checkout Repo 60 | uses: actions/checkout@v4 61 | with: 62 | token: ${{ secrets.GH_TOKEN }} 63 | ref: fourteen 64 | 65 | - name: Download artifacts 66 | uses: actions/download-artifact@v4 67 | with: 68 | name: releases 69 | 70 | - name: debug 71 | run: sudo ls 72 | 73 | - name: Download 74 | run: sudo -E python3 .github/scripts/download.py 75 | 76 | - name: Release to GH Releases 77 | run: sudo -E bash .github/scripts/release.sh 78 | env: 79 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 80 | -------------------------------------------------------------------------------- /OTA.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (C) 2020-23 The Superior OS Project 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # git pull if repo already exist 17 | if [ -d ~/official_devices ]; then 18 | echo "Pulling the latest changes from the official_devices repository..." 19 | cd ~/official_devices 20 | git pull 21 | cd ~ 22 | fi 23 | 24 | myname="$0" 25 | function help() { 26 | cat < 29 | 30 | for example: 31 | $myname ef63 superior 32 | 33 | EOF 34 | } 35 | 36 | if [ $# -lt 2 ]; then 37 | echo "ERROR: Not enough arguments provided" 38 | help 39 | exit 1 40 | fi 41 | 42 | device=$1 43 | sourcerom=$2 44 | 45 | DATE="$(grep ro.build.date.utc ~/$sourcerom/out/target/product/$device/system/build.prop | cut -d'=' -f2)" 46 | 47 | if [ -z "$DATE" ]; then 48 | echo "ERROR: Failed to retrieve build date" 49 | exit 1 50 | fi 51 | 52 | echo "" 53 | 54 | # make DATE human readable like 20230203 55 | BUILDDATE="$(date -d @$DATE +%Y%m%d)" 56 | DAY="$(date -d @$DATE +%d/%m/%Y)" 57 | 58 | # get the zip path from out folder using the date 59 | zip_path=~/$sourcerom/out/target/product/$device/*$BUILDDATE*.zip 60 | 61 | # don't fail if there is no device json 62 | set +e 63 | 64 | if [ ! -d ~/official_devices ]; then 65 | cd ~ 66 | git clone https://github.com/SuperiorOS-Devices/official_devices.git -b fourteen 67 | fi 68 | 69 | echo "" 70 | 71 | if [ -d ~/official_devices ]; then 72 | 73 | # datetime 74 | timestamp=$(cat ~/$sourcerom/out/target/product/$device/system/build.prop | grep ro.build.date.utc | cut -d'=' -f2) 75 | timestamp_old=$(cat ~/official_devices/$device.json | grep "datetime" | cut -d':' -f2 | cut -d',' -f1) 76 | $(sed -i "s|$timestamp_old|$timestamp|g" ~/official_devices/$device.json) 77 | 78 | # filename 79 | zip_name=$(cat ~/$sourcerom/out/target/product/$device/system/build.prop | grep ro.superior.version | cut -d'=' -f2) 80 | zip_name_old=$(cat ~/official_devices/$device.json | grep "filename" | cut -d':' -f2 | cut -d'"' -f2) 81 | $(sed -i "s|$zip_name_old|$zip_name.zip|g" ~/official_devices/$device.json) 82 | 83 | # id 84 | id=$(sha256sum $zip_path | cut -d' ' -f1) 85 | id_old=$(cat ~/official_devices/$device.json | grep "id" | cut -d':' -f2 | cut -d'"' -f2) 86 | $(sed -i "s|$id_old|$id|g" ~/official_devices/$device.json) 87 | 88 | # Rom type 89 | type="RELEASE" 90 | type_old=$(cat ~/official_devices/$device.json | grep "romtype" | cut -d':' -f2 | cut -d'"' -f2) 91 | $(sed -i "s|$type_old|$type|g" ~/official_devices/$device.json) 92 | 93 | # Rom size 94 | size_new=$(stat -c "%s" $zip_path) 95 | size_old=$(cat ~/official_devices/$device.json | grep "size" | cut -d':' -f2 | cut -d',' -f1) 96 | $(sed -i "s|$size_old|$size_new|g" ~/official_devices/$device.json) 97 | 98 | # Rom version 99 | version=$(cat ~/$sourcerom/out/target/product/$device/system/build.prop | grep ro.modversion | cut -d'=' -f2) 100 | version_old=$(cat ~/official_devices/$device.json | grep "version" | cut -d':' -f2 | cut -d'"' -f2) 101 | $(sed -i "s|$version_old|$version|g" ~/official_devices/$device.json) 102 | 103 | # url 104 | url="https://master.dl.sourceforge.net/project/superioros/$device/vanilla/$zip_name.zip" 105 | url_old=$(cat ~/official_devices/$device.json | grep https | cut -d '"' -f4) 106 | $(sed -i "s|$url_old|$url|g" ~/official_devices/$device.json) 107 | fi 108 | 109 | echo "" 110 | 111 | # if there is no json file, create one 112 | if [ ! -f ~/official_devices/$device.json ]; then 113 | echo "No json file found, creating one" 114 | echo "Creating json file for $device" 115 | echo "{ 116 | \"response\": [ 117 | { 118 | \"datetime\": $timestamp, 119 | \"filename\": \"$zip_name.zip\", 120 | \"id\": \"$id\", 121 | \"romtype\": \"$type\", 122 | \"size\": $size_new, 123 | \"url\": \"$url\", 124 | \"version\": \"$version\", 125 | \"device_name\": \"Unknown\", 126 | \"maintainer\": \"Noob\" 127 | } 128 | ] 129 | }" >~/official_devices/$device.json 130 | sleep 1 131 | echo "Done" 132 | fi 133 | 134 | echo "" 135 | # if device name and maintainer is not set, ask for it 136 | if [ "$(cat ~/official_devices/$device.json | grep "device_name" | cut -d':' -f2 | cut -d'"' -f2)" == "Unknown" ]; then 137 | echo "Device name is not set, please enter it" 138 | read -p "Device name: " device_name 139 | device_name_old=$(cat ~/official_devices/$device.json | grep "device_name" | cut -d':' -f2 | cut -d'"' -f2) 140 | $(sed -i "s|$device_name_old|$device_name|g" ~/official_devices/$device.json) 141 | fi 142 | 143 | if [ "$(cat ~/official_devices/$device.json | grep "maintainer" | cut -d':' -f2 | cut -d'"' -f2)" == "Noob" ]; then 144 | echo "Maintainer is not set, please enter it" 145 | read -p "Maintainer: " maintainer 146 | maintainer_old=$(cat ~/official_devices/$device.json | grep "maintainer" | cut -d':' -f2 | cut -d'"' -f2) 147 | $(sed -i "s|$maintainer_old|$maintainer|g" ~/official_devices/$device.json) 148 | fi 149 | 150 | # add & push commit to github 151 | echo "" 152 | echo "Making commit..." 153 | cd ~/official_devices 154 | git add --all 155 | git commit -m "$device: update $DAY" 156 | cd ~ 157 | rm -rf OTA.sh 158 | echo "Done" 159 | echo "" 160 | -------------------------------------------------------------------------------- /.github/scripts/post.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Python code which automatically sends a Message in a Telegram Group if any new update is found. 4 | # Intended to be run on every push 5 | # USAGE : python post.py 6 | # See README for more. 7 | # 8 | # Copyright (C) 2021 Ashwin DS 9 | # Copyright (C) 2022 Sipun Ku Mahanta 10 | # 11 | # This program is free software; you can redistribute it and/or modify 12 | # it under the terms of the GNU General Public License as published by 13 | # the Free Software Foundation; 14 | # 15 | # This program is distributed in the hope that it will be useful, 16 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | # GNU General Public License for more details. 19 | # 20 | # You should have received a copy of the GNU General Public License 21 | # along with this program; if not, see . 22 | 23 | import sys 24 | import datetime 25 | import json 26 | import os 27 | import time 28 | import telebot 29 | 30 | # Get secrets from Workflow 31 | BOT_API = os.environ.get("BOT_TOKEN") 32 | CHAT_ID = os.environ.get("CHAT") 33 | 34 | STICKER_ID = "CAACAgUAAxkBAAEDKQpheCTPbhQwdZEB8O070VR2D1guUgACbgUAAiEjoFc-UkCV15SyLSEE" 35 | 36 | # Init the bot 37 | bot = telebot.TeleBot(BOT_API, parse_mode="HTML") 38 | 39 | # Where to look for .json files 40 | fileDir = "." 41 | fileExt = ".json" 42 | 43 | # Github releases tag 44 | 45 | GithubReleasesTag = time.time() 46 | open("tag.txt", "w+").write(str(GithubReleasesTag)) 47 | 48 | 49 | def send_mes(message): 50 | return bot.send_message(chat_id=CHAT_ID, text=message, disable_web_page_preview=True) 51 | 52 | 53 | def send_photo(image, caption): 54 | if not caption or caption == "" or caption is None: 55 | return bot.send_photo(chat_id=CHAT_ID, photo=open(image, "rb")) 56 | else: 57 | return bot.send_photo(chat_id=CHAT_ID, photo=open(image, "rb"), caption=caption) 58 | 59 | 60 | # store MD5s in a file to compare 61 | def update(IDs): 62 | with open(".github/scripts/id.txt", "w+") as f: 63 | for s in IDs: 64 | f.write(str(s) + "\n") 65 | 66 | 67 | # Return IDs of all latest files from *.json files 68 | def get_id(): 69 | result = [] 70 | for a in os.listdir(fileDir): 71 | if a.endswith(fileExt): 72 | if a != "devices.json": 73 | result.append(a) 74 | 75 | file_id = [] 76 | for a in result: 77 | print(a) 78 | file = open(fileDir + "/" + a, "r") 79 | json_processed = json.loads(file.read()) 80 | try: 81 | file_id.append(json_processed['response'][0]['id']) 82 | except Exception as e: 83 | print(e) 84 | return file_id 85 | 86 | 87 | # Return previous IDs 88 | def read_old(): 89 | old_id = [] 90 | file = open(".github/scripts/id.txt", "r") 91 | for line in file.readlines(): 92 | old_id.append(line.replace("\n", "")) 93 | return old_id 94 | 95 | 96 | # remove elements in 2nd list from 1st, helps to find out what device got an update 97 | def get_diff(new_id, old_id): 98 | first_set = set(new_id) 99 | sec_set = set(old_id) 100 | return list(first_set - sec_set) 101 | 102 | 103 | # Grab needed info using id of the file 104 | def get_info(id): 105 | devices = [] 106 | for a in os.listdir(fileDir): 107 | if a.endswith(fileExt): 108 | if a != "devices.json": 109 | devices.append(a) 110 | for a in devices: 111 | file = open(fileDir + "/" + a, "r") 112 | json_processed = json.loads(file.read()) 113 | if json_processed['response'][0]['id'] == id: 114 | print(json_processed['response'][0]) 115 | required = json_processed['response'][0] 116 | device = a.replace(".json", "") 117 | break 118 | 119 | print("Device is : " + device) 120 | print("Size is : " + str(required['size'])) 121 | print("Maintained by : " + required['maintainer']) 122 | print("File name : " + required['filename']) 123 | print("Version : " + required['version']) 124 | print("Variant : Vanilla") 125 | 126 | return { 127 | "device": device, 128 | "size": int(required['size']), 129 | "maintainer": required['maintainer'], 130 | "variant": "Vanilla", 131 | "version": required['version'], 132 | 'name': required["device_name"], 133 | "time": required['datetime'], 134 | "filename": required['filename'], 135 | "id": required['id'], 136 | "romtype": required['romtype'], 137 | "url": required['url'], 138 | } 139 | 140 | 141 | def bold(text1, text2): 142 | message = "" + text1 + "" + text2 143 | return message 144 | 145 | 146 | # Prepare in the format needed 147 | def cook_content(information): 148 | message = "" 149 | 150 | # Show size in MB if its less than 1GB else show in GB 151 | if information["size"] < 1000000000: 152 | displaySize = "{:.2f} MB".format(information["size"] / (1024 * 1024)) 153 | else: 154 | displaySize = "{:.2f} GB".format(information["size"] / (1024 * 1024 * 1024)) 155 | 156 | # Convert time to human readable format 157 | buildtime = datetime.datetime.fromtimestamp(information['time']).strftime('%d/%m/%Y') 158 | 159 | # links need to be in this format inline URL 160 | message = message + \ 161 | "New Update for " + information['name'] + " (" + str(information['device']) + ") is here!\n" + \ 162 | bold("by ", str(information["maintainer"])) + "\n\n" + \ 163 | "▫️ " + bold("Build: ","" + str(information["filename"])) + "" + "\n" +\ 164 | "▫️ " + bold("Size: ","" + str(displaySize)) + "" + "\n" + \ 165 | "▫️ " + bold("Variant: ","" + str(information["variant"])) + "" + "\n" + \ 166 | "▫️ " + bold("Date: ","" + str(buildtime)) + "" + "\n" + \ 167 | "▫️ " + bold("SHA256: ","" + str(information['id'])) + "" + "\n" + \ 168 | "▫️ " + bold("Download: ", "Sourceforge") + "\n" + \ 169 | "▫️ " + bold("Changelog: ", "Source" + " | " + " Device") + "\n" + \ 170 | "▫️ " + bold("Flashing Method: ", "Here") + "\n" + \ 171 | "▫️ " + bold("Donate: ", "Paypal" + " | " + " UPI") + "\n\n" + \ 172 | "#" + str(information['device']) + " | #besuperior | @superioros" 173 | return message 174 | 175 | 176 | new = get_id() 177 | old = read_old() 178 | 179 | if len(get_diff(new, old)) == 0: 180 | print("All Updated\nNothing to do\nExiting") 181 | exit() 182 | 183 | print(get_diff(new, old)) 184 | commit_message = "Update new IDS" 185 | commit_descriptions = "Data of the following device(s) were changed :\n" 186 | release_notes = "New Superior OS Update has been released for the device :\n" 187 | urls = "" 188 | for i in get_diff(new, old): 189 | print(i) 190 | info = get_info(i) 191 | send_mes(cook_content(info)) 192 | bot.send_sticker(CHAT_ID, STICKER_ID) 193 | commit_descriptions += info['name'] + " (" + info['device'] + ")\n" 194 | release_notes += info['name'] + " (" + info['device'] + ")\n" 195 | urls += info['url'] + "\n" 196 | print(info['url']) 197 | if info['url'].endswith('.zip'): 198 | pass 199 | else: 200 | raise Exception( 201 | "Provide direct link to SF, Download Link MUST end only with \".zip\".") 202 | time.sleep(2) 203 | 204 | 205 | open("commit_mesg.txt", "w+").write("official_devices : " + 206 | commit_message + " [BOT]\n" + commit_descriptions) 207 | open("release_notes.txt", "w+").write(release_notes + 208 | "\n\n *THIS WAS AN AUTOMATED RELEASE TRIGGERED THRU A PUSH, IF ANYTHING IS WRONG MAKE SURE TO TELL US THRU TELEGRAM*") 209 | open("urls.txt", "w+").write(urls) 210 | 211 | update(new) 212 | --------------------------------------------------------------------------------