Advertisement
egor230

Create link destop

Mar 2nd, 2025 (edited)
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.92 KB | Source Code | 0 0
  1. import os, subprocess, sys, re
  2.  
  3.  
  4. def find_most_similar_image(image_list, search_name):
  5.  """
  6. Ищет наиболее похожую картинку в списке по заданному имени с помощью регулярных выражений.
  7.  
  8. Args:
  9.     image_list (list): Список имен файлов картинок.
  10.     search_name (str): Имя для поиска (например, "splintercell3").
  11.  
  12. Returns:
  13.     str or None: Имя наиболее подходящего файла или None, если ничего не найдено.
  14. """
  15.  if not image_list or not search_name:
  16.   return None
  17.  
  18.  # Экранируем входное имя для безопасного использования в регулярке
  19.  search_pattern = re.escape(search_name.lower())
  20.  
  21.  best_match = None
  22.  best_score = float('inf')  # Чем меньше "лишнего" текста, тем лучше
  23.  
  24.  for image in image_list:
  25.   # Ищем совпадение в имени файла (игнорируем регистр)
  26.   image_lower = image.lower()
  27.   match = re.search(search_pattern, image_lower)
  28.  
  29.   if match:
  30.    # Вычисляем "лишний" текст (до и после совпадения)
  31.    extra_chars = len(image_lower) - len(search_name)
  32.  
  33.    # Если совпадение точное или с минимальным добавлением, обновляем лучший результат
  34.    if extra_chars < best_score:
  35.     best_score = extra_chars
  36.     best_match = image
  37.  return best_match
  38.  
  39. def get_files_with_extensions(folder_path):
  40.  image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp']  # список расширений изображений
  41.  image_files = []  # список для хранения имен изображений
  42.  for root, dirs, files in os.walk(folder_path):
  43.   for file in files:
  44.    # print(file)
  45.    _, ext = os.path.splitext(file)
  46.    if ext.lower() in image_extensions:
  47.     image_files.append(file)
  48.  return image_files
  49. def get_paths_file():  #  Получаем аргументы командной строки
  50.   num_args = len(sys.argv)# Получаем количество аргументов
  51.   url = ""
  52.   for arg in sys.argv[1:]:
  53.     url += str(arg) + " "# Объединяем аргументы через цикл for
  54.   # url="/mnt/807EB5FA7EB5E954/games/Splinter Cell - Chaos Theory/System/splintercell3.sh"
  55.   full_path = url.strip()
  56.   directory = os.path.dirname(full_path)
  57.   filename = os.path.basename(full_path)
  58.   if '.' in filename:
  59.     filename_without_extension = filename[:filename.rfind('.')]   # extension = filename[filename.rfind('.') + 1:]
  60.   else:
  61.     filename_without_extension = filename    # extension = None
  62.   return directory, filename_without_extension, filename, full_path
  63.  
  64. directory, filename_without_extension, filename, full_path = get_paths_file()
  65. image_list = get_files_with_extensions(directory)
  66. image = filename_without_extension
  67. image = find_most_similar_image(image_list, image)
  68. image = str(os.path.join(directory, image))
  69. # image="/mnt/807EB5FA7EB5E954/games/Splinter Cell - Chaos Theory/System/splintercell3logo.bmp"
  70. show_list_id = '''
  71. [Desktop Entry]
  72. Name={0}
  73. Exec=xdg-open "{1}"
  74. Icon="{2}"
  75. Terminal=false
  76. Type=Application
  77. exit; '''.format(filename_without_extension,full_path,image)  # показать список устройств в терминале
  78. file=str(os.path.join(directory, filename_without_extension))
  79. print(file)
  80. with open(file, 'w') as f:    # Записываем текст в файл
  81.   f.write(show_list_id)
  82.  
  83. show_list_id = '''#!/bin/bash\n
  84. chmod +x "{0}"\n'''.format( file)
  85. subprocess.run(['bash', '-c', show_list_id])
  86.  
  87.  
  88.  
  89.  
  90.  
  91. # url = url.strip()# os.chdir(url)# Убираем лишний пробел в конце строки
  92. # directory = os.path.dirname(url) # Получение имени файла
  93. # filename = os.path.basename(url)
  94. #
  95. # if '.' in filename:  # Удаление расширения
  96. #  filename_without_extension = filename[:filename.rfind('.')]#  os.remove(os.path.join(url, filename))
  97. # else:
  98. #   filename_without_extension = filename
  99.  
  100. # file=os.path.join(directory, filename_without_extension).sh
  101.  
  102. # t = "{0}\n{1}\n{2}\n{3}".format(url, directory, filename, filename_without_extension)
  103. #
  104. #
  105. # file_path = '/home/egor/Рабочий стол/1.txt'
  106. # with open(file_path, 'w') as file:
  107. #   # Записываем текст в файл
  108. #  file.write(t)
  109. #   print("У файла нет расширения")
  110. # script = ("#!/bin/bash\n"
  111. #           "cd \"{0}\";\n"
  112. #           "./{1};\n"
  113. #           "exit;".format(directory,filename))
  114. #
  115. #
  116. # # print(parent_dir)
  117. # # print(script)
  118. # parent_dir=(str(directory+"/"+filename)+".sh")
  119. # # parent_dir = parent_dir.replace(' ', '\ ')  # Замена пробелов на экранированные
  120. # print(parent_dir)
  121. # print(url)
  122. # with open(parent_dir,'w') as f:
  123. #    f.write(script)
  124.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement