kone
소미소프트

소미소프트

요즘 애용하고있는 랜덤 파일 선택기

07/07/2025, 06:15:32
유틸
4209 views · 13 likes

이전 거처 멸망 전에 만든 방주가 감당이 안되서 gpt로 프로그램 짜봤는데 생각보다 유용한것 같아서 평소에 받은 은혜를 갚아보기 위해서 올려봄.

세줄요약 있음

실행하면 이런 화면이고, 여기서 방주 주소 추가랑 제거 가능함.


코드

import os
import random
import tkinter as tk
from tkinter import filedialog, messagebox, Listbox, Scrollbar, END, SINGLE
import subprocess
import json
import webbrowser
import re

CONFIG_FILE = "folder_config.json"
ARCHIVE_EXTENSIONS = ('.zip', '.7z', '.rar', '.egg')

class ArchiveFileSelectorApp:
    def __init__(self, root):
        self.root = root
        self.root.title("랜덤 압축 파일 선택기")
        self.folder_list = []

        # Load saved folders
        self.load_folder_list()

        # Frame for folder list and scrollbar
        list_frame = tk.Frame(root)
        list_frame.pack(padx=10, pady=10)

        self.folder_listbox = Listbox(list_frame, selectmode=SINGLE, width=60)
        self.folder_listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

        scrollbar = Scrollbar(list_frame, orient="vertical")
        scrollbar.config(command=self.folder_listbox.yview)
        scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
        self.folder_listbox.config(yscrollcommand=scrollbar.set)

        # Populate listbox
        for folder in self.folder_list:
            self.folder_listbox.insert(END, folder)

        # Frame for buttons
        button_frame = tk.Frame(root)
        button_frame.pack(padx=10, pady=10)

        self.add_button = tk.Button(button_frame, text="폴더 추가", command=self.add_folder)
        self.add_button.grid(row=0, column=0, padx=5)

        self.remove_button = tk.Button(button_frame, text="선택한 폴더 제거", command=self.remove_selected_folder)
        self.remove_button.grid(row=0, column=1, padx=5)

        self.open_button = tk.Button(button_frame, text="랜덤 압축 파일 열기", command=self.open_random_archive)
        self.open_button.grid(row=0, column=2, padx=5)

        # Save folders on close
        self.root.protocol("WM_DELETE_WINDOW", self.on_close)

    def add_folder(self):
        folder = filedialog.askdirectory(title="추가할 폴더 선택")
        if folder and folder not in self.folder_list:
            self.folder_list.append(folder)
            self.folder_listbox.insert(END, folder)

    def remove_selected_folder(self):
        selected = self.folder_listbox.curselection()
        if selected:
            index = selected[0]
            self.folder_listbox.delete(index)
            del self.folder_list[index]

    def open_random_archive(self):
        archive_files = []
        for folder in self.folder_list:
            for dirpath, _, filenames in os.walk(folder):
                for filename in filenames:
                    if filename.lower().endswith(ARCHIVE_EXTENSIONS):
                        full_path = os.path.abspath(os.path.join(dirpath, filename))
                        archive_files.append(full_path)

        if archive_files:
            selected_file = random.choice(archive_files)
            subprocess.run(f'explorer /select,"{selected_file}"', shell=True)

            # Check for RJ or VJ code in filename
            filename = os.path.basename(selected_file)
            match = re.search(r'(RJ|VJ)(\d+)', filename, re.IGNORECASE)
            if match:
                code = match.group(0).upper()
                prefix = code[:2]
                if prefix == 'RJ':
                    url = f'https://www.dlsite.com/maniax/work/=/product_id/{code}.html'
                elif prefix == 'VJ':
                    url = f'https://www.dlsite.com/pro/work/=/product_id/{code}.html'
                webbrowser.open(url)
        else:
            messagebox.showinfo("알림", "선택된 폴더들에서 압축 파일(.zip, .7z, .rar, .egg)을 찾을 수 없습니다.")

    def load_folder_list(self):
        if os.path.exists(CONFIG_FILE):
            try:
                with open(CONFIG_FILE, 'r', encoding='utf-8') as f:
                    self.folder_list = json.load(f)
            except Exception as e:
                print(f"폴더 목록 로드 실패: {e}")
                self.folder_list = []

    def save_folder_list(self):
        try:
            with open(CONFIG_FILE, 'w', encoding='utf-8') as f:
                json.dump(self.folder_list, f, ensure_ascii=False, indent=2)
        except Exception as e:
            print(f"폴더 목록 저장 실패: {e}")

    def on_close(self):
        self.save_folder_list()
        self.root.destroy()

