#Start by putting this file in either the OpenRCT2 'object' folder, or a fresh new folder within it (recommended), calling it 'nedesigns_dump' import mechanicalsoup import requests import re b = mechanicalsoup.StatefulBrowser() url = "https://www.nedesigns.com/rct2-objects/" b.open(url) list = [] #432 is the last page of objects on nedesigns.com as of the rewriting of this program, but scroll to the bottom of the page and figure out how many pages there are, then update this number, if you want it to go through every page. The added section will sort the results in order of oldest to newest ('newest-ascending' = 'na'), returning RCT2's native objects first. There are ~33 pages of native objects, thus the first downloadable objects are on page, so that is where the range will begin. for i in range(34, 432): full_url = f"{url}page-{i}?order=na" b.open(full_url) ext = re.compile('.*rct2-object\/\d*\/.*\/download\/') links = b.get_current_page().find_all('a') for link in links: if ext.match(link.attrs['href']): list.append(link.attrs['href']) print(link.attrs['href']) for link_url in list: #Depending on where this document is located, it will overwrite any existing .DAT objects sharing the name of those not in their own folder within whatever folder this document is saved. We recommend putting it into its own separate folder and then replacing everything manually once complete. filename = link_url.split('/')[-3].upper() + '.DAT' open(filename, 'a').close r = requests.get(link_url, stream=True) print('downloading' , link_url) with open(filename, 'wb') as f: for chunk in r.iter_content(chunk_size = 1024): if chunk: f.write(chunk) #Thanks to user DeathKontrol and their Python-fluent friend (unnamed) for creating the original compiler! Credit to OPStellar and the Python Discord server's Help Team for working to incorporate the ability to overwrite the older versions of files with the newer ones! (Python3 uses f-strings, which is what the f"{url}…{i}…" part is.) Thanks also to the web designers for incorporating the function of sorting by newest-ascending to the rct2-objects url (as opposed to javascript or something)! OPStellar apologizes for not making a version for Windows, as he does not own a Windows device and would not want to release something untested.