kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4316 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
자체한글 - 뒷계 까발린다! 러브호텔로 와라! ver.체험판
번역
kkkkkk0909
05/17 39240 123
[버전업 알림] RJ432297 크로네의 기분 v1.0.3
번역
qqoro
05/17 30661 79
비월선행록 간단한 팁
후기 및 공략
kimms1104
05/17 23288 15
(번역)(TS)나는 아이의 엄마가 되어버렸다.
동인
멕무
05/17 13967 56
ai) NTR 접대골프3
야짤
ai0098
05/17 14577 133
린네아 (원신)
영상
브레머튼
05/17 12376 70
AI, 셀레스포니아) 아마네와 야구권 게임(가위바위보 게임)
야짤
miso5
05/17 11364 130
[요청복구] RJ01107130 너에게 가르치는야한 일
복구
h-aszzcb
05/17 26456 74
[5/17] 버니스 & 이블린 2
영상
브레머튼
05/17 23482 141
나는 왜 ㅅㅂ 집는것마다 이러냐
야짤
5dk2io1
05/17 13293 53
[구매보급][한국어 자막판]당신을 엄청 좋아하는 초변태 폭유 상사와 후배가 아양 떨며 마구 구애하는 알콩달콩 임신 하렘
소리
이름뭐하지
05/17 15809 130
[구매보급/버전업] RJ01584572 여동생 H –짧은 하루– Ver1.0.2
번역
사과체스
05/17 38945 134
ntl 백합을 즐겨야 할 때는...
소리
gansik
05/17 13493 61
[번역] 재미삼아 폐허에 갔다가 귀신이 붙은 JK
동인
마법우엉
05/17 24106 89
[번역]사고 물건에서 며칠을 보내야 유령을 만날 수 있어!? 일주일 도전 방송
동인
마법우엉
05/17 22735 89
[번역]유령에게 만져지며 방송하는 스트리머
동인
마법우엉
05/17 18767 63
[요청 복구] Succubus Temptation 2.0.0
복구
okviewer
05/17 24892 72
[버전업] [구매보급] RJ01214867 둘만의 생활_ver1.671 (26.05.05)
미번
gkqisq
05/17 11363 52
AI번역, Takurowo) 건방진 갸루를 서큐버스화 시켜서 혼내줬던 건 05
동인
sexe1
05/17 20661 117
U2hhbXVNTUQ 작가 인생명작 가져옴,,!
영상
hannanas
05/17 26792 109
청아 / 블아) 히카리와 전철 안에서
영상
darkunicorn
05/17 38259 98
직번) ※취향주의 [John K. Pe-ta] 도쿄 굉장해
동인
qlalfsla
05/17 25822 41
[구매보급 겸 자막요청]네토라세 카운셀링~노노짱편~(5/25 업링크 갱신)
소리
albanom
05/17 18486 84
이미지로 작가 or 출처 찾는 사이트
정보
darkunicorn
05/17 7676 24
청아 / AI) 금단○리 납작가슴 소녀 100명이랑 학교에서 ㅅㅅ촬영 질내사정 ㅅㅅ (禁断〇リ つるぺた少女100人と学校でハメ撮り中出しSEX)
영상
darkunicorn
05/17 37463 130
[요청복구/테스트] RJ065120 호스피탤러티 ~어느 병원에서의 너무 에로한 입원 성활~ 영상판 포함
복구
ㅇㅇ
05/17 19428 56
[요청복구] 히프노시스 아카데미, 신참 기사 라티, Nano-control Plus
복구
mmmff
05/17 25259 49
Yoshio Ereki, AI번역) 네가 임신할 때까지 한계 돌파 섹스
동인
sexe1
05/17 34100 200
[ VAM ] awakening - Abracadabra [ Zhuang Fangyi ]
영상
s99a99
05/17 18162 70
[요청 복구] RJ292145 던전즈 레기온
복구
시라스 아즈사
05/17 22911 62