kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4322 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
집가서 던브 창고정리나 해줘야지..
일반
fusbriwidhei32
05/19 4456 0
스포)던브하는 도중 살짝 빡쳤었는데
일반
느아아앗
05/19 2739 0
ballonstranslator + gemma4모듈 / 순차처리 망가 번역기
정보
sexe1
05/19 5969 29
존재감 여동생 언제 업뎃하는지 볼려고 dl 댓글 보는데 민심 씹창이네
일반
pajama
05/19 3156 0
[AI 번역] 저속한 몽상 (Vulgar Reverie) [V0.20]
번역
ftzoa
05/19 50684 186
시퀄 시리즈도 재밌음?
질문
arknight
05/19 2064 1
[복구 요청] Ruled by Rule 손번역 1.2.5 개조판 1.0
요청
dayanghansicksaga
05/19 4438 2
[버전업,자체한글] 너네 엄마 + DLC ver.26.04.22
번역
미스터장
05/19 42833 142
게임 찾아요 (청아
질문
rkskxhzk1
05/19 3515 0
..아득한 세레스피아 - 스포주의
후기 및 공략
SML
05/19 5413 7
[보이스코믹][구매보급][한] 비밀혼탕EX
소리
책먹는망아지
05/19 18133 83
[버전업,자체한글] One Iced Latte With Your Breast Milk, Please! ver.1.26.4.6 (26.04.06)
번역
미스터장
05/19 32719 160
영원히 못찾고있는 망가가 있슴(공포)
질문
ovid199
05/19 2373 -2
와 DLsite 안드판 앵간하면 사지 말아야겟다
일반
TNT
05/19 2926 1
[복구요청] 은근히 밝히는 아싸 JK가 야한 셀카를 시작한다는데? v7
요청
gardner1257
05/19 2987 0
의술사 자해딜로는 안죽는거 아녔음?
질문
simya1557
05/19 2854 0
유명한 스쿨데이즈 애니 봄
일반
djwa123
05/19 3366 0
[복구요청] RJ255342 쿠벨의 수가병 AI KR (연출강화패치)
요청
emaesidu1
05/19 2929 0
선생님들 뉴비인데용.. 정말 궁금한게 있습니다. 몬무스 퀘스트 패러독스 종장에서요...
질문
kbro31
05/19 2622 1
[보추,버전업알림] 암컷 타락 여장 학교 ver.1.06 (26.04.16)
번역
미스터장
05/19 27562 70
요즘은 대놓고 청아캐가 메인 히로인이 아니면
일반
laskokoi
05/19 3209 0
망가 제목을 찾습니다.
질문
sepllos
05/19 1916 0
드디어 완성했다
일반
nagisa8262
05/19 2467 1
스포) 의술사 배경설정 내가 이해한게 맞나
후기 및 공략
ㅇㅇ
05/19 4163 2
스팀판 오우카2 패치성공
일반
helejin424
05/19 2175 3
둘만의 생활 1.67버전 회상공간에서 계절별로 되있는건 어떻게 해금함?
질문
advddg
05/19 2111 0
(복구요청) [모바일패치] 부계에잠든 왕녀 ver1.30
요청
aasss554
05/19 4614 0
응석받이 여름편 코스프레질문
질문
sp0854
05/19 2878 0
직번) [Ma-kurou] 무잔님과 비밀 엣찌
동인
dresss
05/19 21603 95
ai, 찢) 미야비와 데이트 후 잔뜩 연인섹스 했다
야짤
kjh9304
05/19 12780 102