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
이것도 링크 암호화해야 하는지 모르겠네
빨간처방전 작가 모음집
영상
lalolo
05/21 39834 245
커뮤가 어색한 퇴마사는 촉수요마에게 굴복하지 않는다 근황
정보
sorbe123
05/21 11352 17
건방진 암컷 흡혈귀와 신음의 숲 스팀 세이브 올려줄 수 있나요?
요청
dydeh
05/21 2407 -1
[구매보급]오르가즘 여친~쿨한 소꿉친구와 방에서 오호 목소리 오르가즘 에로!~
소리
이름뭐하지
05/21 9342 49
제미나이 한테 겜 찾는거 물어봐도 못찾겠음
질문
kku213
05/21 3217 -1
근데 진지하게 한국에서는 야겜 만들면 안됨?
질문
sinbiru
05/21 5085 0
발 좋아하는 소붕이들을 위한 씬 정리
후기 및 공략
인생좆망함
05/21 5324 13
[자체한글/구매보급] RJ01582518 이세계 섹스촬영 아가씨 ~아테루 편
번역
ArIso
05/21 51928 166
던전 위즈걸 asmr
야짤
zimbabwe
05/21 6823 4
종말얼터 위험일에 ㅈㄴ 굴렸는데
일반
띠띠용
05/21 5381 0
[구매보급,TS물,여체화]白龍ノ巫女と神宿りの禍ツ島, 최신버젼(패치버그수정만있음)
미번
good1144
05/21 9268 19
비월선행록 에서 시공터널은 어디 있는것임???
질문
맛트
05/21 5205 0
비타퀘2 업스케일판 카이리 얼굴 이미지 깨짐 (a/s)
복구
sinbiru
05/21 21642 40
존재감 여동생 이제 자동업뎃 안되나보네
일반
맛보기
05/21 2607 2
[영상 복구요청] 米悠ch (JP) KKD 작가 영상 복구요청
요청
silverlyfox
05/21 2855 1
[미번]Fate Grand Mamma(FGM) ver 105
미번
우욿
05/21 6922 16
님포마니아 하는데 승급전에서 막힘
질문
I하이
05/21 3074 2
나룸메 My Cute Roommate 1.2를 살려주세요
요청
iciqog123
05/21 3007 2
nyuu가 원작&콘티 맡고 작화 다른 사람한테 돌린 책들 보는데
일반
laskokoi
05/21 3934 0
파라다이스 서큐버스 엔딩
질문
뜌따
05/21 4504 1
Zurikishi 순애채널에서 본 것 같은데
일반
dydeh
05/21 3857 0
비월선행록 오류
질문
opensouce1
05/21 2030 0
처음보는 펫인데
야짤
849871
05/21 5409 5
스팀에 있는 시니시스타2 따로 패치 해줘야함?
질문
alala
05/21 3313 0
테블릿으로 야겜하는거 뭔가 어정쩡하네
일반
마검사리네최고
05/21 4907 0
이번 검열사태 꽤 심각한가보네
일반
blendersine
05/21 4917 0
아내한테 야밍아웃 가능?
질문
oimasage
05/21 5369 0
기리기리엔진 실행 버그
질문
yeil278360
05/21 1767 0
RJ01041019 게헨나 (ゲヘナ) 1.09 복구 요청 드립니다.
요청
mu52w
05/21 6230 0
[버전업 알림]휴프노즘 번역 1.08 버전업해써
일반
saika
05/21 2569 15