kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4414 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
07/07/25
이것도 링크 암호화해야 하는지 모르겠네
유니슨 코드 낚시 초반 질문
질문
ENE
05/21 4164 1
야겜뉴비의 매우 주관적인 게임 한 줄 평과 평점 모음 1탄
후기 및 공략
pegets
05/21 12808 32
존재감 여동생 게임중 섹스 어떻게 함?
질문
응애응애
05/21 7182 -1
던브 통합모드로 프리모드 할려하는데 초반부터 막혔는데 아는 사람 있음?
질문
ehektl12
05/21 2999 0
마권사 사라 아무도 모를사실
일반
에로스테는 필수 스테는 선택
05/21 2792 4
[청아][번역][모자파괴] 이타즈러브 - 인적 없는 공원에서 소녀와 사랑을 키우자
번역
ilillilllilil
05/21 40632 259
[복구요청] 멜티 브레이브 키툰즈 RJ01135352
요청
HHD777
05/21 3200 0
님들 쯔꾸르 하실때 스토리 전부 스킵하나요?
질문
www5555
05/21 2129 0
[Danimaru/노모] 하룻밤 재워줄래, 오타쿠 군♥
동인
ㅇㅇ
05/21 36299 261
뉴비) 나노 컨트롤 하다가 이런 오류가 발생했는데 어찌하나요..?
질문
184718474
05/21 2562 0
APK포팅된거 컨트롤러 뭐씀
질문
smalldom
05/21 2082 1
[복구요청] 홋코리 아야카시 료칸
요청
seeeezzxc
05/21 2107 0
Itch에서 폰에 야겜 깔았는데
일반
sungeun8318
05/21 2150 0
의술사 모든 엔딩 봤는데
질문
rlawjddms
05/21 5412 0
로즈 던전 탈출 중인데
질문
integritytoken
05/21 2693 1
쯔꾸르 야겜 애니메이션에서만 배속이되는데
질문
으읏하앗
05/21 2831 0
메이팅프레스 이꾸조
일반
apee
05/21 2914 6
비월선행록 독 이펙트 안없어지는거 버그임?
질문
o0o99
05/21 2018 0
여긴 주딱이 여러명임?
일반
catchme-if-you-can
05/21 3113 -2
던브 수도승 왜케 약하지?
질문
fusbriwidhei32
05/21 2793 0
비월선행록 옷장에서 오류
질문
goneni
05/21 5960 0
소식 끊기다가 몇년만에 새로 올린 서클년놈들
정보
cyberzombie
05/21 7618 13
Fallen / Brand New World 소리가 안들림
질문
arawn
05/21 3367 0
최고의 "야" 겜을 도저히 못찾겠습니다
질문
sadfghj
05/21 3709 0
손신 재밌긴 한데 개빡침;
일반
forzzal001
05/21 3517 -3
[복구요청]미번,영문버전) SAO Invisible Trap vβ5
요청
nuriggiri
05/21 2753 1
[복구요청](기번/일부손번) SAO NTR Invisible Trap II vβ4
요청
nuriggiri
05/21 3492 1
[요청복구] 최음아파트1.05
복구
okamsk15
05/21 30852 104
여성향 NTR도 있나?
일반
vcxzasdf
05/21 2985 1
RJ141187 식질 뉴비 연습
일반
ㅇㅇ
05/21 2512 4