kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4217 views · 13 likes

이전 거처 멸망 전에 만든 방주가 감당이 안되서 gpt로 프로그램 짜봤는데 생각보다 유용한것 같아서 평소에 받은 은혜를 갚아보기 위해서 올려봄.

세줄요약 있음

실행하면 이런 화면이고, 여기서 방주 주소 추가랑 제거 가능함.


코드

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
[Nakamo] 갸루 여자 상사와 불륜하는 이야기 5
동인
1uF
05/27 5003 12
밀옥 전편 번역 한사람?
질문
iwwdi
05/27 712 1
🔞 [작품 제작 일지] 버전업, 업데이트, H씬 제작 관련 소식이에요!!
창작
폭8맛
05/27 1409 8
이건 농이냐 빵이냐 그것이 문제로다..
야짤
kawineo
05/27 2272 3
[복구요청]RJ405582) 마녀는 복수의 밤에 (Night of Revenge 1.07) Hellgate mod
요청
lovets
05/27 1056 1
구매 보급 / 버전업 / 자체 번역) 만차율 300% 3 Append 1~3 ver.26.01.24 (공략집 추가)
번역
딸ㄱ기맛
05/27 11677 62
마음의 편안함은 방주에서 나오는듯
일반
아로나
05/27 1399 1
아오 검열관 dl에서 이미 샀는데 스팀으로 한번더 사버렸네
일반
미누볼
05/27 816 0
[세이브요청] RJ01140283 아이리스 크로니클
요청
tsd009
05/27 890 0
솦붕이들이 생각하는 커마갓겜은 뭐임??
일반
빅핫후
05/27 1047 -1
메시아 로리타 맵찾기 빡쳐서 지도 만드는 중
일반
qqqqq
05/27 842 4
젠장 이제 외장하드도 비싸져서 더이상 용량 못늘리는데
일반
sweetroll
05/27 757 0
메○가키 스트리머와 오프파코 → 건방진 멘헤라가 내 고기오나홀로 타락할때까지
소리
카치마치
05/27 3494 25
[복구요청] 시니시스타2 아헤모드 요청합니다.
요청
sksmsalstjd
05/27 1329 4
혹시 발언 금지인 작가같은건 어떻게 체크함?
질문
portear
05/27 736 0
(요청복구) 잠입! 의혹의 세뇌 SEX 컬트 종교 (潜入!疑惑の洗脳SEXカルト宗教) v250122
복구
redive
05/27 6765 29
alpha-라피아 애널자위
동인
k8625
05/27 7456 27
달콤달콤 소악마 3 ~초밀착 0거리 괴롭힘~
소리
카치마치
05/27 2280 23
[복구요청] 미소녀 두 명에게 농락당하는 영상 (신작 + 사운드 추가)
요청
domini-ing
05/27 1257 0
사이클론 신작 야겜 cien 정보갱신 Q&A일부만
정보
kjalar
05/27 1949 10
여기에 fanbox 같은데서 만든 야한 영상도 올릴 수 있어?
질문
kawineo
05/27 1834 0
커미션짤,탈난소)시조 타카네의 팬감사제
야짤
superkiller123
05/27 2279 7
검은파스타-애널병기
동인
k8625
05/27 6940 19
[구매보급][번역요청] RJ01577390 突然同居した従姉妹はVTuberになるらしい-俺だけが知る秘密の素顔-
미번
duck1028
05/27 4321 32
검은파스타-아나르왕국
동인
k8625
05/27 6496 28
비월선행록 통유현체단은 보물지도로만 먹을수 있는듯
후기 및 공략
o0o99
05/27 1294 1
[AI/이미지번역] 내숭쟁이 변태 시스터 아리아와 폭유 H하는 RPG
번역
미식이네
05/27 15431 83
agent17 새엄마 업뎃 소식은 없음?
질문
djsdff
05/27 1046 0
프레이게임 안해본 뇌 팝니다
일반
fjeif2
05/27 1100 0
강스포) 색귀는 한심한 사랑을 보여준다
후기 및 공략
jiguhyu
05/27 1249 9