import re def extract_regex_from_js(js_code): pattern1 = r'BypassedByBloggerPemula\((.*?),' matches1 = re.findall(pattern1, js_code) matches1 = [match.strip('/') for match in matches1] pattern2 = r"BloggerPemula\('([^']+)'," matches2 = re.findall(pattern2, js_code) #matches2 = ['/' + s + '/' for s in matches2] pattern3 = r"RemoveBp\('([^']+)'," matches3 = re.findall(pattern3, js_code) pattern4 = r'case \'(.*?)\':' matches4 = re.findall(pattern4, js_code) pattern5 = r"h\.href\.includes\('(.*?)'\)" matches5 = re.findall(pattern5, js_code) return matches1+matches2+matches3+matches4+matches5 def regex_to_include_line(regex): #regex = regex.strip("/") #Use @include for more complex regex if any(char in regex for char in ['|', '(', ')', '*']): regex = '(' + regex + ')' include_line = "// @include /^(https?:\/\/)(.+)?" + regex + "(\/.*)/" include_line = include_line.replace( "\.*)(\/.*)/", "\.*)/" ) #clean excess in the regex #Use @match for simpler regex else: include_line = '// @match *://*.' + regex + '/*' return include_line def generate_include_lines(regex_list): include_lines = [] for regex in regex_list: include_line = regex_to_include_line(regex) include_lines.append(include_line) return include_lines def write_to_file(filename, lines): with open(filename, 'w', encoding='utf-8') as file: for line in lines: file.write(line + '\n') print(f"OK: Generated {filename}") def compile_and_print(regex_strings): #for regex_string in regex_strings: print(regex_string) write_to_file('supported_sites.txt', regex_strings) include_lines = generate_include_lines(regex_strings) print(f"OK: Generated {len(include_lines)} include lines.") #for line in include_lines: print(line) write_to_file('includes.txt', include_lines) def main(): file_path = 'untouched_Bypass_All_Shortlinks.user.js' try: with open(file_path, 'r', encoding='utf-8') as file: js_code = file.read() regex_strings = extract_regex_from_js(js_code) # remove short domains (errors) regex_strings = [s for s in regex_strings if "." in s and len(s) >= 5] # remove domains with blocked words blocked_words_for_includes = [ "google", "youtube" #youtube is for redirecting shorts, but I remove it to avoid people worrying ] regex_strings = [s for s in regex_strings if not any(word in s for word in blocked_words_for_includes)] compile_and_print(regex_strings) except FileNotFoundError: print(f"Error: File '{file_path}' not found.") except Exception as e: print(f"An error occurred: {e}") if __name__ == "__main__": main()