kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4254 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
(구매보급/번역요청)RJ01585268,RJ01537879
미번
챔피얀
04/26 14106 35
Chloe & Iroha
영상
브레머튼
04/26 27212 138
[47.06GB] 또 야애니다수
영상
아소필
04/26 27439 161
린네아 (원신)
영상
브레머튼
04/26 22774 94
브로냐 S+
영상
브레머튼
04/26 23275 86
[구매보급]【전편 느릿 오호】 게이머 그라돌 자매와 집콕하며 야한 생활
소리
이름뭐하지
04/26 12122 68
[번역, 히토미펌] 아첼레란도 (seto yuuki)
동인
drogba
04/26 22932 46
[takku] [청아] U149 이치하라 니나 만화
동인
edo
04/26 29485 98
생각보다 쎈데?
야짤
highblue
04/26 11033 28
렌파이 게임을 추천해보도록 하겠습니다
후기 및 공략
shsh112211
04/26 10325 19
[미번/번역요청][Katsura airi]들끓던 무렵에 동창회편
동인
cuphead-7
04/26 25113 45
유니티/기번) Taffy Tales Season 1 - v1.1.55 Redux
번역
마기사
04/26 47389 187
[체험판][gemma4][미검수]서큐버스의 밤 체험판 28일 발매예정
번역
lovesccubus
04/26 33495 83
[미번/번역요청] My Girlfriend Advanced to the Dancer class and she buffs everybody 1.1r 버전 (수정)
미번
unknown1357
04/26 15439 70
(청아,AI,GIF) [xssxsxk] cure arcana shadow
야짤
ArIso
04/26 23330 108
청아,방뇨) セネト 신작 아이마스 아리스 모모코
영상
ㅇㅇ
04/26 21633 113
분명 애들 만화라고 들었는데
야짤
lovesccubus
04/26 13008 20
[직접구매] 나츠노 사가시모노 RJ370402
번역
jsoon
04/26 60877 296
[직번][Hino Yamada] 이사 성교!
동인
qlkjrnd
04/26 18694 88
니트사장 신작 포켓몬 봄이
영상
ㅇㅇ
04/26 23947 126
청아) はるとし 신작 메구밍
영상
ㅇㅇ
04/26 20036 98
[AI] 큐어 스카이 !!
야짤
kifbodo245
04/26 12257 38
Lapin Gris 신작
영상
ㅇㅇ
04/26 15643 103
오타쿠 여학생의 판타지
미번
흰꼴뚜기
04/26 14932 66
[Dokuneko Noil] 소라이 사키에게 나쁜 짓을 하는 이야기【전편】
동인
ㅇㅇ
04/26 25259 131
[AI번역] RJ01577093 ふたなって鬼ヶ島!
번역
하츠네미쿠
04/26 64030 214
[이미지번역만] 모두의 유방육성(육유) 아카데미[fanzagames_0158]
번역
buaak
04/26 35008 89
[요청복구] 누키타시 THE ANIMATION OVA 1~4편 한글자막o
영상
imakotou
04/26 23406 87
직번) 암컷펫 시리즈 총집편 3
동인
이게아닌데
04/26 40339 359
음모없음) [Gujira 4 Gou] 마구 빼달라고 하는 입원성활
동인
카오스
04/26 44206 336