kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4427 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-
작업현황
5dk2io1
05/22 4406 22
3Mura 0522
영상
참새
05/22 24471 90
의술사 스포)볼때마다 아쉽다
일반
ashesone
05/22 2707 0
48시간 하고 30분 정도만 더 지나면 아크메시아가 나와요
일반
허벅지말랑말랑
05/22 2512 1
모란 체험판 번역 오류 ㅈㄴ 많네 ㅋㅋ
일반
fdzzz
05/22 1861 -2
ai) NTR 접대골프 4
야짤
ai0098
05/22 13602 89
고대유적겜 MTool 번역 시도 결과
일반
paddackmon
05/22 4241 0
[복구요청] RJ038588 May Queen ~小鳥 Afterwards
요청
하이바라
05/22 2936 1
전설의 보물에 즉시 발정!? 갸루 모험가와 정신을 잃고 오로지 밀착한 채 땀 범벅이 된 섹스
소리
zimbabwe
05/22 11166 89
3D 작가? 질문
질문
jet0u
05/22 1966 0
유랑민 다시해보고싶어서 하는데
일반
fourdragonruler
05/22 1651 0
비월선행록 능소궁 막힘질문
질문
chuckyong
05/22 3044 1
Cobby 관련 영상 업로드 중지에 관한 글. 그리고 분탕 짓거리에 대한 2차 사과문
일반
meruna00
05/22 2481 -2
응석받이 겨울편 mv치트툴 쓰고있는데
질문
dadadwdawd
05/22 3773 0
없어져서 아쉬운 작가
야짤
mumei1234
05/22 4867 5
[실시간 번역기 4.0.0 베타 5] 일부 게임 실행 아예 안되던 오류 수정했습니다.
일반
mrpls
05/22 2668 4
섹스 실습 이거 해본 사람??
질문
oimasage
05/22 3200 0
여동생과 1개월간 5월 2주 부터 4주차 까지 (이미지 추가완료)
정보
beatrirz
05/22 8564 18
[RJ01525764] (요청복구, 자막만, AI사용) 의지악 다우너 메이드의 엉망 사정 관리
영상
후후추
05/22 15176 44
[야애니/알림] 음오옥 똰지 7화 업 알림
영상
공승아
05/22 12510 28
(AI번역)[Gin Eiji] [오네쇼타?] 담임에게 최면을 걸어 섹스 실전수업 받았습니다 (담임최면따먹)
동인
초보역식자
05/22 26974 109
Star Knightess Aura 짤막 후기(스포)
후기 및 공략
paddackmon
05/22 5420 2
던브 통합에로 모드 행동력 가루 어떻게 합침?
질문
dagnaerae
05/22 3155 0
모란2 체험판 해보니까 감질맛 난다
일반
ㅇㅇ
05/22 2763 1
MTool 번역이 커버하는 범위가 어디까지야?
질문
paddackmon
05/22 4468 0
룰 삼사는 한동안 서버 괜춘하더니 또 말썽이네
일반
으읏하앗
05/22 2029 0
[ai,청아] 프래그마타 다이애나
영상
jkvis37764
05/22 55520 282
Happy Island Fantasy DLC 가격 비싸네??
일반
그레이스
05/22 2051 0
카이사르 (ZZZ)
영상
브레머튼
05/22 9971 64
[복구요청] 눌러앉은 갸루가 보〇 쓰게 해주는 이야기 3~4화 자막
요청
llili
05/22 4049 0