Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- from tkinter.ttk import Separator
- import requests
- from pyunpack import Archive
- from os import remove
- from bs4 import BeautifulSoup
- import os.path
- def find_maps(tag):
- url = "https://gamebanana.com/search?query=" + tag + "&game=4660§ion=Map" # Ссылка для запроса
- soup = BeautifulSoup(requests.get(url).text, 'html.parser') # Находим класс с названиями карт и ссылками на карты со страницы поиска
- names_class = soup.find_all(class_='Identifiers')
- names = []
- ids = []
- for item in names_class: # Вырезаем названия и id карт
- map = item.find('a')
- names.append(map.contents[0].replace('\n',''))
- link = map.get('href')
- ids.append(link[link.rfind('/')+1:])
- return names, ids
- def download_map(id, path):
- info_link = "https://api.gamebanana.com/Core/Item/Data?itemtype=Map&itemid=" + id + "&fields=Files().aFiles()"
- info = requests.get(info_link) # Получаем информацию о файле карты при помощи gb api
- info = info.text.split(': ')
- download_link = info[4][:info[4].find(',')].replace('"', '').replace('\\', '') # Получаем ссылку для скачивания
- filename = id + ".rar"
- file = open(filename, "wb") # Скачиваем архив и записываем его в файл
- rar = requests.get(download_link)
- file.write(rar.content)
- file.close()
- Archive(filename).extractall(path) # Распаковываем и удаляем архив
- remove(filename)
- def search_maps():
- global maps, ids
- maps, ids = find_maps(tag.get())
- listbox.delete(0, END)
- for map in maps:
- listbox.insert(END, map)
- def download_maps():
- for map_id in listbox.curselection():
- download_map(ids[map_id], path.get())
- def save_path():
- f = open("path.dat", 'w')
- f.write(path.get())
- f.close
- def init_gui():
- global tag, path, listbox, maps, ids
- window = Tk()
- window.title("CS:GO maps finder and downloader")
- scrollbar = Scrollbar(window)
- scrollbar.pack(side=RIGHT, fill=Y)
- listbox = Listbox(yscrollcommand=scrollbar.set, width = 40, height=20, font=("Arial",12), selectmode=MULTIPLE)
- scrollbar.config(command=listbox.yview)
- path = StringVar()
- tag = StringVar()
- pathbox = Entry(window, font=("Arial",12), width = 40, textvariable=path)
- tagbox = Entry(window, font=("Arial",12), width = 40, textvariable=tag)
- if os.path.isfile("path.dat"):
- f =open("path.dat")
- pathtxt = f.read()
- f.close
- else:
- pathtxt = "path to CS:GO maps folder"
- pathbox.insert(END, pathtxt)
- tagbox.insert(END, "map search tag")
- search_btn = Button(window,text="Search maps", font=("Arial",12), command=search_maps, width = 40)
- download_btn = Button(window,text="Download selected", font=("Arial",12), command=download_maps, width = 40)
- save_btn = Button(window,text="Save path", font=("Arial",12), command=save_path, width = 40)
- tagbox.pack()
- search_btn.pack()
- Separator(window).pack(pady=10)
- listbox.pack()
- download_btn.pack()
- Separator(window).pack(pady=10)
- pathbox.pack()
- save_btn.pack()
- window.resizable(0, 0)
- window.mainloop()
- init_gui()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement