kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4228 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
조이플 오류 및 패치 + 유틸
유틸
yeppi
03/04 12024 34
야식메뉴판 Plus 만들어왔음 - 게임 방주 관리 데스크톱 앱
유틸
qqoro
03/04 15059 77
이터넘 0.9 옛날 버전 브금 모드
유틸
외않되
03/04 3855 5
RJ01389782 비밀 노출 마나카 커스텀 미션 번역2
유틸
ㅇㅇ
03/03 14264 18
렌파이 전용 언락커 ( 갤러리 언락가능 )
유틸
하이바라
03/03 5047 12
ai번역)RJ01389782 비밀 노출 마나카 모드와 미션 여러 가지
유틸
kkkktrrr
03/02 16621 45
지난번에 만든 (케모노,히토미,X,유튜브 등등 downloader gallery-dl, yt-dlp 활용) 다운로더 GUI 버전으로 만들어봄
유틸
noname
03/01 15983 56
하츠네 미쿠 (코이카츠) 프리셋 공유
유틸
pst0025
02/28 13744 32
유니티 클뜯 assetstudio 후속 animestudio
유틸
xcandle
02/28 8745 19
Sizer.7z
유틸
ㅇㅇ
02/27 8194 13
RJ01279319 네토라레 히로인 백설 1.1 백로그등 편의성 개조 파일(패치파일만)
유틸
apelzl011
02/25 6784 13
Digital Contents Library Tool 1.1.7.2 (구 DLsite 퀵 뷰어)
유틸
ll-lllllllll
02/24 92335 70
시니시스타2 1.2.1 폭유 모드
유틸
무슨소리니
02/24 19105 39
어떤 여자 상사의 비밀 마사지 가게 ver.1.0.6 DRM 해제 실행파일
유틸
미스터장
02/23 10021 11
감금된 채 딥키스 여성주도~페라 포함~ 노모패치만
유틸
미스터장
02/23 7529 6
MZ 엔진 index 치트 유틸
유틸
전적노트
02/22 7436 4
[MySonar] 소수를 위한 오디오 플레이어
유틸
hustlyn
02/22 16965 77
RJ01389782 비밀 노출 마나카 커스텀 미션 번역
유틸
ㅇㅇ
02/21 13165 25
마메32 신버전
유틸
a123456789
02/21 40128 191
RJ 미리보기 서포트 (Tempermonkey 기반)
유틸
sss-com
02/21 7920 14
복호화 밑 품번 링크 생성기 사이트
유틸
vOwOv
02/20 9263 11
nursecall 치트
유틸
nekoplug
02/20 6936 5
26.04.18, 90일, 자동 줄바꿈) RJ01540816 ver.1.0.0 js (2).7z
유틸
ㅇㅇ
02/19 22591 13
RJ01438167 여동생과 함께살자 노모 Bepinex 파일
유틸
joaja
02/18 16066 24
시니시스타2 1.2.1 Slit(가터벨트) 아웃핏 노모 모드
유틸
tongpa
02/18 17602 12
수정 Agent17 0.26.6 cheat mod 버전+ 안티치트,추가치트
유틸
a123456789
02/17 15439 10
GameDB 2
유틸
심심한개발자
02/17 13943 8
Agent17 겨울동화 삽 강화 버그 픽스
유틸
AKGH
02/17 16442 13
[후타]pernio의 후타나리 시리즈 노모패치 모음
유틸
레가토
02/17 11860 12
렌파이 공용 치트엔진+agent17 치트 쓰는 법
유틸
high-hope
02/16 27403 38