mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-30 12:23:58 -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
	 Bryce Hackel
					Bryce Hackel