kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4356 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/13 13177 74
[ai번역 - 노모] 세이카 여학원 공인 자지 아저씨 1~7
동인
mybest
05/13 30357 128
기번) Orange Piece 모음집 총 10개
번역
playthesean
05/13 34000 83
N.T.Resort에 오신 것을 환영합니다 신정보
정보
ㅇㅇ
05/13 14570 50
[구매보급] 바이러스님의 전신 해킹 쾌락 지배~ 속은 컴퓨터군은 바이러스 투성이♪~
소리
summer4552
05/13 12844 42
Ie 3갸루 단편
동인
SK
05/13 38885 276
【한국어 자막판】 섹스프렌드 겸임 친구 시리즈(2,3,4편)
소리
뒷담난쟁이로야족
05/13 18678 97
ntr레슨 후속작) ntr축구 체험판 공개 및 출시 d30
정보
머겅머겅
05/13 13834 20
[번역] 토끼 구멍
야짤
마법우엉
05/13 12473 82
[번역](청아)오빠는 퇴마인이 되어도 끝났다
동인
마법우엉
05/13 31600 106
[구매보급] [버전업] RJ01526327 어서오세요! 어린이 만들기 온천 마을 1.01
미번
gkqisq
05/13 18504 45
[기번/검수][iapoc]-유두 자극 레즈 에스테에 어서 오세요
동인
serdic
05/13 32600 145
[구매보급]【달콤한 오호】 성녀가 노예가 되어서 사봤다~ 조르게 하고 오호 목소리 섹스~
소리
이름뭐하지
05/13 22532 58
kajiking - 고도 카즈사 음문이 새겨지다 2.5
동인
qew123
05/13 24216 99
[버전업알림,손번역] 세뇌 어플 2 ver.1.2.1 (26.05.13)
번역
미스터장
05/13 47163 315
직번) [choukutetsushitsugan] 암퇘지 낙인
동인
qlalfsla
05/13 43040 278
AI, 셀레스포니아) 연구소의 인증 시스템
야짤
miso5
05/13 18198 96
[복구] 카프카 영상 복구
영상
브레머튼
05/13 17639 63
(오호고에/음어)雲八はち성우 작품 4개
소리
딸딸이의황태자
05/13 13991 66
[ai번역-노모 단행본] 가출 갸루랑 질내사정 잔뜩 해서 동거 생활 시작했습니다.
동인
mybest
05/13 25093 66
[알림] 비월선행록 이미지 번역 1.289 대응
번역
argoklarke
05/13 39141 116
[AI번역][RJ220780] 야리친 가정교사 네토리 보고 (패치파일만)
번역
호빵할배
05/13 38248 109
나오기를 ㅈㄴ 기대하는 작품
정보
존경합니다행님덜
05/13 13064 28
[RJ01624439] 뭔가 이야기가 있을 때는 "절대 혀를 내밀어야 해"라며, 포근한 메이드와 순수한 사랑을 나누는 달콤한 ‘키스 하메이드’ 생활
소리
돈이조아
05/13 12805 92
미번) 묘쌤은 이렇게 박혔다 3
동인
kjalar
05/13 21683 39
[재업/AI번역/riboshika][NTR] 자궁이 관통될 때까지♥︎
동인
gaymaster
05/13 26131 58
[밀프/쇼타/서양](보루토) 왕자지 보루토 : 사쿠라의 병원
영상
Ghost
05/13 39865 286
Church of Desires 손번역이 완료되었습니다.(후타, 음마화)[RJ01617031]
번역
sesv3030
05/13 56319 253
(구매보급,버전업,공식번역)세뇌앱2 ver1.2.1
번역
Gope
05/13 28815 210
[ai번역=오오토리 마히로] 나의 이세계 하렘 3
동인
mybest
05/13 21539 43