kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4295 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
엘렌 오랄 & 핸드잡 (ZZZ)
영상
브레머튼
04/28 24859 131
ai, 이터널 리턴) 수영복 마를렌과 순애 섹스
야짤
kjh9304
04/28 15742 69
[구매보급][버전업][DLC포함] 타락신관: 여동생과 악마의 혈통 v1.3.2 steam 04/26/1237
번역
Ghost
04/28 125893 629
Shaggy Susu 신작 원신 감우
영상
ㅇㅇ
04/28 17066 142
[미번보급] お姉ちゃんにはナイショの同居生活——血より濃いミルクティー関係
미번
karoru
04/28 18105 29
(구매보급/ai 번역/NTL/트름 주의) 【NTR 타락】남자친구가 있는 오만한 미나토구 여성을 감금하고 7일간 훈육하다~
소리
Ghost
04/28 15140 74
직번) [AI번역] [Punifuka Ume] 누님계의 유부녀는 배신의 끝에 네토라레 당한다
동인
코코네
04/28 30129 106
타락신관 DLC 추가된점 및 여관 이벤트 분기점 공략 및 후기
후기 및 공략
asdf788
04/28 26393 47
[메이초기주쿠] 【루나와 색욕의 고도】 제작 #3
정보
날개 로봇
04/28 11574 17
【초밀착 속삭임】 파파♡~ 몽글몽글 F컵의 의붓딸에게서 계속 달콤달콤 속삭임♡ 엄마가 잠든 옆에서 밀착 처벌 아이 만들기 에치♡~ 【듬뿍 무성음】
소리
키리안
04/28 13158 108
[Migihaji] 러브가 아니라면 프리섹스 1~2
동인
ㅇㅇ
04/28 40546 203
[수정알림] 대리업로드 번역게임 수정된거 재업
번역
미스터장
04/28 37927 110
[직번] [Kagto] 반찬 당번의 성태 - 딸감 여신 마치다짱
동인
acefs
04/28 40718 180
[4K] 타카기 양, 이미지 비디오(?)에 출연하다
영상
실루엣21
04/28 31839 131
(노모화) [Shiwasu No Okina] 그녀 그이 그녀 -단행본 버전 작업중-
동인
xbox
04/28 18816 70
[Gamogamo] 이웃집의 음침퇴폐(다우너) 모녀에게 착정당하는 이야기
동인
ㅇㅇ
04/28 35435 234
내가 맛있게 먹었던거 복구 (청아)
복구
순애좋아
04/28 83650 336
[구매보급] [버전업] RJ01588884 외 1
미번
gkqisq
04/28 14196 46
[구매보급]왕궁 여자 기사의 처녀 연애 - 마지못해 그녀는 당신을 사랑한다
소리
이름뭐하지
04/28 10516 56
[구매보급] 【한국어 자막판】 【1시간 50분】 당신을 놓아주지 않아! 초밀착♪ 달콤한 속삭임 변태 체험판〜3명의 히로인 모음집〜
소리
puella
04/28 17732 73
[AI] 내 여자친구가 지배 어플로 NTR 방송되고 있는데
번역
미식이네
04/28 68170 221
[구매보급] [버전업] RJ01582213 라스티던전2 ver1.0h 2026.04.25
미번
gkqisq
04/28 11787 48
[구매보급] [버전업] [청아] RJ157224 공원장난 한국어 ver.MAKO 1.3 (Type A) 23.11.11
미번
gkqisq
04/28 13171 44
(초스압,스토리스포x)性処理用勇者 성처리용용사 후기 및 짧공략
후기 및 공략
끄얽돍
04/28 13987 21
[AI번역] [kojirou] 환상거유
동인
cjd08
04/28 12095 36
자동 소미 해적판의 해적판의 해적판 (260503 13:58 v1.3.5 업데이트)
유틸
bellbell
04/28 13533 38
Re:Dive 뉴토끼
일반
의인화
04/28 24603 204
어떤 버튜버 사진들~
야짤
지나가던허접a
04/28 15733 31
[구매보급]서머 폴리
소리
이름뭐하지
04/28 14130 74
리오 - Chill like that
영상
Poznan
04/28 24648 89