kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4310 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
[5/16] 스파키 (스타레일)
영상
브레머튼
05/21 17107 89
ai, 명조) 방순이에게 청혼하고 잔뜩 아기 만들기 섹스했다
야짤
kjh9304
05/21 10415 105
[구매보급]【한국어 자막판】 【4시간 × 더블 여검사 × 더블 하렘】 ~오네쇼타 길드~ 신참 모험가인 나와 엄청 야한 폭유 여검사 누님×2 와 아이 만들기 임신 젖가슴 퀘스트♪(RJ01457321)
소리
Mecklen
05/21 17246 338
ai) 사이좋은 부녀
야짤
메르헨소행성
05/21 10805 27
학원 생활 노출 RPG NAKED HIGHSCHOOL 세이브
세이브
ENE
05/21 7099 16
ai bbc 붕스)카스토리스 ntr 3
야짤
ezmood
05/21 8842 33
ai 붕스)카스토리스 ntr 2.5
야짤
ezmood
05/21 5411 27
[미번/번역요청][Ame arare] 도서실의 그녀 번외편
동인
yurisia
05/21 12779 15
[미번] 01202319 아타타케 공방 코야의 미련 해소 일기 ~도스케베 유령 여자에게는 생하메치〇포가 효과가 있다!~
영상
ctf5r4edfyfdr4r4
05/20 20391 146
익핸 딸깍 번역 방법
정보
알라라크
05/20 10599 27
(청아) [misao.] 색깔한가득
동인
memimemem
05/20 20647 63
[미번] 01521467 Nebula 【Live2D×ASMR】관능미 넘치는 요염한 서큐버스가 선사하는, 머릿속이 녹아내리는 최상의 자위 지원 중독성 있는 마약♡
영상
ctf5r4edfyfdr4r4
05/20 26998 157
장문)진짜 누가 이런 카지노 NTR 야겜 좀 안 만들어주나....
야짤
stealthmania
05/20 9381 35
[요청복구] RJ01180321 네네는 노출욕구가있다
복구
haust0005
05/20 20270 59
[미번/구매보급/번역요청] VJ004257 俺は彼女を信じてる! 나는 그녀를 믿고있다
미번
silver
05/20 8816 45
(NTR/NTL)수줍은 음침한 여자 두 명을 "여자인 친구"로 만들어서 편리한 꽁냥꽁냥한 생활을 보냈더니, 진짜 인싸에게 전부 빼앗겼다.
소리
키리안
05/20 12515 85
(청아)(번역) RJ141187 상복 로리타 구속 기담 미소녀 노예 조교 나이무검열판
번역
ilillilllilil
05/20 66828 495
로스트미디어 단간론파
영상
opqo34
05/20 25819 130
ai) ----청아---- 놀이수영장?
야짤
Ghost
05/20 9784 36
맛있는게임 2개 소개함
정보
칸코
05/20 10193 45
따끈따끈한 타케다 신규 낙서장 (나데시코)
동인
riden
05/20 26789 48
ai) 큰 가슴 사이로 총알이 쓩~~
야짤
Ghost
05/20 10102 37
ai) MMM 모음집
야짤
Ghost
05/20 9605 21
[[요청복구]] [RJ340568] 상태이상 1 〜음문 금서 기생충편〜
복구
에로스테는 필수 스테는 선택
05/20 19141 122
ai) ----스압-----아이마스 계열...?
야짤
Ghost
05/20 5330 19
Yutsuki Tsuzuri-쓰레기 현자 이야기 2
동인
k8625
05/20 20992 41
Eco Heeky-엉덩이로 여자를 구분할 수 있는 내가 여상사의 약점을 잡았다 1
동인
k8625
05/20 29555 189
Eco Heeky-엉덩이로 여자를 구분할 수 있는 내가 여상사의 약점을 잡았다 2
동인
k8625
05/20 37724 284
[직번] [kuroinu] 악몽의 학원 생활 위원장의 운명
동인
maha1004
05/20 20711 76
[손번역][2차번역본] RJ01526327 어서오세요! 어린이 만들기 온천 마을 1.01
번역
sjdwj
05/20 55090 271