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
이것도 링크 암호화해야 하는지 모르겠네
[진짜 간절히 번역 요청] 口リクエ2~純白~ 로리퀘2 순백
미번
bansbes
05/24 7374 13
FORTUNE BRIDE 이거 진엔딩 없네
일반
2h4sd5
05/24 2274 0
19금 ai는 어디서 만드는거임?
질문
dzqzvsz
05/24 1683 0
오나사포 처음해보고 느낀거
일반
fkfnebwk
05/24 1774 0
ai) ----청아 최면앱----YBYB 자작 캐릭
야짤
Ghost
05/24 7731 34
[요청복구][버전업] (1.4v)(RJ185696) 빨간 두건의 숲
복구
vhskorea
05/24 11307 30
(미번 노모) [Usagi Nagomu] 황혼의 창엘프 9 : 타락 5
동인
macross7
05/24 15335 35
욕망의 여신 이리나 저장 어떻게 해?
질문
49i1jb
05/24 1757 0
카네다는 나쁘지 않아1편 AI로 리마스터링 중
작업현황
powr963
05/24 2688 9
(미번 노모) [Karube Guri] 이 섹스는 연기입니다 2
동인
macross7
05/24 10824 23
요청쪽 탭 관련해서 질문좀 드려요.
질문
mz666
05/24 2012 1
[복구요청] Jam packed line tale
요청
nnnnnnnnnn0
05/24 2661 -1
[방주 알림] 멸망 방주 글 삭제 사유
야짤
ㅇㅇ
05/24 10413 62
[공식번역][스팀][노모] 카린의 형무소 Karryn's Prison ver1.3.1.69 all DLC
번역
문명
05/24 30977 249
야애니 제목 궁금쓰...
질문
sakura-ne
05/24 3380 -1
[시모바시라 공방] 「마장영희 셀레녹시아」 제작 보고 71 - 차이점 제작!
정보
날개 로봇
05/24 8045 48
[청아](번역+이미지번역) RJ141187 상복 로리타 구속 기담 미소녀 노예 조교 완전 한글판
번역
ilillilllilil
05/24 39112 220
레이나와 그녀의 이상적인 동거 클리어 후기
후기 및 공략
np418
05/24 4975 5
[복구요청]RJ342781 수관의 사냥꾼
요청
slla4123
05/24 2852 0
혹시 동인지 좀 찾아주실 분
질문
kkkkl
05/24 789 0
야겜 찾기 참 어렵다...
일반
stealthmania
05/24 1704 0
B-PRISON UNCHAIN 1.07 요청드립니다
요청
erueur
05/24 1906 0
히토미내용 찾아주세요3달동안찾음
일반
hiking
05/24 1371 0
5월 하순에 온다는놈들
일반
ㅇㅇ
05/24 2413 -1
비타퀘2 오류로 3시간 날렸네
일반
이카루스 테크놀로지스
05/24 1810 0
[복구요청] 무인도 사원 여행기 요청드립니다!
요청
혼자서도촬해요
05/24 2049 2
RJ번호 써져있는거에 마우스올리면
질문
ㅇㅇ
05/24 1477 3
소미소프트는 금지해야함
일반
아이기스맘
05/24 3121 -21
여성향 야겜 괜찮은거 알려주실 수 있나여...
질문
ㅇㄴㅁㄻㅎ
05/24 2487 -2
떡인지 질문좀
질문
츄르도둑
05/24 1910 0