kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4407 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
이것도 링크 암호화해야 하는지 모르겠네
[요청복구] [보이스코믹/음성] [한글화] 반찬당번 마치다짱
소리
acefs
05/21 14532 70
으흐흐 보빔..
일반
쩝냡
05/21 2941 2
[구매보급]【강○ 임신♪】 절대로 당신의 아이를 임신하기 싫은 메이드가 봉사를 해주는 일상
소리
이름뭐하지
05/21 12050 75
요몽원 폰으로 하는중인데 질문좀
질문
sjdifnt
05/21 3202 0
웃기지만 시니시스타 하고 후유증 와버림
일반
roomonfire
05/21 3305 6
안돼! 동거라이프 DLC 5월 상반기 현황
정보
straight6
05/21 7469 21
야겜 내용으로만 찾을 땐 어떻게하는게 좋아요?
질문
너울
05/21 5713 2
시니시스터 스팀판 나와서 처음부터 새로 하는데
일반
majimoose
05/21 4356 4
[미번/청아][ORC SOFT] DSKBJCS 도스케베 쥬시즈☆
미번
돔마
05/21 11153 23
[미번][중국어] NTR 전설 remake 0.9.2
미번
Ed
05/21 14513 42
나다 누코마진 망령
정보
karoru
05/21 4339 11
요즘 뭔가 꼴리는 겜이 없네
일반
madeinheaven
05/21 4600 1
던전앤브라이드 화면 크기 조절 따로 못함?
질문
eternalgreed
05/21 3054 0
[Tulip] 혼혈 서큐버스들의 일상
동인
1uF
05/21 22429 121
히로미(히토미 미러)에 유저 번역본 업로드하면 어떨까요?
일반
hiromi
05/21 3830 2
[Nishikawa Kou] 딸 대신에 내가 1, 2
동인
1uF
05/21 16547 64
(수정 사항3)내가 쓸려고 만든 코드 검색용 + 파일관리
유틸
ATTAA
05/21 4028 14
[Takaman] 심야의 매혹
동인
1uF
05/21 13907 71
비타민퀘스트2 번역
질문
wlskrksmsakdrh
05/21 5398 0
나도 맨날 ntr겜 소재 망상함
일반
apptr
05/21 2388 0
AI 나온지도 오래인데 AI끼리 팍팍 의견 주고받으면서 성장했으면 좋겠다
일반
chuchuruli
05/21 4772 0
에로스테 rpg겜 신작 재밌는거 없나욘??
질문
싸마
05/21 2017 -3
스포) 의술사 정신나가서 못하겠네 시발
일반
미미쨩
05/21 4662 0
[자체한글, 구매보급] [VR전용] 【VR】초만원 전철 ~역에서 발견한 귀여운 아이에게 몰래 장난~
번역
frcition
05/21 32139 140
비월선행록 봉조황성 가는법 질문
질문
스코
05/21 2993 0
와 지금까지 ballon translator 인페인트 cpu로 하고 있었네
일반
라비쉬
05/21 4959 0
존재감 여동생 신규씬 게임중 배면좌위 씬 + 거실 야한비디오 배면좌위 항섹 씬
야짤
맛보기
05/21 18475 22
Happy Island Fantasy 신규 DLC 'Sexual Bliss' 출시!
정보
네르이스
05/21 4070 12
시엔으로 올라온 아헤마루 연습짤
야짤
sorbe123
05/21 7887 12
[복구요청] [미번파일] RJ01219535 드래곤 블러드 2.12 dlc포함 1.03
요청
dkfvkzk123
05/21 2742 8