# Run the app
if __name__ == "__main__":
    root = tk.Tk()
    app = ArchiveFileSelectorApp(root)
    root.mainloop()


기능

다중 폴더 선택 가능

지정 폴더 내의 하위 폴더에서도 압축파일 검색 가능

지금 .zip .7z .rar .egg 파일 검색 됨

파일명에 RJ나 VJ 있으면 컴터 기본 브라우저로 DL링크 열어줌


*코드 수정해서 쓸사람은 알아서 수정해 gpt 코딩 잘하더라


젤다

https://kio.ac/c/cwMCZA5AmJQ_b36cgd45Cb


세줄요약

  1. 방주 양이 감당이 안되서 랜덤 선택기 만듦

  2. 쓸사람 써라

  3. 복구 항상 고맙다

13
1 comment
Sign in to comment
07/07/25
이것도 링크 암호화해야 하는지 모르겠네
Sign in to comment
마나카 릴리스 모드 번역
유틸
죽지않아
02/16 11215 6
청아)시니2 하냐 컨텐츠 더 추가해줬으면
유틸
cascastu
02/16 10363 11
[요청복구] Prison Hero 감옥용사 조이플 구동패치
유틸
감비아
02/16 9068 5
SecretFlasher.VoicePack-Plus 마나카 음성모드 개인수정(로우튠 등)
유틸
leedi
02/16 24418 26
GameDB 배포
유틸
심심한개발자
02/15 8782 11
기번 너스콜 선택지 ㅁㅁㅁ로 뜨는 문제 해결 필요한사람 가져가세요
유틸
tyrocsx
02/13 10319 16
[노모패치] RJ274510 이누히메 1.07
유틸
panzer
02/13 16359 27
프린세스 시너지 전용치트
유틸
4HHHH
02/13 9643 11
안돼! 동거 라이프 세이브파일 에디트 (파이썬)
유틸
jghkk9
02/12 8269 2
[노모패치] RJ01302356 리리네와 연금술사
유틸
bubblegum
02/12 11740 9
f95에 올라온 RJ01550550 프린세스 시너지 완전 노모개조파일 있는데
유틸
pd99990
02/12 21728 34
comfyui를 이용해서 만화를 자동채색+검열제거 해보자
유틸
프로베스트캣
02/12 17450 48
시니시스타2 내 취향 가득 들어간 핑챙 자작 모드 (1.2.1 ver)
유틸
cascastu
02/11 22814 85
90일, 복구) 유니티6 번역세트.zip 갱신 26.03.21
유틸
ㅇㅇ
02/10 9376 19
유니티 기계번역 딸각툴
유틸
Ghost
02/10 9124 10
ProjectR v0.7.0.0 무검열 패치(수정)
유틸
choi-good
02/10 13769 20
프린세스 시너지 전용치트
유틸
4HHHH
02/10 11582 10
[요청복구] RJ01453643 [PlumSoftware] 네토라세에 능숙한 야마다씨 (이미지번역)
유틸
류제로
02/09 8209 9
[요청복구] RJ01511074 사쿠라코 네토라레담 타이틀 및 이미지 번역 (3차 수정_찐최종) 2026.02.09 게시물 수정함
유틸
류제로
02/06 19088 18
삼국지8 리메이크 PK 여성화 하렘 (149명 패치) 1.1.0버전용
유틸
크로우
02/05 21465 64
감옥용사 조이플 구동패치
유틸
ssddttj
02/05 8135 3
코캇 버) 프리셋 (모드포함)
유틸
pst0025
02/05 14331 29
[요청복구] [1.10으로 암호화 다시함] [이미지번역](에로스테만) RJ01522194 NTR히로인 화이트스노우
유틸
류제로
02/04 8678 14
모모 크래시 ver.1.60 (26.02.02)
유틸
미스터장
02/04 8404 5
[노모패치만] 여름의 뒤편에서
유틸
미스터장
02/03 14685 30
🔞슬레이 더 스파이어 NSFW 모드 올인원 (5.12 갱신)
유틸
Rasmodia
02/03 46927 112
터널탈출FE 0.18.0a 복호화
유틸
wqddsag
02/03 12113 6
MV 번역 이식 도구 파이썬 코드
유틸
lovesccubus
02/03 11354 5
[DLC만] 세계수의 무녀 ~거리 한복판에서 만지기 무제한 & 에로 트랩으로 갸루 겟츄~ 【H씬 전부해금 DLC】
유틸
미스터장
02/03 16730 46
차라 키우기
유틸
beplnex
02/01 7961 6