kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4352 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
takeyuu 부잣집 갸루가 내 이성을 파괴해서 질싸 시키기까지
동인
SK
05/14 46754 224
[요청복구] 크로네의 기분 - 별 내리는 마을의 마녀 견습
복구
ulul2684
05/14 34108 38
[요청복구] RJ356209 청아) 동물 귀☆트레이닝 ~광폭한 동물귀 아가씨 조교 트라이얼~ ver.1.0.10
복구
Ghost
05/14 27407 33
TU1EdHlwZTg3 모음집 업데이트 알림
영상
hannanas
05/14 21390 37
커오메 회사 신작 커스텀 로맨스 시티 8월 28일 발매 예정
정보
돔마
05/14 15696 24
[구매보급][번역요청] RJ01627306 よこしま修行村 요코시마 수행마을
미번
cjweoic214
05/14 21260 66
eGlhbmd3ZWl0dWRvdQ 23년 모음
영상
karatro
05/14 24530 93
(코이카츠) 학원마스 프리셋 공유
유틸
pst0025
05/14 15650 43
[벽람항로] 다이호 (기본 + 누드)
영상
브레머튼
05/14 26625 122
[AI 번역][Shiv] 내가 아는 학생 회장이 아니었다
동인
히알룩스
05/14 20566 48
(코이카츠) 프리셋 공유
유틸
pst0025
05/14 11468 58
[버전업][번역요청] No Tomorrow Rebellion 1.03
미번
마카라이트
05/14 15791 19
[보이스코믹][구매보급][한] 여자 사진부와 아저씨 지도원 2
소리
책먹는망아지
05/14 12121 83
eGlhbmd3ZWl0dWRvdQ 22년 모음
영상
karatro
05/14 21681 77
[후남,미번]후타나리 조카 리아라쨩
동인
jinys9810
05/14 13519 17
AI) 무표정쨩 레이프
야짤
miso5
05/14 14459 81
[이종간 / 청아] 6J6e6J+75LiK5qCh 작가 모음
영상
yozuna
05/14 34044 106
[고전/레이프/BDSM/group] pretty pridot 통합버전
영상
미노타쿤
05/14 28410 206
직번) ※취향주의 [John K. Pe-ta] 어떡해가 멈추질 않아 + 선생님 완전 쉽네♥
동인
qlalfsla
05/14 24808 58
eGlhbmd3ZWl0dWRvdQ 21년 모음
영상
karatro
05/14 27116 68
타락신관: 여동생과 악마의 혈통(+DLC) 세이브
세이브
NF레쉬
05/14 21108 47
Cyclone) 벌써 29도라니 더우니까 아이스께끼~
야짤
drogba
05/14 14967 31
[자체한글] 상식개변 시뮬레이터 -최○ 앱으로 좋아하는 그 아이와 연인이 되자 v1.016
번역
하우두유두
05/14 110688 340
[구매보급]모녀덮밥. 싱싱한 백보지 딸과 보지털 수북한 부인한테 내 마음대로 사정♪
소리
이름뭐하지
05/14 11437 66
힘과 쾌락의 융해
소리
grebiy
05/14 18538 54
은랑 LV.999 (스타레일)
영상
브레머튼
05/14 16370 105
(최신화) [미번] 밀옥 전편 v1.5 (26.04.25) >> godot엔진추정
미번
kkkkkk0909
05/14 18642 37
그레이스 (ZZZ)
영상
브레머튼
05/14 18957 103
[구매보급][번역요청] 뒤쪽의 흥신소
미번
minki
05/14 17714 20
ai, 원신) 만취한 시틀라리를 침실로 데려가 잔뜩 섹스했다
야짤
kjh9304
05/14 20409 115