kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4255 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
체험판 곧 나온다네
야짤
ㅇㅇ
05/17 9371 26
비월선행록 갤러리장면
질문
dodogod
05/17 3735 0
지금 transfer.it 나만 안되는거임?
질문
인생좆망함
05/17 4789 1
[복구] 알렉산드리나 세바스티안 (ZZZ) 복구영상
영상
브레머튼
05/17 16767 58
의술사 이거 게임적으로 소설적으로 존나 재미있네
일반
fusbriwidhei32
05/17 6756 0
와쿠와쿠 신작 뇌피셜 6/5 출시
정보
와들와들사시나무
05/17 7541 14
[복구요청] xenotake
요청
wmj18548
05/17 10308 0
[복구요청] 알렉산드리나 세바스티안 (ZZZ)
요청
raybbit
05/17 7663 -4
[복구요청] 서큐버스 니콜 데마라 (ZZZ)
요청
raybbit
05/17 4878 0
갑자기 더워진 요즘 어울리는 여름빛레슨
후기 및 공략
fourdragonruler
05/17 4368 4
옛날에 봤던 망가가 찾아지질 않아요
질문
5568569
05/17 4055 0
[복구요청] [니케] 신데렐라 (누드 + 바니걸)
요청
raybbit
05/17 2433 0
(구매보급)몬무스 터치
미번
stiveer
05/17 17706 40
[복구요청] RJ354420 リトルカノープス 복구부탁드립니다.
요청
발암
05/17 4748 0
[복구요청] 에이메스 S+ (명조)
요청
raybbit
05/17 9589 0
[복구요청] 黒月商会 흑월상회 [총 36편]
요청
ddd130559
05/17 7095 -6
의술사도 다했고 이제 뭐하지..
일반
ㅇㅇ
05/17 5201 0
청아, 직번) 클리토리스 사정조교
동인
rapbit
05/17 29293 86
ai) ----스압---- 실력지상주의 3명
야짤
Ghost
05/17 11111 22
[복구요청] RJ136232 거근으로 씨앗 목장이 되는 마을 ~ 명문 모녀들을 닥치는 대로 잉태 정복♪ 거리의 암혈이 나의 가축이 되고 싶어한다!
요청
jinnn1311
05/17 4559 0
[한글패치]비월선행록 V1.29_수정2
번역
아르
05/17 55005 238
농/수간)몸에 좋은 우리농수간물 컴션 신청한거
야짤
412343
05/17 13534 51
의술사의 거리 스토리 질문
질문
부탄가스
05/17 1721 0
섬홍전희 레밀리아
피드백
루미네순애
05/17 4004 3
자체한글 - 뒷계 까발린다! 러브호텔로 와라! ver.체험판
번역
kkkkkk0909
05/17 39162 123
의술사 진행 몇가지 질문드립니다
질문
rummy
05/17 2759 0
도미나 ㅅㅌㅊ 망가나 영상 어디 없나...
질문
handhand
05/17 5426 -1
앵간해서 평점안박히는애들은 찜목록넣어두고 평점박힌거보고 사는편이라 지뢰는피했네
야짤
kkkkkk0909
05/17 3584 1
[버전업 알림] RJ432297 크로네의 기분 v1.0.3
번역
qqoro
05/17 30661 79
[복구요청] [한글패치] 유니슨 코드 ver1.06
요청
casa2136
05/17 8583 2