kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4381 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
이것도 링크 암호화해야 하는지 모르겠네
[AI번역+검수=노모 단행본] 온천 하렘 이야기+ 첫 경험 시스터즈
동인
mybest
05/10 23947 106
콜걸 아가씨는 본방은 안 해요!
동인
hatlatal
05/10 26397 134
예능사무소에서 매니저했었을 적 담당했던 아이돌이 베개영업했는데 질문있어?
동인
hatlatal
05/10 20569 57
풍속에서 제자인 JK와 생삽입 절륜 섹스
동인
hatlatal
05/10 21140 53
폭주여친은 발정기
동인
hatlatal
05/10 15804 71
ai, 블아) 야한 속옷을 입은 하스미와 질내사정 섹스 (수요 조사)
야짤
kjh9304
05/10 9586 118
[강화버전]달인 퇴마사는 촉수요마 따위에 굴하지 않아_v260523
번역
dmol2279
05/10 66092 184
[구매보급]【오호 목소리】 왕자님계 소녀가 ○예가 되어서 길러봤다~ 오호 목소리 섹스~
소리
이름뭐하지
05/10 16305 88
직번[Ichiokumangenjaya (2-G)]편의점 알바 JK는 XXL 사이즈 콘돔을 사는 손님이 신경 쓰여 견딜 수 없다
동인
woo15
05/10 20634 137
후원보급,Br@n)보컬로 미쿠,구미 + 통합편집 (쿠로마루 해킹3)
영상
비밀봉투
05/09 20217 93
[요청복구] [총 4편] 잔소리많고 육덕한, 스케베 데카파이 엄마가 자위하는 모습을 본 마더콘 아들은 시리즈
소리
9ya
05/09 10678 88
26.05.12, 90일, 1.71 GB) RJ354108 비타민 퀘스트 2 v1.840. 개선 26.05.12.7z
번역
ㅇㅇ
05/09 41724 171
후원보급,Br@n)버튜버 노엘,마린,스이세이,멜,초코,클로에,페코마마 + 통합편집
영상
비밀봉투
05/09 34976 132
카프카의 은밀한 취미
야짤
idjsio864
05/09 21260 75
던전 앤 브라이드
미번
SML
05/09 24519 70
[구매보급] 음최도시 휴프노즘 v1.06 (1.07버전업)
미번
SML
05/09 27120 42
비월선행록 번역패치 이후 무기 강화 안되는 버그 수정 방법
정보
ccrruuddee
05/09 16609 26
[전연령]사랑이 무거운 안데레 소녀의 속삭이며 귀청소
소리
siroyume
05/09 15330 37
[어팬드/예고/발매완료]게임 3개
정보
잉여로운인간의생활
05/09 12221 19
후원보급,Br@n)젖소파티,벽람항로 카시노 + 통합편집
영상
비밀봉투
05/09 15421 82
이세계전생 사기 스킬을 가진 OL은 남자한테는 못 이겨!
동인
나나세마루
05/09 37330 128
이세계전생 사기 스킬을 가진 OL은 남자한테도 안 져!
동인
나나세마루
05/09 28401 120
Orange Piece 10개 모음집
미번
playthesean
05/09 14218 24
후원보급,Br@n)포켓몬 카나리,무쿠 + 통합편집
영상
비밀봉투
05/09 18268 68
해당 작품 왠만하면 구매하지마삼
정보
쩝냡
05/09 13473 52
[구매보급] RJ01044892 냄새 페티시 서큐버스의 땀으로 눅눅한 페로몬 착정
소리
gnrjrdtjcft
05/09 12713 50
[구매보급] RJ01499531 보물 상자 음란 『쌍』 ~미믹 서큐버스~ 당신은 미끈미끈 뭉툭한 거구 쌍둥이 서큐버스가 기다리는 미믹에 갇혔다!? ♡
소리
gnrjrdtjcft
05/09 11171 63
[기번] Orange Piece 써클 5개
번역
playthesean
05/09 40071 81
26.05.12, 90일, 1.21 GB) 1-1. RJ112559 ROBF v4.1 개조 21.03.21. 개선 26.05.12.7z
복구
ㅇㅇ
05/09 19911 47
[ろきた][번역] 클라라의 수난 , 백로의 치료 1, 2 , 헤르타 예비 바디
동인
doyoulikekim
05/09 26490 74