new branch for github pages
86
.github/ISSUE_TEMPLATE/bug.yaml
vendored
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
name: Bug
|
||||
description: Make sure you complete the template. Otherwise, it will be closed without further explanation!
|
||||
title: "[Bug] Replace this with your title"
|
||||
labels: bug
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue for this?
|
||||
description: _Please search to see if an issue already exists for the bug you encountered_
|
||||
options:
|
||||
- label: I have searched the existing issues
|
||||
required: true
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Have you read the FAQ?
|
||||
description: _Make sure you visit the [**FAQ**](https://github.com/qnblackcat/CercubePlus/wiki/FAQ) page first!_
|
||||
options:
|
||||
- label: Yes, I read the FAQ
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Device info
|
||||
description:
|
||||
value: |
|
||||
- iOS/iPadOS version:
|
||||
- Device model:
|
||||
- Sideload tool (AltStore, Sideloadly, TrollStore,...):
|
||||
- The specific version of CercubePlus (**latest** or **newest** is **NOT** a version number!):
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the bug
|
||||
description: _Please attach videos or screenshots if possible_
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps to reproduce the issue
|
||||
description: _Please attach videos or screenshots if possible_
|
||||
value: |
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Crash log (if the app crashes)
|
||||
description: _If somehow the app crashes, **you must provide the crash log**. It can be found in your device's Settings App > Privacy > Analytics & Improvements > Analytics Data > Youtube-xxx-xxx.ips_
|
||||
render: shell
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Are you using the newest version of CercubePlus? If not, why?
|
||||
description: _Developers spend time and effort to fix bugs & add improvements with every release. Why don't you update to the [latest version](https://github.com/Balackburn/YTLitePlus/releases/latest) before reporting about an issue?_
|
||||
multiple: false
|
||||
options:
|
||||
- ✅ Yes, I'm using the latest version of CercubePlus right now
|
||||
- ❌ No, I'll explain at the end of the template
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Does the issue happen with the official YouTube from AppStore?
|
||||
description: _Well, YouTube itself is buggy sometimes..._
|
||||
multiple: false
|
||||
options:
|
||||
- ❌ No, It doesn't
|
||||
- ✅ Yes, It does
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: _Um, anything else you want to say?_
|
||||
validations:
|
||||
required: false
|
||||
37
.github/ISSUE_TEMPLATE/question-help.md
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
name: Question
|
||||
description: Have question(s)?
|
||||
title: "[Questions] Replace with your question"
|
||||
labels: question
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue/question for this?
|
||||
description: _Please search to see if an issue already exists for the bug you encountered. **I DON\'T MAKE THIS TICK BOX FOR COSMETIC.**_
|
||||
options:
|
||||
- label: I have searched the existing issues
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Do you think this is a bug?
|
||||
description: _If you think this is a bug, please open a new issue with the bug template_
|
||||
multiple: false
|
||||
options:
|
||||
- ✅ Yes, I believe this is a bug. I will open a new issue with the bug template
|
||||
- ❌ No, I don't think this is a bug. I will explain below
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: My question
|
||||
description: _Please enter your question here_
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: _Um, anything else you want to say?_
|
||||
validations:
|
||||
required: false
|
||||
42
.github/RELEASE_TEMPLATE/Release.md
vendored
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# [YOUR_TWEAK_NAME] Features
|
||||
CercubePlus but adds Additional Features that should’ve been added to the native CercubePlus which were probably not added.
|
||||
|
||||
**LowContrastMode:** This tweak helps remove the new contrasty looking UI that was first introducted way back in 2020 August/September. (Tweak made by arichorn)
|
||||
<details>
|
||||
<summary>More Features...</summary>
|
||||
|
||||
**LowContrastModeColors:** for users who doesn’t use gray will get a set of colors to switch which changes and improves the UI Customization. (Add-on added for LowContrastMode)
|
||||
|
||||
**YTNoHeatwaves:** Turns off the Heatwaves Feature in the video player. `(CercubePlus/VideoPlayerOverlayControls)`
|
||||
|
||||
**YTNoUpgradeDialog:** Disables the Upgrade Dialog so you won’t be prompt to update the app.
|
||||
|
||||
**YouMute:** Mute/unmute videos in YouTube directly.
|
||||
|
||||
**iPadLayout:** Gives iPhone users the ability to use the iPad’s Interface and the ability to use the some of the YouTube features that are not on iPhone.
|
||||
|
||||
**iPhoneLayout:** Gives iPad users the ability to use Community Posts, to create Shorts and the ability to use the buggy iPhone layout. but using it in split view mode fixes the ui.
|
||||
|
||||
**HideSponsorBlockButton:** Hide the SponsorBlock Button shown on the Nav Bar. Added by Dayanch96
|
||||
|
||||
**DisableWifiRelatedOptions:** want to remove sections that are only shown when internet is on? You can toggle this to remove all of those sections. Well not all but toggling the option will remove some of the annoying sections that may not be used.
|
||||
|
||||
**HideShadowOverlayButtons:** want to remove shadow overlay on the buttons used in the video player? Then toggle this to remove the Shadow Overlay on the buttons Previous, Next, Rewind, Forward.
|
||||
|
||||
**etc..**
|
||||
</details>
|
||||
|
||||
# [YOUR_TWEAK_NAME] Release Information
|
||||
Current YouTube IPA: `TEMPLATE`
|
||||
Current YTLite Version: `v5.3.13`
|
||||
Current App Compatibility: `iOS/iPadOS 14.0` or later
|
||||
|
||||
**RELEASE F1:**
|
||||
[THIS IS WHERE YOU PUT YOUR CHANGES BELOW, also F1 indicates First Release on the same YouTube Version in case you needed to know]
|
||||
- [<-- this subtract symbol makes the changelog look cool]
|
||||
|
||||
- [this right here shows you added additonal changes on a certain tweak like this for example, below]
|
||||
- Improvements
|
||||
- Fixed Sign-in Issue
|
||||
- Fixed Ads Not Working Issue
|
||||
[THIS IS HOW YOU DO IT! YOU CAN DELETE ALL OF THE TEXT I'VE SAID!]
|
||||
162
.github/workflows/buildapp.yml
vendored
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
# Original idea by @ISnackable. Many thanks to him for handling the most hardest parts!
|
||||
# https://github.com/ISnackable/CercubePlus/blob/main/.github/workflows/Build.yml
|
||||
|
||||
name: Build and Release CercubePlus
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
cercube_version:
|
||||
description: "The version of YTLite"
|
||||
default: "5.3.11"
|
||||
required: true
|
||||
type: string
|
||||
decrypted_youtube_url:
|
||||
description: "The direct URL to the decrypted YouTube ipa"
|
||||
default: ""
|
||||
required: true
|
||||
type: string
|
||||
youtube_version:
|
||||
description: "The version of YouTube"
|
||||
default: ""
|
||||
required: true
|
||||
type: string
|
||||
bundle_id:
|
||||
description: "Modify the bundle ID. Not recommended"
|
||||
default: "com.google.ios.youtube"
|
||||
required: true
|
||||
type: string
|
||||
app_name:
|
||||
description: "Modify the name of the app on the Home Screen. Not recommended"
|
||||
default: "YouTube"
|
||||
required: true
|
||||
type: string
|
||||
create_release:
|
||||
description: "Create a draft release"
|
||||
default: true
|
||||
required: false
|
||||
type: boolean
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build CercubePlus
|
||||
runs-on: macos-latest
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- name: Checkout Main
|
||||
uses: actions/checkout@v3.5.2
|
||||
with:
|
||||
path: main
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Dependencies
|
||||
run: brew install ldid dpkg make
|
||||
|
||||
- name: Setup Theos
|
||||
uses: actions/checkout@v3.5.2
|
||||
with:
|
||||
repository: theos/theos
|
||||
ref: master
|
||||
path: theos
|
||||
submodules: recursive
|
||||
|
||||
- name: Caching
|
||||
id: SDK
|
||||
uses: actions/cache@v3.3.1
|
||||
env:
|
||||
cache-name: iOS-15.5-SDK
|
||||
with:
|
||||
path: theos/sdks/
|
||||
key: ${{ env.cache-name }}
|
||||
|
||||
- name: Download iOS 15.5 SDK
|
||||
if: steps.SDK.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
svn checkout -q https://github.com/chrisharper22/sdks/trunk/iPhoneOS15.5.sdk
|
||||
mv *.sdk $THEOS/sdks
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
|
||||
- name: Setup Theos Jailed
|
||||
uses: actions/checkout@v3.5.2
|
||||
with:
|
||||
repository: qnblackcat/theos-jailed
|
||||
ref: master
|
||||
path: theos-jailed
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Theos Jailed
|
||||
run: |
|
||||
./theos-jailed/install
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
|
||||
- name: Download YTLite & Prepare YouTube iPA
|
||||
run: |
|
||||
curl "https://raw.githubusercontent.com/Muirey03/RemoteLog/master/RemoteLog.h" --output "$THEOS/include/RemoteLog.h"
|
||||
curl "https://dl.dropboxusercontent.com/s/b01erqbp3ajc5e2/me.alfhaily.cercube_${{ env.CERCUBE_VERSION }}_iphoneos-arm.deb" --output "main/Tweaks/YTLite/me.alfhaily.cercube_${{ env.CERCUBE_VERSION }}_iphoneos-arm.deb"
|
||||
echo -e "==> \033[1mCercube v${{ inputs.cercube_version }} downloaded! \033[0m"
|
||||
wget "$YOUTUBE_URL" --no-verbose -O main/YouTube.ipa
|
||||
echo -e "==> \033[1mYouTube v${{ inputs.youtube_version }} downloaded! \033[0m"
|
||||
cd main/Tweaks/YTLite && tar -xf "me.alfhaily.cercube_5.3.11_iphoneos-arm.deb" && tar -xf data.tar.* && cd ../../..
|
||||
echo -e "==> \033[1mCercube v${{ inputs.cercube_version }} unpacked! \033[0m"
|
||||
unzip -q main/YouTube.ipa -d main/tmp
|
||||
rm -rf main/tmp/Payload/YouTube.app/_CodeSignature/CodeResources
|
||||
rm -rf main/tmp/Payload/YouTube.app/PlugIns/*
|
||||
cp -R main/Extensions/*.appex main/tmp/Payload/YouTube.app/PlugIns
|
||||
echo -e "==> \033[1mYouTube v${{ inputs.youtube_version }} unpacked! \033[0m"
|
||||
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
CERCUBE_VERSION: ${{ inputs.cercube_version }}
|
||||
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
|
||||
YOUTUBE_URL: ${{ inputs.decrypted_youtube_url }}
|
||||
|
||||
- name: Fix Compiling & Build Package
|
||||
id: build_package
|
||||
run: |
|
||||
(echo PATH=\"$(brew --prefix make)/libexec/gnubin:\$PATH\" >> ~/.zprofile)
|
||||
cd ${{ github.workspace }}/main
|
||||
sed -i '' "12s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile
|
||||
sed -i '' "11s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile
|
||||
make package FINALPACKAGE=1
|
||||
(mv "packages/$(ls -t packages | head -n1)" "packages/CercubePlus_${{ env.YOUTUBE_VERSION }}_${{ env.CERCUBE_VERSION }}.ipa")
|
||||
echo "package=$(ls -t packages | head -n1)" >>$GITHUB_OUTPUT
|
||||
echo -e "==> \033[1mSHASUM256: $(shasum -a 256 packages/*.ipa | cut -f1 -d' ')\033[0m"
|
||||
echo -e "==> \033[1mBundle ID: ${{ env.BUNDLE_ID }}\033[0m"
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
CERCUBE_VERSION: ${{ inputs.cercube_version }}
|
||||
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
|
||||
BUNDLE_ID: ${{ inputs.bundle_id }}
|
||||
APP_NAME: ${{ inputs.app_name }}
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3.1.2
|
||||
env:
|
||||
CERCUBE_VERSION: ${{ inputs.cercube_version }}
|
||||
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
|
||||
with:
|
||||
name: CercubePlus_${{ env.YOUTUBE_VERSION }}_${{ env.CERCUBE_VERSION }}
|
||||
path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }}
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: softprops/action-gh-release@v0.1.15
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CERCUBE_VERSION: ${{ inputs.CERCUBE_VERSION }}
|
||||
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
|
||||
DRAFT: ${{ inputs.create_release }}
|
||||
with:
|
||||
tag_name: v${{ env.YOUTUBE_VERSION }}-${{ env.CERCUBE_VERSION }}-(${{ github.run_number }})
|
||||
name: v${{ env.YOUTUBE_VERSION }}-${{ env.CERCUBE_VERSION }}-(${{ github.run_number }})
|
||||
files: main/packages/*.ipa
|
||||
draft: ${{ env.DRAFT }}
|
||||
42
.github/workflows/update_source.yml
vendored
|
|
@ -1,42 +0,0 @@
|
|||
name: Update apps.json everyday
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
update_json:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.x
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install requests
|
||||
|
||||
- name: Run script
|
||||
run: |
|
||||
python update_json.py
|
||||
|
||||
- name: Check for changes
|
||||
id: check_changes
|
||||
run: |
|
||||
git diff --exit-code || echo "::set-output name=has_changes::true"
|
||||
|
||||
- name: Commit and push changes
|
||||
if: steps.check_changes.outputs.has_changes == 'true'
|
||||
run: |
|
||||
git config --global user.email "actions@github.com"
|
||||
git config --global user.name "GitHub Actions"
|
||||
git add .
|
||||
git commit -m "Update JSON file with latest release"
|
||||
git push
|
||||
6
.gitignore
vendored
|
|
@ -1 +1,7 @@
|
|||
.DS_Store
|
||||
.theos/
|
||||
packages/
|
||||
tmp/
|
||||
Tweaks/YTLite/*
|
||||
!Tweaks/YTLite/.gitkeep
|
||||
Resources/
|
||||
42
.gitmodules
vendored
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
[submodule "Tweaks/YTUHD"]
|
||||
path = Tweaks/YTUHD
|
||||
url = https://github.com/PoomSmart/YTUHD.git
|
||||
[submodule "Tweaks/YouPiP"]
|
||||
path = Tweaks/YouPiP
|
||||
url = https://github.com/PoomSmart/YouPiP.git
|
||||
[submodule "Tweaks/Return-YouTube-Dislikes"]
|
||||
path = Tweaks/Return-YouTube-Dislikes
|
||||
url = https://github.com/PoomSmart/Return-YouTube-Dislikes.git
|
||||
[submodule "Tweaks/YouTubeHeader"]
|
||||
path = Tweaks/YouTubeHeader
|
||||
url = https://github.com/PoomSmart/YouTubeHeader.git
|
||||
[submodule "Tweaks/Alderis"]
|
||||
path = Tweaks/Alderis
|
||||
url = https://github.com/qnblackcat/Alderis.git
|
||||
[submodule "Tweaks/PSHeader"]
|
||||
path = Tweaks/PSHeader
|
||||
url = https://github.com/PoomSmart/PSHeader.git
|
||||
[submodule "Tweaks/YTABConfig"]
|
||||
path = Tweaks/YTABConfig
|
||||
url = https://github.com/PoomSmart/YTABConfig.git
|
||||
[submodule "Tweaks/YouMute"]
|
||||
path = Tweaks/YouMute
|
||||
url = https://github.com/PoomSmart/YouMute.git
|
||||
[submodule "Tweaks/RemoteLog"]
|
||||
path = Tweaks/RemoteLog
|
||||
url = https://github.com/Muirey03/RemoteLog.git
|
||||
[submodule "Tweaks/FLEX"]
|
||||
path = Tweaks/FLEX
|
||||
url = https://github.com/qnblackcat/FLEX-Classes.git
|
||||
[submodule "Tweaks/iSponsorBlock"]
|
||||
path = Tweaks/iSponsorBlock
|
||||
url = https://github.com/Galactic-Dev/iSponsorBlock.git
|
||||
[submodule "Extensions"]
|
||||
path = Extensions
|
||||
url = https://github.com/CokePokes/YoutubeExtensions.git
|
||||
[submodule "Tweaks/YTHoldForSpeed"]
|
||||
path = Tweaks/YTHoldForSpeed
|
||||
url = https://github.com/arichorn/YTHoldForSpeed.git
|
||||
[submodule "Tweaks/DontEatMyContent"]
|
||||
path = Tweaks/DontEatMyContent
|
||||
url = https://github.com/therealFoxster/DontEatMyContent.git
|
||||
|
Before Width: | Height: | Size: 8.6 KiB |
108
apps.json
|
|
@ -1,108 +0,0 @@
|
|||
{
|
||||
"name": "YTLitePlus (for Altstore)",
|
||||
"identifier": "com.ytlite.source",
|
||||
"apps": [
|
||||
{
|
||||
"beta": false,
|
||||
"name": "Youtube (YTLitePlus)",
|
||||
"bundleIdentifier": "com.google.ios.youtube",
|
||||
"developerName": "Dayanch96 & Arichorn",
|
||||
"subtitle": "YTLite with more features!",
|
||||
"version": "18.23.3",
|
||||
"versionDate": "2023-06-27T08:15:21Z",
|
||||
"versionDescription": "Current YouTube IPA: \"v18.23.3\" \r\nCurrent YTLite Version: \"v2.0\" \r\nCurrent App Compatibility: \"iOS/iPadOS 14.0\" or later\r\n\r\nRELEASE 18.23.3\u20222.0: (June 27th 2023)\r\n\r\n\u2022 Initial YTLitePlus Release\r\n\r\nIssues in this Release:\r\n\u2022 LowContrastMode doesn't work (it work with older YT version)\r\n\u2022 The old Darkmode doesn't work quite right",
|
||||
"downloadURL": "https://github.com/Balackburn/YTLitePlus/releases/download/v18.23.3-2.0/YTLitePlus_18.23.3_2.0.ipa",
|
||||
"localizedDescription": "YTLite with more features! \n\nSupercharge your YouTube experience with +15 tweaks: \n\n\u2022 YTLite: Ad-blocking & background playback\n\u2022 iSponsorBlock: Skip sponsor ads\n\u2022 YouPiP: Native PiP mode\n\u2022 YTUHD: 2K & 4K video quality\n\u2022 YouTube Dislike Return: Reinstate dislike counts\n\u2022 YTClassicVideoQuality: Old video quality selector\n\u2022 YTNoHoverCards: Disable suggested videos\n\u2022 YTABGoodies: Disable A/B testing features\n\u2022 NOYTPremium: Remove Premium upsell alerts\n\u2022 YTSpeed: Add 2.25x to 4x playback speeds\n\u2022 YTMiniplayerEnabler: Enable Miniplayer\n\u2022 DontEatMyContent: Prevent notch issues\n\u2022 YTShortsProgress: Enable progress bar for Shorts\n\u2022 YTABConfig: Control A/B testing flags\n\u2022 YouMute: Mute/unmute videos\n\u2022 LowContrastMode: Reduce interface contrast\n\u2022 And many more...",
|
||||
"iconURL": "https://raw.githubusercontent.com/Balackburn/YTLitePlus/AltstoreSource/Youtube_logo-512.png",
|
||||
"tintColor": "e22a41",
|
||||
"size": 93660296,
|
||||
"screenshotURLs": [
|
||||
"https://raw.githubusercontent.com/Balackburn/YTLitePlus/AltstoreSource/screenshots/1.png",
|
||||
"https://raw.githubusercontent.com/Balackburn/YTLitePlus/AltstoreSource/screenshots/2.png",
|
||||
"https://raw.githubusercontent.com/Balackburn/YTLitePlus/AltstoreSource/screenshots/3.png",
|
||||
"https://raw.githubusercontent.com/Balackburn/YTLitePlus/AltstoreSource/screenshots/4.png",
|
||||
"https://raw.githubusercontent.com/Balackburn/YTLitePlus/AltstoreSource/screenshots/5.png",
|
||||
"https://raw.githubusercontent.com/Balackburn/YTLitePlus/AltstoreSource/screenshots/6.png",
|
||||
"https://raw.githubusercontent.com/Balackburn/YTLitePlus/AltstoreSource/screenshots/7.png",
|
||||
"https://raw.githubusercontent.com/Balackburn/YTLitePlus/AltstoreSource/screenshots/8.png"
|
||||
],
|
||||
"appPermissions": {
|
||||
"entitlements": [
|
||||
{
|
||||
"name": "com.apple.security.application-groups"
|
||||
},
|
||||
{
|
||||
"name": "com.apple.developer.associated-domains"
|
||||
},
|
||||
{
|
||||
"name": "com.apple.developer.coremedia.allow-alternate-video-decoder-selection"
|
||||
},
|
||||
{
|
||||
"name": "com.apple.developer.usernotifications.time-sensitive"
|
||||
},
|
||||
{
|
||||
"name": "com.apple.developer.coremedia.allow-alternate-video-decoder-selection"
|
||||
},
|
||||
{
|
||||
"name": "com.apple.developer.usernotifications.time-sensitive"
|
||||
},
|
||||
{
|
||||
"name": "get-task-allow"
|
||||
},
|
||||
{
|
||||
"name": "com.apple.developer.device-information.user-assigned-device-name"
|
||||
},
|
||||
{
|
||||
"name": "com.apple.developer.group-session"
|
||||
},
|
||||
{
|
||||
"name": "keychain-access-groups"
|
||||
},
|
||||
{
|
||||
"name": "com.apple.developer.networking.multicast"
|
||||
},
|
||||
{
|
||||
"name": "aps-environment"
|
||||
},
|
||||
{
|
||||
"name": "com.apple.developer.networking.wifi-info"
|
||||
}
|
||||
],
|
||||
"privacy": [
|
||||
{
|
||||
"name": "AppleMusic",
|
||||
"usageDescription": "YTLitePlus requires access to your Apple Music library."
|
||||
},
|
||||
{
|
||||
"name": "BluetoothPeripheral",
|
||||
"usageDescription": "YTLitePlus requires Bluetooth access to connect with nearby peripherals."
|
||||
},
|
||||
{
|
||||
"name": "Camera",
|
||||
"usageDescription": "YTLitePlus requires access to the camera to capture photos and videos."
|
||||
},
|
||||
{
|
||||
"name": "Contacts",
|
||||
"usageDescription": "YTLitePlus requires access to your contacts to help you share content with your friends."
|
||||
},
|
||||
{
|
||||
"name": "LocalNetwork",
|
||||
"usageDescription": "YTLitePlus requires local network access to connect and communicate with nearby devices."
|
||||
},
|
||||
{
|
||||
"name": "LocationWhenInUse",
|
||||
"usageDescription": "YTLitePlus requires access to your location while using the app to provide personalized recommendations."
|
||||
},
|
||||
{
|
||||
"name": "Microphone",
|
||||
"usageDescription": "YTLitePlus requires access to your microphone to record audio."
|
||||
},
|
||||
{
|
||||
"name": "PhotoLibrary",
|
||||
"usageDescription": "YTLitePlus requires access to your Photo Library to save photos and videos."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
images/image_0.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
images/image_1.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 601 KiB After Width: | Height: | Size: 601 KiB |
|
Before Width: | Height: | Size: 346 KiB After Width: | Height: | Size: 346 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
BIN
images/image_2.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
images/image_3.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
images/image_4.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
images/image_5.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 467 KiB After Width: | Height: | Size: 467 KiB |
822
index.html
Normal file
|
|
@ -1,61 +0,0 @@
|
|||
import json
|
||||
import re
|
||||
import requests
|
||||
|
||||
# Fetch the latest release information from GitHub
|
||||
def fetch_latest_release(repo_url, keyword):
|
||||
api_url = f"https://api.github.com/repos/{repo_url}/releases"
|
||||
headers = {"Accept": "application/vnd.github+json"}
|
||||
response = requests.get(api_url, headers=headers)
|
||||
releases = response.json()
|
||||
|
||||
for release in releases:
|
||||
if keyword in release["name"]:
|
||||
return release
|
||||
|
||||
|
||||
raise ValueError(f"No release found containing the keyword '{keyword}'.")
|
||||
|
||||
# Update the JSON file with the fetched data
|
||||
def remove_tags(text):
|
||||
text = re.sub('<[^<]+?>', '', text) # Remove HTML tags
|
||||
text = re.sub(r'#{1,6}\s?', '', text) # Remove markdown header tags
|
||||
return text
|
||||
|
||||
def update_json_file(json_file, fetched_data):
|
||||
with open(json_file, "r") as file:
|
||||
data = json.load(file)
|
||||
|
||||
app = data["apps"][0]
|
||||
version = re.search(r"(\d+\.\d+\.\d+)", fetched_data["tag_name"]).group(1)
|
||||
app["version"] = version
|
||||
app["versionDate"] = fetched_data["published_at"]
|
||||
|
||||
description = fetched_data["body"]
|
||||
keyword = "YTLitePlus Release Information"
|
||||
if keyword in description:
|
||||
description = description.split(keyword, 1)[1].strip()
|
||||
|
||||
description = remove_tags(description)
|
||||
description = re.sub(r'\*{2}', '', description)
|
||||
description = re.sub(r'-', '•', description)
|
||||
description = re.sub(r'`', '"', description)
|
||||
|
||||
app["versionDescription"] = description
|
||||
app["downloadURL"] = fetched_data["assets"][0]["browser_download_url"]
|
||||
app["size"] = fetched_data["assets"][0]["size"]
|
||||
|
||||
with open(json_file, "w") as file:
|
||||
json.dump(data, file, indent=2)
|
||||
|
||||
# Main function
|
||||
def main():
|
||||
repo_url = "Balackburn/YTLitePlus"
|
||||
json_file = "apps.json"
|
||||
keyword = "YTLitePlus"
|
||||
|
||||
fetched_data = fetch_latest_release(repo_url, keyword)
|
||||
update_json_file(json_file, fetched_data)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||