kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4325 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
[미번/번역요청] REC 0.5.2.0.2
미번
fjdudhshe
05/02 8823 35
최근 본 농짤중에서 젤 좋았던거
야짤
ynynaagjia
05/02 10487 27
(AI,GIF) [Mikitoon] Hitoyo
영상
ArIso
05/02 24639 141
마키마 & 덴지 (체인소맨)
영상
브레머튼
05/02 20770 128
한운 (원신)
영상
브레머튼
05/02 10493 75
꺄아아악 치한이야!!!
야짤
gpsel157
05/02 20753 45
[수간] 카테리나 & 머트 (킹덤컴2)
영상
브레머튼
05/02 16253 81
[보이스코믹][구매보급][한] 치한박멸 운동
소리
책먹는망아지
05/02 15770 107
[구매보급/도트/이지번역] RJ01584572 여동생 H –짧은 하루– Ver1.0.2
번역
사과체스
05/02 64581 258
[요청복구] as109 수란아 水蘭児凌辱 모음집
영상
transfiction
05/02 17549 73
[구매보급, 번역요청] RJ01596048 蟲ドリーム 寝落ちYtuberとバズの夜
미번
sidewinder
05/02 20114 29
[AI번역][RJ251926] TS마법소녀 나오!! 2nd (패치파일만)
번역
호빵할배
05/02 24256 99
[버전업] [구매보급] RJ01214867 둘만의 생활_ver1.67 (26.05.01)
미번
gkqisq
05/02 7476 47
모리노 린제 순애
야짤
kifbodo245
05/02 7715 33
[chalies] 이 자식이! 2 (냥코대전쟁 동인지)
동인
ashgray
05/02 11781 54
게임하면서 섹스도 하는 이본 (엔드필드)
영상
브레머튼
05/02 18723 124
AI+NTR) 교미를 잘하는 코미양
야짤
177523
05/02 9279 30
[SnkGirlRyona] 무겐 (M.U.G.E.N./mugen) 루갈 vs. 모음집
영상
Kai
05/02 17384 86
[요청복구] [한국어 자막판] 홀록 사미도리 마법소녀 시리즈 [총 5편]
소리
9ya
05/02 14063 66
[smasochist] SM Diary3 557-577
동인
ㅇㅇ
05/02 13020 23
[さるら] 수치의 목욕탕중계
동인
bender
05/02 21529 74
[요청복구] RJ313210 전생했더니 서큐버스였던 건
복구
toung
05/02 21545 57
믿을 건 미국 뿐이야
일반
starrr
05/02 6868 78
[구매보급][번역요청][청아?] sdt 서클 4개 구매보급 (문제시 삭제)
미번
daxk9517
05/02 8118 32
AI, 셀레스포니아) 시민들 사이 지나가는 장면
야짤
miso5
05/02 16176 74
[요청복구] Br@n,버) 노엘 단장 시리즈 모음
영상
비밀봉투
05/02 20227 120
[구매보급] 영상 2개 RJ01280079, RJ01518050
영상
어린이사랑꾼데미갓
05/02 19076 122
[구매보급,한패는 번역에 1.0]LOVING DEAD GIRL 러빙・데드・걸 v1.0.2
미번
fuch1324
05/02 13860 102
[번역요청] LilyChanRoshutsu AlphaDemo v0.3 체험판
미번
zoo5191
05/02 8422 22
[AI번역]RJ01473408 능력 있는 후배 아오이짱! v1.0.2
번역
coupon
05/02 50370 242