kone
소미소프트

소미소프트

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

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

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

세줄요약 있음

1

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


코드

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
아크메시아 기번 중... 엠툴 번역 소식들음(빙 번역 무료)
일반
움떡알림몬
05/25 2046 2
마나카 버그 제보
피드백
ㅇㅇ
05/25 3371 2
[복구요청] RJ01378937 거유 자매( 巨乳姉妹)
요청
lehulehu
05/25 2563 1
그리자이아 시리즈
질문
Y.j
05/25 3181 0
[Katsura airi] 들끓던 무렵에 동창회편
동인
김덕배
05/25 22460 115
야겜 뭔지아는사람
질문
hwbdbbx
05/25 1403 0
아크메시아 CG언팩
야짤
브라더스
05/25 3735 6
아크메시아 기번중 찐빠 나서 gemini에게 물어봄
일반
움떡알림몬
05/25 2016 1
간만에 오니 ntr 게임이 하고 싶어지는군
일반
서울우유전용목장
05/25 1325 0
빗소리로 가득차는 밤 질문
질문
rlawjddms
05/25 2060 0
[복구요청] [RJ01557970] [ベルゼブブ] 너스콜 경비원 본편
요청
누궁가
05/25 1978 0
키리키로이드질문입니다
질문
giiif
05/25 1547 0
포레스티아 여신 공물 어떤게 점수가 제일높아요?
질문
moka1
05/25 1456 0
이거 폰트는 왜 잘리는 거임?
질문
ㅇㅇ
05/25 2511 1
케모노 사이트가 살아는있는데
일반
tlrekddldydwk
05/25 2425 -2
ai번역 고전) 세피리아 하드2
동인
1Q2W3E4R
05/25 8016 35
군청의 마녀 원래 이런 화면인가요?
질문
tmddl
05/25 3277 -2
복구요청 [구매보급] [버전업] RJ01373814 메시아 오브 로리타 ~모험가와 음문의 소녀~ 1.09 (26.03.13 )(26.05.17수정)(재복구)
요청
midiair
05/25 1827 0
[enari][ntr][ai번]성행위 실습을 병결했더니 페어의 그녀가 마음대로 유학생과 짜여져 외국인 거근으로 파코 되어 버린 이야기1~4
동인
latte
05/25 27424 117
[복구요청] RJ223032 // 로간12 ~앨리스들의 질과감촉~
요청
타르
05/25 1673 1
속보)복수의야기리 또연기
정보
sorbe123
05/25 4183 11
[구매보급]섹서로이드는 전기 신부의 꿈을 꾸는가?~외 2개
소리
이름뭐하지
05/24 8207 48
[미번][번역요청](ntr) Rogue princess0.401
미번
2sports
05/24 9767 12
호감도 게임
질문
qkdqkddl26
05/24 2259 -2
청아,빵) pori (Mokusheep) 작가 신작 (구작)
영상
교미의요정
05/24 28984 129
게임 추천 부탁드립니다
질문
mskdkkd
05/24 2201 0
럽코를 찾습니다...
질문
totolo312
05/24 2202 0
[복구요청] RJ257127 에리와 7번째의 마법
요청
als149
05/24 1820 2
[복구] 란스 (RANCE) 시리즈
복구
스삐키뚜땨
05/24 22437 112
임페리얼 나이트 진행이 막혔는데 도와주세요.
질문
raima
05/24 2876 0