mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-29 20:10:41 -04:00 
			
		
		
		
	Add keys to Copy Settings
This commit is contained in:
		| @@ -5,6 +5,7 @@ | ||||
| #import "../Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h" | ||||
| #import "../Tweaks/YouTubeHeader/YTUIUtils.h" | ||||
| #import "../Tweaks/YouTubeHeader/YTSettingsPickerViewController.h" | ||||
| #import "SettingsKeys.h" | ||||
| // #import "AppIconOptionsController.h" | ||||
|  | ||||
| // Basic switch item | ||||
| @@ -47,17 +48,6 @@ static int appVersionSpoofer() { | ||||
|  | ||||
| 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 | ||||
| static const NSInteger YTLitePlusSection = 788; | ||||
| static const NSInteger YTLiteSection = 789; | ||||
| @@ -115,6 +105,7 @@ static const NSInteger YTLiteSection = 789; | ||||
|         }]; | ||||
|     [sectionItems addObject:main]; | ||||
|  | ||||
| # pragma mark - Copy and Paste Settings | ||||
|     YTSettingsSectionItem *copySettings = [%c(YTSettingsSectionItem) | ||||
|         itemWithTitle:LOC(@"COPY_SETTINGS") | ||||
|         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 | ||||
|                 NSURL *tempFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"exported_settings.txt"]]; | ||||
|                 NSMutableString *settingsString = [NSMutableString string]; | ||||
|                 for (NSString *key in copyKeys) { | ||||
|                 for (NSString *key in NSUserDefaultsCopyKeys) { | ||||
|                     id value = [[NSUserDefaults standardUserDefaults] objectForKey:key]; | ||||
|                     if (value) { | ||||
|                         [settingsString appendFormat:@"%@: %@\n", key, value]; | ||||
| @@ -140,7 +131,7 @@ static const NSInteger YTLiteSection = 789; | ||||
|                 // Copy Settings functionality (DEFAULT - Copies to Clipboard) | ||||
|                 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; | ||||
|                 NSMutableString *settingsString = [NSMutableString string]; | ||||
|                 for (NSString *key in copyKeys) { | ||||
|                 for (NSString *key in NSUserDefaultsCopyKeys) { | ||||
|                     if ([userDefaults objectForKey:key]) { | ||||
|                         NSString *value = [userDefaults objectForKey:key]; | ||||
|                         [settingsString appendFormat:@"%@: %@\n", key, value]; | ||||
| @@ -194,6 +185,7 @@ static const NSInteger YTLiteSection = 789; | ||||
|     ]; | ||||
|     [sectionItems addObject:pasteSettings]; | ||||
|  | ||||
| # pragma mark - Video Player | ||||
|     YTSettingsSectionItem *videoPlayer = [%c(YTSettingsSectionItem) | ||||
|         itemWithTitle:LOC(@"VIDEO_PLAYER") | ||||
|         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