kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4243 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
[복구요청] RJ01557100 コトネイロ 코토네이로
요청
hanwang
04/25 6384 17
명탐정S37 1.03 (피드백적용)
번역
아이기스맘
04/25 32014 105
[미번/번역요청]RJ01361520 Trial of lust (버그 수정판)
미번
bird-person
04/25 21622 43
[AI번역/이미지 번역 추가] 코스플레이어 우타네를 빼앗겨 버립니다.
번역
미식이네
04/25 94227 477
번역) [♀こみ] 미요 강제 에로 코스프레
동인
cyberse
04/24 28312 67
【명일방주】카티의 타락 임무 녹화 영상 [NTR] (자막) (브금,대사추가)
영상
Ghost
04/24 33407 194
청아/직번]Rakkasuru Ringo(Ogata Fubuki)편하게 가자
동인
woo15
04/24 23147 17
[미번/구매보급] [Isenori] 교실의 그 아이는 인간을 그만둔 젖소가슴 변기녀 19
동인
gomdong2021
04/24 14485 22
[요청복구] RJ01211175 [一歩も下がるな!!!] 나의 그녀는 정의의 히로인 〜그런 그녀는 오늘도 패배한다〜
복구
carstein
04/24 30662 59
[미번/구매보급] [Isenori] 음침한 여동생을 『교육』해서 쾌락 중독의 육변기로 만든다 28
동인
gomdong2021
04/24 18794 29
[알림] AI 소녀 재복구
복구
reterset
04/24 42444 41
[구매보급]거유 변태 연금술사와 그 어머니가 자지에 아첨하며 봉사해 주는 이야기♪
소리
이름뭐하지
04/24 10882 70
[한글자막] 어메이징 디지털 서커스 9화 유출!
영상
실루엣21
04/24 36055 161
[구매보급][한국어 자막판]거유변태 연금술사가 ○밥투성이 자○에 봉사해주는 이야기♪
소리
이름뭐하지
04/24 11731 89
파이즈리 위원회 위원장 '키리가야 스구하' [소트 아트 온라인](기본 + 태닝 자국 버전)
영상
브레머튼
04/24 34229 213
Daily Lives My Countryside 번역 작업 중 (Ver 0.05)
번역
감자떡사요
04/24 32739 191
흑의 교실 움떡추가판
미번
썩은동태눈깔맨
04/24 21945 27
제인 도 (ZZZ)
영상
브레머튼
04/24 25205 96
[구매보급] [번역요청]RJ01587908 コスプレイヤー うたねとられちゃいます
미번
Ghost
04/24 60268 147
topu 3개
영상
haskall
04/24 25739 159
[구매보급]【한국어 자막판】 【키스특화】사에키 선배와 방과 후 키스 연습~겨울방학 첫 참배 데이트편~【역NTR】
소리
puella
04/24 16173 97
[구매보급][초로인 오호 목소리]당신을 싫어하는 쿨한여신관에게 오호봉사를 가르쳐 보았다
소리
이름뭐하지
04/24 12737 51
(요청복구) 추상의 이마주 ver1.2 (追想のイマージュ)
복구
sinryeong
04/24 25201 51
(요청복구) 미아 쨩은 엣찌한 무녀님
복구
sinryeong
04/24 34210 105
1.77 GB, 90일) RJ156151 러브 레이퍼! 마키×진찰실 (자동번역)
복구
ㅇㅇ
04/24 32332 112
[구매보급][오호 온리]오빠 너무 좋아하는 여동생과 매일 언제 어디서든 발정 러브러브 교미
소리
이름뭐하지
04/24 18213 53
AI) 셀레스포니아 촬영회
야짤
miso5
04/24 15972 106
[AI번역]오늘도 재워줘♪ ~거유 갸루와의 꽁냥꽁냥 동거 라이프~
번역
솔라셀
04/24 43437 175
직번)[sasaki maru]Inma-San Sakaotoshi ~음마의 역타락~
동인
rjwkdrmschl
04/24 15045 50
[자막 영상 포함]설연 보O 프렌즈Triangle~응석받이&달달한 도발・누나 둘이 함께 착정…… 하지만 끝도 없는 정력으로 한꺼번에 역관광 보냈습니다~
소리
dasdaa
04/24 22055 165