kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4272 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
던브 안 한 뇌가 던브를 해보려 하는데
질문
단또
05/26 1943 1
키오스크 애드블락 예외 설정해도 광고 뜨는거 원래 그런건가?
질문
teQe42
05/26 1629 0
ㅗㅜㅑ시니시스타 또 신박한 모드 발견
야짤
roomonfire
05/26 13007 39
혼욕탕씬 나오는 게임 있나?
질문
satam1212
05/26 2381 0
마나카 이거 해금한 스킬 어케 씀?
질문
으악아니야
05/26 1067 0
추남&NTR 좋아하는 인간의 후기 겸 게임 추천 받기 (스포)
후기 및 공략
ptiosdgo
05/26 4459 12
태양의 오르골 언제나옴
일반
fjeif2
05/26 1163 0
unholy maiden seed of profanity모드 1.4
유틸
leessss25
05/26 2073 13
게임 심사가 왤케 오래걸리냐
일반
ksw112
05/26 1873 1
존재감 여동생 한달 버티기 퀘 보상 뭔가요?
질문
rice-eating
05/26 1982 0
[복구]섹타듀벨리 모드팩
유틸
continuereset
05/26 5099 20
의술사하면서 스토리보며 느낀점
일반
소하
05/26 1261 0
[그냥복구/본체없음] 배덕의 달콤함에 물든 마나카. 여기서 받은 모드팩
유틸
루파조아
05/26 2974 9
조이 플레이 쓰는데 어떡합?
질문
abc456
05/26 2112 -2
최근에 아오이짱 겜 재밌게했는데
질문
qwqqqq
05/26 1941 1
드래곤 콩키스타 < 이 겜 사람간의 임신은 없음?
질문
everywhere
05/26 1998 0
이런게임 있을까요?
질문
mkmkil
05/26 1700 1
[요청복구] [한국어자막판] 퇴마관 미야비의 음옥생환보고
소리
9ya
05/26 7623 54
[미번/번역요청]우리들! 성교육 위원회 만화판
동인
아돌
05/26 12255 30
마나카 질문 있음
질문
으악아니야
05/26 2061 0
[복구 요청] RJ01326857 음흉하고 한결같은 깡촌 오라버니와, 예스럽고 병약한 여동생 + Append 1~5
요청
napulnapul
05/26 1711 0
게임 제목 좀 찾아주세요
질문
kotori97
05/26 1218 0
포레스티아 공식 한글 설마 2.0인가
일반
tleni
05/26 2627 0
[단편](약깜놀) 자각몽 섹스로 귀신 제령시도 하는 이야기
창작
깡통기사
05/26 5092 44
시니시스타2 1.3 리볼의 육벽은 어떻게 부숴요?
질문
powwa
05/26 1260 0
여주가 점점 걸레 되는 게임 있나
질문
carahil
05/26 1825 1
(구매보급,번역요청) 챔버게임 1.1 업데이트
미번
12532748912
05/26 5916 23
[천재 퇴마사는 촉수요마 따위에 굴하지 않아]개조 진행 중..
작업현황
dmol2279
05/26 1917 5
[이미지번역]RJ01354109 에이전트 엘레나 이미지 번역
번역
ommkamb
05/26 33736 139
어떤 분의 댓글을 위한 작성 글(노모 관련인데 머리 아퍼지니 보시는 거 비추드림)
정보
지나가던허접a
05/26 2633 11