kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4326 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
의술사 결혼 질문
질문
su-park
05/25 2609 0
AI) 모니터에 자신의 자궁구를 띄워 성교육을 하는 후우카
야짤
날개 로봇
05/25 9508 42
ai 딸깍
야짤
aemeath
05/25 3680 10
쯔꾸르 디아블로? 서바이버?
정보
SML
05/25 3765 6
PUBPET 해보신본?
질문
ㅁㄴㅇㄹ
05/25 1372 0
망가 하나 찾습니다....
질문
아기돼지
05/25 2409 0
아크메시아 생각보단 슴슴하네
일반
ㅇㅇ
05/25 2043 0
ai 야짤
야짤
ocw0519
05/25 3375 6
[복구요청] 4차업데이트 / [기번/노모/마개조/치트] 뇌신7 PUK 3.33 AI팩
요청
gipiundun
05/25 2997 3
왜 페비츄삐는 야짤이 없는걸까
일반
아이기스맘
05/25 3417 0
Muru no Honbako 이 작가 취향 ㅈㄴ 독특하네
일반
kakaopagedaron
05/25 2063 0
RPG성 강한 야겜 추천좀
질문
amamimi
05/25 2048 -1
ai, 블아 특식) 히비키의 치어리딩이 너무 야해서 잔뜩 질내사정 해줬다
야짤
kjh9304
05/25 9047 98
[복구요청][RJ01373159]건방진 여동생은 빈틈투성이! ~ 쌘척하는 메스가키 여동생을 마구 가버리게 하자~
요청
인간
05/25 2705 3
아크메시아 Mtool 전용 번역 사전
번역
움떡알림몬
05/25 26659 63
의술사 레벨업 공격력이랑 체력만 올라가는겨?
질문
votmvkdlsej
05/25 2383 0
영상 또는 작가를 찾고잇읍니다.
질문
bungchan
05/25 972 0
님들 시퀄 재밌음? 스토리어떰?
질문
votmvkdlsej
05/25 1512 1
(복구요청)누키타시1, 2, 어펜드
요청
mussssa
05/25 1966 0
『철부지 고양이 에르샤』 ver1.04 설명 & ver1.05를 향해
정보
ㅇㅇ
05/25 5112 21
트랜스퍼잇 진짜 다운속도 답답해 뒤지겠네
일반
koyate
05/25 1201 -1
비타퀘2 애프터 스토리 질문
질문
Creampie
05/25 1628 0
ㅅㅍ) 마인드 류다 순애 루트 있는 줄 알고 했는데
일반
yellowcape
05/25 2200 0
던브) 마족 무르무르 날먹하는법 없슴요?
질문
fusbriwidhei32
05/25 1492 0
카린의 형무소 세이브파일 위치 아시는분 계신가요?
질문
alpha123ded
05/25 3344 0
[미번][요청복구]RJ01220958 NTRRPG2 ~이질적인 마을과 침식된 마음~
미번
okjack
05/25 7992 18
[복구 요청] 노출(장탈) 기사 님포리아 v1.07
요청
gardner1257
05/25 6417 1
레이블 (니케)
영상
브레머튼
05/25 15649 113
Divagate 패스워드 얻고 더 진행이 안 됨
질문
ㅁㄴㅇㄹ
05/25 1659 0
최근에 미연시 입문했는데 개빡치는 점
일반
shiroi
05/25 1563 -7