kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4371 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
이것도 링크 암호화해야 하는지 모르겠네
[ie] 3갸루
동인
ㅇㅇ
05/11 44143 343
[구매보급] [그 친구 아닙니다] RJ01553360 애프터 라이브
소리
summer4552
05/11 10444 45
[ai노모번역=612p] 이세계 하렘이야기 1~9.5
동인
mybest
05/11 28320 120
[보이스코믹][구매보급][한] 악의 앞잡이가 되어서 ~마법소녀를 능욕하다
소리
책먹는망아지
05/11 20016 97
(AI 번역 & 이미지 번역) RJ01482469 최면 어플 NTR V1.0.4
번역
gyhaga
05/11 65365 320
포레스티아 v1.4.0 업뎃완료 + 음성추가 DLC 예고페이지 공개
정보
kkkkkk0909
05/11 15001 47
제 아내들 ai프롬포트 궁금해하시는분들 많으셔서 올려봄
야짤
오곡아줌마
05/11 19034 64
(구매보급, 번역요청)Re-Public of Baldrheimr 1.70
미번
라스트
05/11 16203 20
AI) 까페에서 일하는 무표정쨩
야짤
miso5
05/11 16464 76
미끼 치한 수사관 리나 유저 모드 업데이트 1.06
정보
happy123
05/11 15765 21
[구매보급.AI번역,미검수][후타나리,TS]RJ01617031 욕망의 교회
번역
ODSDO
05/11 35201 123
[야애니/알림] 음오옥 똰지 6화 업 알림
영상
공승아
05/11 23541 42
꽃봉오리가 개화할 때 후속작 「동정 최면~40세 동정이 처녀를 최면 훈련?~」정보 공유
정보
als149
05/11 6398 16
ai)내 정실임
야짤
오곡아줌마
05/11 13205 45
TU1EdHlwZTg3 모음집 업데이트 알림
영상
hannanas
05/11 22601 71
가챠 번역끝났다.
작업현황
아이기스맘
05/11 8685 26
[ai번역+이미지번역] 화려하게 뇌쇄♪ 쿠노이치가 간다! ~분홍빛 파렴치 인법첩~
번역
askted
05/11 33595 119
(일부직번) [そんだ壊] 그녀에게서 담배 냄새가 난다
동인
kason
05/11 28036 76
직번) [Agata] 알몸생활 18화
동인
qlalfsla
05/11 25410 47
[구매보급]츠요츠요 여자 상사와, 와케라세 엄청 야한 목소리 교미, 오망코는 요와요와였다.
소리
이름뭐하지
05/11 10019 83
[5/11] 신춘특집 1부
영상
브레머튼
05/11 18235 102
[5/4] 시시아 (ZZZ)
영상
브레머튼
05/11 30764 105
[후타주의] 스파클 & 스파키 (누드)
영상
브레머튼
05/11 24721 95
플뢰르 드 리스 (명조)
영상
브레머튼
05/11 15344 91
[후타주의] 관리자 & 이본 파이널
영상
브레머튼
05/11 18147 83
미번) RJ01587658 촉수에 패배한 성녀, 무참 触手に敗北した聖女、無惨。
동인
심캣
05/11 21039 19
[미번][번역요청] 借金JK人生NTRゲーム
미번
무상의행복
05/11 13397 42
[akahon akamoto][ai번] 내 거유 여자친구가, 바람둥이(난봉꾼)에게 집 안에서 NTR
동인
latte
05/11 28387 68
공략, 스포)알미오시온의 의술사
후기 및 공략
havanacuva
05/11 12957 26
[RJ366178] 저음 다우너계 공주님의 오호고에 러브러브 아기만들기! 시리즈
소리
hun99
05/11 8689 55