kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4259 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
[복구요청] RJ01214867 둘만의 생활_ver1.671
요청
비솝
05/26 1401 1
래빗홀 밐쿠
영상
yeondooooo
05/26 19931 107
애니는 안봤는데 노래는 좋아서 듣는거
일반
에로탐구가
05/26 1449 -1
Doragon74-빼앗긴 유부녀 하나코씨
동인
k8625
05/26 25140 163
Doragon74-나의 서포터즈 아카데미아
동인
k8625
05/26 22448 118
비타퀘2 질문
질문
sorbe123
05/26 994 0
뭐야 포레스티아 공식번역 업뎃 안된거야??
일반
hizlr
05/26 1446 0
[AI번역] [kobaji] leveling unleash (히로아카)
동인
초보역식자
05/26 9812 35
[구매보급] [자막] RJ01339397
소리
puella
05/26 7245 74
아크메시아 기대 많이 했는데
후기 및 공략
lostarkfinder892
05/26 2000 1
다들 자신의 ㄹㅈㄷ 야겜 하나씩 추천점 해주세여
질문
su-park
05/26 2356 5
면간겜인데 제목이 기억이 안나네
질문
marinamulma
05/26 1492 0
본인이 환장하는 그림체
일반
리안온
05/26 2105 8
(약스포)의술사 모든엔딩클 이후 후기
후기 및 공략
su-park
05/26 2302 2
망가 하나 찾습니다.
질문
kairon
05/26 2124 0
요새 댓글에
질문
yeondooooo
05/26 2275 0
게임제목 알려줄 사람
질문
gdsafdsfsad
05/26 1717 0
ntr 고전명작 히라탄 시작합니다.
일반
ddaljang
05/26 1052 0
[복구요청] 퇴마의 엄마1~4, 이거 엄마입니다1 ,여우집 콩콩 포 앤서
요청
뒤치기는 뒤에서
05/26 2614 0
[ 알림 ] 빗소리로 가득차는 밤 1.1.2 노모패치 파일 추가
일반
yeondooooo
05/26 2032 6
FORTUNE BRIDE – 絶頂開眼の儀式 -
질문
siu
05/26 1625 0
Doragon74-김쭈쭈 시리즈
동인
k8625
05/26 20518 77
Parasite Evil
질문
unkyung
05/26 1311 -1
[Yuzuri Ai] L컵 여자대학생 20cm 초극태O지로 동인AV데뷔 1, 2
동인
1uF
05/26 19273 95
DL 뒤지다보면 뭔가 신기하네
일반
vivy
05/26 1472 1
직번) [Akai Condor] 노예 시장의 실태 ~도쿄 빅사이트에 실존하는 현대 일본의 변태적 어둠~
동인
qlalfsla
05/26 17880 91
[RJ01219535, RJ01557983] 드래곤 블러드 2.12, DLC 1.03 복구 요청
요청
흰꼴뚜기
05/26 1465 0
세뇌앱2 하는데 유사보테배 줬다는데 아무곳에도 없음
질문
gazaru168
05/26 1950 0
망가 찾습니다
질문
liaak
05/26 1329 0
[Natsu No Oyatsu] 엄마의 잔향
동인
1uF
05/26 10046 26