kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4297 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
솔루이 미니 학교편 무서워?
질문
oimasage
05/25 1942 1
고블린 월드 중도포기하고 쓰는 후기(부제 : 평점이 그따구인 이유)
후기 및 공략
chrispypie
05/25 3159 10
직번) ※보추주의 [Brother Pierrot] 갸루 낭자애 수사관과 자지 쥠초밥
동인
qlalfsla
05/25 14878 39
소년 용사 켄은 하면 할수록 진짜 안타깝다
일반
익명
05/25 2587 0
[복구요청][3D/여주/노출][버전업/한글지원/노모] 비밀 노출 -배덕의 달콤함에 물든 마나카- v1.13 업적 100% 세이브파일
요청
altmrhkdaud
05/25 3388 0
여름 전에 나오는 갓겜
정보
aemeath
05/25 10076 52
시퀄 시리즈 플레이하고 재밌었던 순
후기 및 공략
futajomusa
05/25 1849 4
언홀메 극초반 질문
질문
oohyo
05/25 2002 0
[미번/이종간/촉수] 태양의 기사 에리카 0.1.9.1 핫픽스버전 (치트판)
미번
루파조아
05/25 13676 71
처녀막 검사하기 직전
야짤
ㅇㅇ
05/25 6168 12
[복구요청] [RJ01131276] 흡혈귀○○일기
요청
NightHawk
05/25 1955 0
던브 1회차 완료했는데 주차플레이 필요없을듯
일반
fusbriwidhei32
05/25 1798 0
하 씨발 치유계 누나한테 시코시코 받고 싶다
일반
인생좆망함
05/25 2637 0
의술사 ㅅㅂ..
일반
ajsskend
05/25 2518 0
mmd - 비스크돌 코스프레 실루엣 야스댄스 - Thumbs Up
영상
madrush
05/25 31935 260
머야 페트론에 태양의 기사 에리카 0.1.9언제 올라왓데
일반
루파조아
05/25 1736 1
형님들 그....섹스 종류중하나였는데 동인지에서 봤던거같은데...섹스 이름이 기억이안나요...
질문
jdhdgcxds
05/25 2942 5
의술사 질문 하나만..
질문
paddackmon
05/25 2506 0
의슬사 서브퀘 하나 뭔지 모르겠음
질문
rummy
05/25 2470 0
JJJJJ가 적는 카린형무소 후기 및 계획표
후기 및 공략
gooddaytodie
05/25 3281 5
[요청 복구]For the queen
복구
오우즉시반말
05/25 20525 64
[요청복구] 장탈기사 님포리아 v1.07
복구
zadvoskoi
05/25 11814 33
의술사 이거 초반부터 심상치않은데(스포)
후기 및 공략
paddackmon
05/25 3132 2
35살 처녀 마법사 속편근황
정보
sorbe123
05/25 6255 16
(스포주의) 세븐데이즈 클리어 했습니다
후기 및 공략
oolloojr
05/25 2296 9
[복구요청] 블루스킨의 숲 ぶるーすきんの森
요청
로켓드릴킥
05/25 2153 0
비월선행록 유리탑 질문
질문
ㅇㅇ
05/25 1649 0
Madruga3D 복구 요청 합니다!
요청
zadvoskoi
05/25 1897 0
[복구 요청] 척영의 늑대 0.7.8.3 한글판
요청
raccoonramen
05/25 3156 0
[요청복구] RJ211777 복수의 오크
복구
zadvoskoi
05/25 18421 57