kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4364 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
직번) ※보추주의 [Brother Pierrot] 낭자애 메이드 요양원 소프 서비스편 + 전편
동인
qlalfsla
05/07 19255 56
[미검수][RJ208246] 나의 H한 여름방학 ~시골에서 보낸 한여름의 추억~
복구
돈키호테가조아
05/07 27381 123
[요청복구] NTR 서바이벌Z
복구
돈키호테가조아
05/07 17812 45
노예 소녀를 주워다 수녀로 만들어보았다
일반
쩝냡
05/07 6999 41
[구매보급][전연령]오타쿠쨩과 함께 휴식
소리
누터넝
05/07 8305 43
[구매보급] 기계 소녀가 엮어내는 계보 vol.1-리오나의 착정 실험실
미번
V
05/07 13914 77
히유키의 축복 (명조) + 풋잡 영상 추가
영상
브레머튼
05/07 20501 122
QWFr 신작
영상
Wylder.
05/07 37322 105
[요청복구/자체복구] 손번역 2개, 자체번역 1개, 미번 1개
복구
Empty0
05/07 42006 92
탕탕 / 이본 파트 1 & 2 (엔드필드)
영상
브레머튼
05/07 21937 132
[AI번역/NTR주의] 공주와경비병
번역
weller703
05/07 43857 166
엔딩 스포) 비의 괴물 엔딩 후기
후기 및 공략
Nate Higgerson
05/07 8344 20
[구매보급, 미번] 아이스하트와 잭오
미번
saika
05/07 15673 33
(호불호? 임신 + 오줌 나올 수 있음) Brocobich kda MORE 재업 + popstar 추가 업로드
영상
니코
05/07 22230 94
ai, 원신) 라이덴 쇼군님을 꼬드겨서 마구마구 섹스 했다
야짤
kjh9304
05/07 15613 119
[요청복구][게임녹화][ntr]아멜리 브랑셰트는 몇 번이나 저속해진다.
영상
komet52
05/07 23636 82
RPG Maker MV/MZ 실시간 번역기에 대한 건의사항 몇가지 드립니다
피드백
argoklarke
05/06 5152 25
[미번] 메스가키 야구권 ver.1.3 (26.04.21)
미번
미스터장
05/06 9472 36
가정의 달 기념 아랫물 겨운 가족 탄생의 가슴 뭉클한 이야기
동인
qew123
05/06 22529 38
[미번] 미번 일겜 37개 + 미번 양겜 7개
미번
미스터장
05/06 19029 100
[구매보급][청순풍×음란한 엄마]괴롭히는 동급생의 엄마들을 성노○로 만들어 준 건에 대하여
소리
이름뭐하지
05/06 10504 87
[미번] 비주얼노벨계 야겜 5개
미번
미스터장
05/06 12751 42
maguro coffe 신작게임 예고
정보
bombergirl
05/06 8032 23
(구매보급,버전업)RJ01613299 음최도시 휴포니즘
미번
gkawkek23
05/06 11095 45
(한글자막) 최면 구속 가슴 괴롭힘 당하는 스파이짱 - 수완가 스파이의 존엄 파괴 조교
영상
꽃사슴
05/06 26797 129
시골여동생 1만DL돌파축전
정보
여동생킬러
05/06 11802 50
아 진짜 꼭 자막 있으면 NTR이네??
소리
lilillllilil
05/06 19138 98
[구매 보급] BLACKSOULSII【한국어 버전】RJ306981
번역
프레첼
05/06 36591 197
Party Me: 개발일지
창작
tteokleaf
05/06 13110 57
미번) 발기부전 밖에 태어나지 않는 섬에서 유일한 절륜2
동인
kjalar
05/06 25470 35