kone
소미소프트

소미소프트

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

07/07/2025, 06:15:32
유틸
4221 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
[요청복구] RJ01414102 이상한 형무소와 음욕의 지하 미궁 ~빈틈투성이인 나나의 H한 프리즌 브레이크~
미번
retanya
05/26 7579 17
[AI 번역] [むきぐり工房] 언니에게 거유를 자랑하다 유출되서 혼쭐난 여동생
동인
ed123
05/26 14101 23
9시8분에 올라온 시골스키 근황
정보
sorbe123
05/26 4750 19
린네 Full 영상 (명조)
영상
브레머튼
05/26 16573 106
[신작] 카지노 (블아) 4k / 1080p
영상
브레머튼
05/26 27782 286
씨빨쏔쓰!!!!!!!!!
작업현황
ㅇㅇ
05/25 7974 54
5월 30일을 새로운 기념일로 지정합니다
정보
촉촉한촉수
05/25 9314 28
Mr. No Face 스파키x스파클
영상
참새
05/25 15116 105
AI 번역, 검수) Orange Piece 써클 10개 모음집
번역
playthesean
05/25 26455 103
90일, 2.33 GB) RJ262862 [神乳] 아일랜드 사가 -Island SAGA- v1.0.6 +.7z
복구
ㅇㅇ
05/25 14931 47
天平キツネ A39 밀티나
영상
참새
05/25 14561 96
[구매보급/자체한글] 세뇌앱2 apk
WOEAKE222
05/25 9413 64
[요청복구] [RJ282703] 출동! 전라풍기위원회
복구
ㅇㅇ
05/25 11622 26
900GB 3D VR영상 방주 공유
영상
ㅇㅇ
05/25 16927 76
청아) [atage] 편리한 오나홀로 길들이는 방법 1/5
동인
HJY
05/25 38569 206
[ai 번역] [Usagi Nagomu] The Everlasting Elf of the Evening - 유구의 창 엘프 1~6 [p.216]
동인
mybest
05/25 14269 57
관문지기 msg 작업 현황 - 5
작업현황
fin768
05/25 4692 29
[AI번역] [패치파일만] RJ224282 Spiral Legend V 1.51 수정v2
번역
dadskey
05/25 14277 57
[ai 번역][Usagi Nagomu] 황혼의 창 엘프 7~9 [p.118]
동인
mybest
05/25 13322 64
유부녀 세리아의 타락과 배덕 발매일 확정
정보
wouwouer
05/25 7467 34
[구매보급] RJ01271506 フォレスティア~ちいさな町の牧場ライフ~ 1.41 + 음성DLC 적용합본
미번
fbrpdlawm
05/25 21848 163
눈을 떠보니 목이 잘려 있는 여주인공
일반
mowajelly
05/25 6603 26
[ai 번역][Usagi Nagomu] 황혼의 창 엘프 총집편 에일린 파트 1 [p.137]
동인
mybest
05/25 16195 69
청아)zzz망상병 집단과 파티
영상
gal-joa
05/25 26853 87
소와 양의 잡화 상점 이미지 번역 기록 -3-
작업현황
5dk2io1
05/25 3117 23
[복구] 57eL5q+U44Om44Kt 25년 6월~
영상
cho980621
05/25 19243 117
a2FvZ3Vt 무삭제
영상
claire
05/25 33559 165
[미번/구매보급] [Isenori] 교실의 그 아이는 인간을 그만둔 젖소가슴 변기녀 20
동인
ㅇㄹㅋㄴ
05/25 8028 16
[미번/구매보급] [Isenori] 음침한 여동생을 『교육』해서 쾌락 중독의 육변기로 만든다 29
동인
ㅇㄹㅋㄴ
05/25 8653 15
[Pistonring Nishizawa] 갸루랑 미친 듯이 노콘질싸 섹스하는 이야기 #6
동인
1uF
05/25 17909 92