kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4359 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
드래곤 블러드 실행 오류 질문
질문
RED LOTUS
05/19 4464 0
의술사 톰보이 어흐 ㅋㅋㅋ 하고있었는데
일반
noname1919
05/19 2059 1
90일, 번역파일만, 복구, 음주의 미궁) RJ01499436_ana_trial v0.2.1 9차 수정 Completed11.zip
번역
ㅇㅇ
05/19 43228 114
PainRein 질문드립니다.
질문
jstis
05/19 6383 0
ai) 시로코 테러 치파오
야짤
Ghost
05/19 9234 32
비월선행록 이거 맵탐사보다는 퀘따라가야되네
일반
allon
05/19 2285 0
[복구 요청] 언홀리메이든 V 1.0.10 한글패치 복구 요청 부탁드립니다.
요청
anonmous0009
05/19 2384 3
오늘 아무런 사전 예고 없이 회사에 연차 냈다....
일반
shingoldhammer
05/19 2540 3
용머리 ai 번역 어떻게 해야할까요..
질문
chalyboy23
05/19 4807 1
[복구요청] 상태이상 1
요청
매실다람쥐
05/19 3318 0
동인지를 찾습니다
질문
단또
05/19 4381 0
악재다
일반
화앨
05/19 2226 1
시시아 [ZZZ]
영상
브레머튼
05/19 14538 98
ai) 지우와 풍란
야짤
Ghost
05/19 4005 19
스플래툰 게임하고 있는데
질문
rddc5449
05/19 1158 0
ai) 푸리코네 수영복 미소라 치에루
야짤
Ghost
05/19 3826 14
유니슨 코드 1.06 대량의 폰트오류?오타?
피드백
지나가던잉여
05/19 3653 2
비월선행록 개조판 오류보고 세이브
세이브
o0o99
05/19 5125 0
비월선행록 강남루트 어떻게 하는건가요?
질문
맛트
05/19 2520 0
SUBVERSE 후기
후기 및 공략
RED LOTUS
05/19 8312 1
[복구요청] 거유 탈의대전 크로스†브레이크
요청
symbung0008
05/19 3084 0
capslock같은건 누가 만든거야
일반
슬래시
05/19 1604 0
[구매보급][오호성·더러운 신음] 마법소녀는 패배했습니다. 최강 마법소녀의 마조타락조교
소리
이름뭐하지
05/19 17892 109
망가 찾습니다
질문
닉주디네임
05/19 2175 0
던브 슬슬 보물상자가 나오는데 보물상자 열쇠 얻기가 힘드네요
질문
fusbriwidhei32
05/19 3272 0
겜 이름이 기억이 안나는데
질문
인생좆망함
05/19 3976 0
쯔끄루가 입에 안맞으니까 너무 괴롭다
일반
mkasdo
05/19 2317 -2
청아, 직번) 유키쨩과 산타할아버지의 새근새근 크리스마스(PossumMachine)
동인
rapbit
05/19 18008 62
지극히 개인적인 인생게임 추천
후기 및 공략
gogibab
05/19 8547 15
비월선행록 오류 보고용
세이브
kbs751
05/19 5184 0