mirror of
https://github.com/SoPat712/YTLitePlus.git
synced 2025-08-22 02:38:45 -04:00
Add keys to Copy Settings
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
#import "../Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h"
|
#import "../Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h"
|
||||||
#import "../Tweaks/YouTubeHeader/YTUIUtils.h"
|
#import "../Tweaks/YouTubeHeader/YTUIUtils.h"
|
||||||
#import "../Tweaks/YouTubeHeader/YTSettingsPickerViewController.h"
|
#import "../Tweaks/YouTubeHeader/YTSettingsPickerViewController.h"
|
||||||
|
#import "SettingsKeys.h"
|
||||||
// #import "AppIconOptionsController.h"
|
// #import "AppIconOptionsController.h"
|
||||||
|
|
||||||
// Basic switch item
|
// Basic switch item
|
||||||
@@ -47,17 +48,6 @@ static int appVersionSpoofer() {
|
|||||||
|
|
||||||
extern NSBundle *YTLitePlusBundle();
|
extern NSBundle *YTLitePlusBundle();
|
||||||
|
|
||||||
// Keys for "Copy Settings" button (for: YTLitePlus)
|
|
||||||
NSArray *copyKeys = @[
|
|
||||||
/* MAIN Controls Keys 1/2 */ @"enableShareButton_enabled", @"enableSaveToButton_enabled", @"hideVideoPlayerShadowOverlayButtons_enabled", @"hideRightPanel_enabled", @"hideHeatwaves_enabled", @"disableAmbientModePortrait_enabled",
|
|
||||||
/* MAIN Controls Keys 2/2 */ @"disableAmbientModeFullscreen_enabled", @"fullscreenToTheRight_enabled", @"seekAnywhere_enabled", @"YTTapToSeek_enabled", @"disablePullToFull_enabled", @"alwaysShowRemainingTime_enabled", @"disableRemainingTime_enabled", @"disableEngagementOverlay_enabled",
|
|
||||||
/* MAIN App Overlay Keys 1/2 */ @"disableAccountSection_enabled", @"disableAutoplaySection_enabled", @"disableTryNewFeaturesSection_enabled", @"disableVideoQualityPreferencesSection_enabled", @"disableNotificationsSection_enabled",
|
|
||||||
/* MAIN App Overlay Keys 2/2 */ @"disableManageAllHistorySection_enabled", @"disableYourDataInYouTubeSection_enabled", @"disablePrivacySection_enabled", @"disableLiveChatSection_enabled",
|
|
||||||
/* MAIN Playback Keys */ @"inline_muted_playback_enabled",
|
|
||||||
/* MAIN Misc Keys */ @"newSettingsUI_enabled", @"ytStartupAnimation_enabled", @"ytNoModernUI_enabled", @"iPadLayout_enabled", @"iPhoneLayout_enabled", @"castConfirm_enabled", @"bigYTMiniPlayer_enabled", @"hideCastButton_enabled", @"hideSponsorBlockButton_enabled", @"hideHomeTab_enabled", @"fixCasting_enabled", @"flex_enabled", @"enableVersionSpoofer_enabled",
|
|
||||||
/* TWEAK YTUHD Keys */ @"EnableVP9", @"AllVP9"
|
|
||||||
];
|
|
||||||
|
|
||||||
// Add both YTLite and YTLitePlus to YouGroupSettings
|
// Add both YTLite and YTLitePlus to YouGroupSettings
|
||||||
static const NSInteger YTLitePlusSection = 788;
|
static const NSInteger YTLitePlusSection = 788;
|
||||||
static const NSInteger YTLiteSection = 789;
|
static const NSInteger YTLiteSection = 789;
|
||||||
@@ -115,6 +105,7 @@ static const NSInteger YTLiteSection = 789;
|
|||||||
}];
|
}];
|
||||||
[sectionItems addObject:main];
|
[sectionItems addObject:main];
|
||||||
|
|
||||||
|
# pragma mark - Copy and Paste Settings
|
||||||
YTSettingsSectionItem *copySettings = [%c(YTSettingsSectionItem)
|
YTSettingsSectionItem *copySettings = [%c(YTSettingsSectionItem)
|
||||||
itemWithTitle:LOC(@"COPY_SETTINGS")
|
itemWithTitle:LOC(@"COPY_SETTINGS")
|
||||||
titleDescription:IS_ENABLED(@"switchCopyandPasteFunctionality_enabled") ? LOC(@"COPY_SETTINGS_DESC_2") : LOC(@"COPY_SETTINGS_DESC")
|
titleDescription:IS_ENABLED(@"switchCopyandPasteFunctionality_enabled") ? LOC(@"COPY_SETTINGS_DESC_2") : LOC(@"COPY_SETTINGS_DESC")
|
||||||
@@ -125,7 +116,7 @@ static const NSInteger YTLiteSection = 789;
|
|||||||
// Export Settings functionality
|
// Export Settings functionality
|
||||||
NSURL *tempFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"exported_settings.txt"]];
|
NSURL *tempFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"exported_settings.txt"]];
|
||||||
NSMutableString *settingsString = [NSMutableString string];
|
NSMutableString *settingsString = [NSMutableString string];
|
||||||
for (NSString *key in copyKeys) {
|
for (NSString *key in NSUserDefaultsCopyKeys) {
|
||||||
id value = [[NSUserDefaults standardUserDefaults] objectForKey:key];
|
id value = [[NSUserDefaults standardUserDefaults] objectForKey:key];
|
||||||
if (value) {
|
if (value) {
|
||||||
[settingsString appendFormat:@"%@: %@\n", key, value];
|
[settingsString appendFormat:@"%@: %@\n", key, value];
|
||||||
@@ -140,7 +131,7 @@ static const NSInteger YTLiteSection = 789;
|
|||||||
// Copy Settings functionality (DEFAULT - Copies to Clipboard)
|
// Copy Settings functionality (DEFAULT - Copies to Clipboard)
|
||||||
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
|
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
|
||||||
NSMutableString *settingsString = [NSMutableString string];
|
NSMutableString *settingsString = [NSMutableString string];
|
||||||
for (NSString *key in copyKeys) {
|
for (NSString *key in NSUserDefaultsCopyKeys) {
|
||||||
if ([userDefaults objectForKey:key]) {
|
if ([userDefaults objectForKey:key]) {
|
||||||
NSString *value = [userDefaults objectForKey:key];
|
NSString *value = [userDefaults objectForKey:key];
|
||||||
[settingsString appendFormat:@"%@: %@\n", key, value];
|
[settingsString appendFormat:@"%@: %@\n", key, value];
|
||||||
@@ -194,6 +185,7 @@ static const NSInteger YTLiteSection = 789;
|
|||||||
];
|
];
|
||||||
[sectionItems addObject:pasteSettings];
|
[sectionItems addObject:pasteSettings];
|
||||||
|
|
||||||
|
# pragma mark - Video Player
|
||||||
YTSettingsSectionItem *videoPlayer = [%c(YTSettingsSectionItem)
|
YTSettingsSectionItem *videoPlayer = [%c(YTSettingsSectionItem)
|
||||||
itemWithTitle:LOC(@"VIDEO_PLAYER")
|
itemWithTitle:LOC(@"VIDEO_PLAYER")
|
||||||
titleDescription:LOC(@"VIDEO_PLAYER_DESC")
|
titleDescription:LOC(@"VIDEO_PLAYER_DESC")
|
||||||
|
42
Source/SettingsKeys.h
Normal file
42
Source/SettingsKeys.h
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
#import "../YTLitePlus.h"
|
||||||
|
|
||||||
|
// Keys for "Copy Settings" button (for: YTLitePlus)
|
||||||
|
// In alphabetical order for tweaks after YTLitePlus
|
||||||
|
NSArray *NSUserDefaultsCopyKeys = @[
|
||||||
|
// YTLitePlus - gathered using get_keys.py
|
||||||
|
@"YTTapToSeek_enabled", @"alwaysShowRemainingTime_enabled", @"bigYTMiniPlayer_enabled", @"castConfirm_enabled",
|
||||||
|
@"disableAccountSection_enabled", @"disableAmbientModeFullscreen_enabled",
|
||||||
|
@"disableAmbientModePortrait_enabled", @"disableAutoplaySection_enabled", @"disableCollapseButton_enabled",
|
||||||
|
@"disableEngagementOverlay_enabled", @"disableLiveChatSection_enabled",
|
||||||
|
@"disableManageAllHistorySection_enabled", @"disableNotificationsSection_enabled",
|
||||||
|
@"disablePrivacySection_enabled", @"disablePullToFull_enabled", @"disableRemainingTime_enabled",
|
||||||
|
@"disableTryNewFeaturesSection_enabled", @"disableVideoQualityPreferencesSection_enabled",
|
||||||
|
@"disableYourDataInYouTubeSection_enabled", @"enableSaveToButton_enabled", @"enableShareButton_enabled",
|
||||||
|
@"enableVersionSpoofer_enabled", @"fixCasting_enabled", @"flex_enabled", @"fullscreenToTheRight_enabled",
|
||||||
|
@"hideAutoplayMiniPreview_enabled", @"hideCastButton_enabled", @"hideHUD_enabled", @"hideHeatwaves_enabled",
|
||||||
|
@"hideHomeTab_enabled", @"hidePreviewCommentSection_enabled", @"hideRightPanel_enabled",
|
||||||
|
@"hideSpeedToast_enabled", @"hideSponsorBlockButton_enabled", @"hideVideoPlayerShadowOverlayButtons_enabled",
|
||||||
|
@"iPadLayout_enabled", @"iPhoneLayout_enabled", @"inline_muted_playback_enabled", @"lowContrastMode_enabled",
|
||||||
|
@"newSettingsUI_enabled", @"oledKeyBoard_enabled", @"playerGestures_enabled", @"seekAnywhere_enabled",
|
||||||
|
@"switchCopyandPasteFunctionality_enabled", @"ytNoModernUI_enabled", @"ytStartupAnimation_enabled",
|
||||||
|
// DEMC - https://github.com/therealFoxster/DontEatMyContent/blob/master/Tweak.h
|
||||||
|
@"DEMC_enabled", @"DEMC_colorViewsEnabled", @"DEMC_safeAreaConstant", @"DEMC_disableAmbientMode",
|
||||||
|
@"DEMC_limitZoomToFill", @"DEMC_enableForAllVideos",
|
||||||
|
// iSponsorBlock cannot be exported using this method - it is also being removed in v5
|
||||||
|
// Return-YouTube-Dislike - https://github.com/PoomSmart/Return-YouTube-Dislikes/blob/main/TweakSettings.h
|
||||||
|
@"RYD-ENABLED", @"RYD-VOTE-SUBMISSION", @"RYD-EXACT-LIKE-NUMBER", @"RYD-EXACT-NUMBER",
|
||||||
|
// All YTVideoOverlay Tweaks - https://github.com/PoomSmart/YTVideoOverlay/blob/0fc6d29d1aa9e75f8c13d675daec9365f753d45e/Tweak.x#L28C1-L41C84
|
||||||
|
@"YTVideoOverlay-YouLoop-Enabled", @"YTVideoOverlay-YouTimeStamp-Enabled", @"YTVideoOverlay-YouMute-Enabled",
|
||||||
|
@"YTVideoOverlay-YouQuality-Enabled", @"YTVideoOverlay-YouLoop-Position", @"YTVideoOverlay-YouTimeStamp-Position",
|
||||||
|
@"YTVideoOverlay-YouMute-Position", @"YTVideoOverlay-YouQuality-Position",
|
||||||
|
// YouPiP - https://github.com/PoomSmart/YouPiP/blob/main/Header.h
|
||||||
|
@"YouPiPPosition", @"CompatibilityModeKey", @"PiPActivationMethodKey", @"PiPActivationMethod2Key",
|
||||||
|
@"NoMiniPlayerPiPKey", @"NonBackgroundableKey",
|
||||||
|
// YTABConfig cannot be reasonably exported using this method
|
||||||
|
// YTHoldForSpeed will be removed in v5
|
||||||
|
// YouTube Plus / YTLite cannot be exported using this method
|
||||||
|
// YTUHD - https://github.com/PoomSmart/YTUHD/blob/master/Header.h
|
||||||
|
@"EnableVP9", @"AllVP9",
|
||||||
|
// Useful YouTube Keys
|
||||||
|
@"inline_muted_playback_enabled",
|
||||||
|
];
|
96
Source/get_keys.py
Normal file
96
Source/get_keys.py
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
import re
|
||||||
|
import os
|
||||||
|
|
||||||
|
def extract_values_from_file(file_path):
|
||||||
|
"""
|
||||||
|
Extracts keys that match the pattern @\"<some_text>_enabled\" from the given file.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
file_path (str): The path to the file to be searched.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
list: A list of matching keys found in the file.
|
||||||
|
"""
|
||||||
|
# Define the regex pattern to match the strings that resemble the given examples
|
||||||
|
pattern = r'@\"[a-zA-Z0-9_]+_enabled\"'
|
||||||
|
matches = []
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Read the content of the file
|
||||||
|
with open(file_path, 'r') as file:
|
||||||
|
file_content = file.read()
|
||||||
|
|
||||||
|
# Find all matches
|
||||||
|
matches = re.findall(pattern, file_content)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error reading {file_path}: {e}")
|
||||||
|
|
||||||
|
return matches
|
||||||
|
|
||||||
|
def format_output(keys):
|
||||||
|
"""
|
||||||
|
Formats the keys with indentation and line breaks if the segment exceeds 120 characters (116 excluding indentation).
|
||||||
|
|
||||||
|
Args:
|
||||||
|
keys (list): The list of keys to be formatted.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: A formatted string with the keys.
|
||||||
|
"""
|
||||||
|
indent = " " * 4
|
||||||
|
line_length_limit = 116 # Limit excluding indentation
|
||||||
|
current_line = indent
|
||||||
|
formatted_output = ""
|
||||||
|
|
||||||
|
for key in keys:
|
||||||
|
# Check if adding the next key would exceed the line length limit
|
||||||
|
if len(current_line) + len(key) + 2 > line_length_limit: # +2 accounts for the comma and space
|
||||||
|
# Add the current line to the formatted output and start a new line
|
||||||
|
formatted_output += current_line.rstrip(", ") + ",\n"
|
||||||
|
current_line = indent # Start a new indented line
|
||||||
|
|
||||||
|
# Add the key to the current line
|
||||||
|
current_line += key + ", "
|
||||||
|
|
||||||
|
# Add the last line to the output
|
||||||
|
formatted_output += current_line.rstrip(", ") # Remove trailing comma and space from the final line
|
||||||
|
return formatted_output
|
||||||
|
|
||||||
|
def find_and_extract_keys():
|
||||||
|
"""
|
||||||
|
Recursively searches for .xm and .h files in the parent directory and extracts keys
|
||||||
|
that match the pattern @\"<some_text>_enabled\". The matching keys are then printed
|
||||||
|
with indentation and line breaks if the line exceeds 120 characters.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
1. Place this script in the desired directory.
|
||||||
|
2. Run the script with the command: python extract_keys.py
|
||||||
|
3. The script will search for all .xm and .h files in the parent directory and
|
||||||
|
print any matching keys it finds.
|
||||||
|
|
||||||
|
Note:
|
||||||
|
- The script searches the directory where it is located (the parent directory).
|
||||||
|
- It only looks for files with extensions .xm and .h.
|
||||||
|
"""
|
||||||
|
# Get the parent directory
|
||||||
|
parent_directory = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
# Store the found keys
|
||||||
|
found_keys = set() # Use a set to automatically remove duplicates
|
||||||
|
|
||||||
|
# Walk through the parent directory and find all .xm and .h files
|
||||||
|
for root, dirs, files in os.walk(parent_directory):
|
||||||
|
for file in files:
|
||||||
|
if file.endswith(('.xm', '.h')):
|
||||||
|
file_path = os.path.join(root, file)
|
||||||
|
found_keys.update(extract_values_from_file(file_path))
|
||||||
|
|
||||||
|
# Print the found keys with formatting
|
||||||
|
if found_keys:
|
||||||
|
sorted_keys = sorted(found_keys)
|
||||||
|
print(format_output(sorted_keys))
|
||||||
|
else:
|
||||||
|
print("No keys found.")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
find_and_extract_keys()
|
Reference in New Issue
Block a user