kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4385 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
이것도 링크 암호화해야 하는지 모르겠네
eGlhbmd3ZWl0dWRvdQ 26년 4월까지
영상
karatro
05/20 22606 129
AI의 무서움....
야짤
블랙패킷
05/20 6275 -3
(청아) [Kotee] 이리야 일행이 최면술에 걸린 척하고 로리콘 돼지 약자남성소추아저씨에게 인지불필요 러브러브 임신 교배 강간당해서 수정하는 책
동인
밤하늘의신비
05/20 26635 164
이게 되네
작업현황
ㅇㅇ
05/20 4735 5
여름의 그 섬 관련 (RJ398173)
질문
외국표류청년
05/20 2403 1
SAO 인비저블 트랩 질문드립니다
질문
thxsmp
05/20 2609 0
Nekoshoko 작가 잘보고 있었는데
야짤
ㅇㅇ
05/20 9914 36
판티아 꼬라지보고 미루던 jcb카드 바로 개통했다
일반
ㅇㅇ
05/20 3036 0
내가 쓸려고 만든 유틸 프로그램임
유틸
몬스터가아니다신이다
05/20 4168 6
성인물 검열 심해지는건 미국 영향이 제일 큼
일반
황금황소
05/20 3266 -4
Taffy Tales Redux 2 발매일 드디어 결정 났네
일반
nbnz4112
05/20 1548 0
판티아 사태가 확대될거같네
일반
prolance
05/20 6672 -8
조이플 질문
질문
kimboggm
05/20 2256 0
방주는 진짜
일반
몬스터가아니다신이다
05/20 2488 1
Fantia 검열하는데 FANBOX는 괜찮나
일반
mzodia
05/20 2150 0
응석받이 처음 해보려는데 질문!
질문
lewdshrimp
05/20 3410 0
의술사2 제작결정 빨리 해주
일반
ㅇㅇ
05/20 2137 0
야겜 2달차 하면서 느낀점....
일반
oimasage
05/20 2179 0
[RJ01041101] 찬연가련 엑셀시폰 강화패치
요청
speranza
05/20 3137 0
스포) 부계에 잠든 왕녀의 아바돈.. 진엔딩은 아직 멀었다.
후기 및 공략
이상성애
05/20 6235 6
판티아 난리났네
일반
scint
05/20 4535 0
소리) 동음 고수 구해요
질문
라부이
05/20 2025 1
음욕성녀 근황
정보
sorbe123
05/20 4830 9
의성어를... 굳이 번역 해야할까?
야짤
5dk2io1
05/20 3582 0
[복구요청] 교배프렛서 1.0.4 기번+이미지
요청
유느크
05/20 8515 0
망가 뷰어 사이트 새로 만들었어요
작업현황
hiromi
05/20 8739 91
솔직히 판티아는 알빠노긴한데
일반
ㅇㅇ
05/20 3018 0
[복구요청]마계동 시리즈
요청
printink
05/20 3342 1
비월선행록 성주 유혹 퀘스트 어케 진전시킴?
질문
ismi8
05/20 4801 0
비월선행록 걍 존나 묵혀야겟다
일반
zigvalt
05/20 4671 0