kone
소미소프트

소미소프트

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

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

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

세줄요약 있음

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


코드

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
청아 / AI) 금단○리 납작가슴 소녀 100명이랑 학교에서 ㅅㅅ촬영 질내사정 ㅅㅅ (禁断〇リ つるぺた少女100人と学校でハメ撮り中出しSEX)
영상
darkunicorn
05/17 37440 130
아빠가vr개발자인데js딸이vr끼고남정네들이랑사이버러브
질문
fjeif2
05/17 2925 0
[요청복구/테스트] RJ065120 호스피탤러티 ~어느 병원에서의 너무 에로한 입원 성활~ 영상판 포함
복구
ㅇㅇ
05/17 19355 56
[복구요청] 빅젖 최면 에로 앱 학원
요청
mmmff
05/17 4884 3
[실시간 번역기] 4.0.0b4 업데이트했습니다.
작업현황
mrpls
05/17 5959 13
비의 괴물 질문
질문
갸갸갸갹
05/17 3964 0
요즘 하고있는 노가다 (빌네메레트)
야짤
clone23
05/17 4835 4
[요청복구] 히프노시스 아카데미, 신참 기사 라티, Nano-control Plus
복구
mmmff
05/17 25217 49
원래 예정대로면 이번 주 주말 중으로 구방주 1편 업로드 끝났어야 하는데...
작업현황
ㅇㅇ
05/17 6789 6
Yoshio Ereki, AI번역) 네가 임신할 때까지 한계 돌파 섹스
동인
sexe1
05/17 34100 200
던브 통합모드 존나 어렵네
일반
앨리스
05/17 3867 0
[복구요청]소장의 욕망증 시리즈
요청
dfgtewkwg
05/17 5111 5
[복구요청] RJ065120 한 병원에서 너무 에로틱 한 입원 성활
요청
집에 가고 싶어
05/17 5680 0
내 지식으로는 좀 느려도 이런식으로 딸깍 돌리는게 한계군
일반
azezazazezaz
05/17 2913 0
[ VAM ] awakening - Abracadabra [ Zhuang Fangyi ]
영상
s99a99
05/17 18112 70
[요청 복구] RJ292145 던전즈 레기온
복구
시라스 아즈사
05/17 22911 62
[요청 복구] 마망즈콜로세움(미번)
미번
Tladitlrekdtkfkdgo
05/17 15288 20
내인생의 명작 야겜2개를 꼽으라면..
일반
sayji
05/17 3791 0
gpt 프로 라이브메이커 맛보더니 정신 못차리네..
일반
아로나
05/17 2841 0
하드 배드섹터 생겼네
일반
aaaaaaaa
05/17 3014 0
[복구요청]오나서포 20연 가챠! 메스가키짱의 장난감 1, 2
요청
rlawlgy
05/17 5415 3
[복구요청] 던전즈 레기온
요청
jjyp6190
05/17 9345 0
[5/17] 신춘특집 2부
영상
브레머튼
05/17 17336 109
트랜스퍼 주말 내내 문제 많나보네
일반
48ii49
05/17 2545 0
비월선행록 사골 후기 + 사소한 팁
후기 및 공략
nierblack
05/17 13987 8
DL 질문
질문
dzqzvsz
05/17 2732 0
[복구요청] RJ01013197 아스카 버진 아이돌 데뷔
요청
2h4sd5
05/17 2674 1
[SIW] 각청
동인
edo
05/17 7954 13
소녀와 촉수와 밤의학교 비밀번호 아는 고수님?🐱🐱🐱
질문
coyface2020
05/17 3432 -1
비월선행록 다회차 중 강남루트 질문
질문
벨로_
05/17 3849 0