Thingiverse Zip Downloader

Overview

Thingiverse Zip Downloader

PHP License docker-github-actions

A scraper to bundle a zip archive with all stl files of one model found on Thingiverse.
Since they struggled around a lot with the download all files function on their website, they now completely removed it. For me, it is pita to download every file on it's own. I decided to make a quick poc for my personal use, and now I like to share it with maker/creator/programmer and many more :)

Status

Working poc (proof of concept), works for private personal use.

Installation

First clone the repo to your local environment and enter the directory

git clone url
cd thingiverse-zip-downloader

Option a: run with docker (recommended)

Build the docker image and start the container (maybe change port mapping to unallocated port)

docker build -t thingiverse-zip-downloader .
docker run -d -p 80:80/tcp thingiverse-zip-downloader -d

Option b: run with PHP directly on pc

You also can use PHP built in webserver. You will need the following php extension: dom, sockets, zip. Composer must be installed on your system and also the chromium browser as well. Currently, the name of the executable used is chromium-browser, if the name of the chromium executable differs from this, you have to change it in the source code. In src/Scraper.php on line 30 you can change it to the path where the application can find it. Then you have to do an install of the composer dependencies:

composer install -o

After this, you are ready to start the webserver. Enter the public directory of the repository and start it (maybe change port mapping to unallocated port)

cd public
php -S localhost:80

Finally

Start your preferred browser and navigate to http://localhost:80 (don't forget to change your port here as well) Paste the full url like https://www.thingiverse.com/thing:316595 or just the model id 316595 into the input field and press the download icon. After a certain time you will be offered a file download including all files in one zip archive.

Overview

License

Thingiverse-Zip-Downloader, a scraper to bundle a zip archive with all stl files of one model found on thingiverse.com.
Copyright (C) 2022 ThomasBoom89. GNU GPL3 license (GNU General Public License Version 3).

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see:

  1. The LICENSE file in this repository.
  2. https://www.gnu.org/licenses/.
  3. https://www.gnu.org/licenses/gpl-3.0.txt.

However, Thingiverse-Zip-Downloader includes several third-party Open-Source libraries, which are licensed under their own respective Open-Source licenses. Libraries or projects directly included:

  • chrome-php/chrome: MIT
  • Libraries dynamically referenced via Composer: run composer license to get the latest licensing info about all dependencies.
Comments
  • Blank page download.php

    Blank page download.php

    When trying to download i get a blank page and no download. It seems that thingiverse has changed there code to hide the download url the application is currently scraping.

    Any solution for this?

    bug 
    opened by wizz666 7
  • Composer(deps): Bump chrome-php/chrome from 1.3.0 to 1.4.0

    Composer(deps): Bump chrome-php/chrome from 1.3.0 to 1.4.0

    Bumps chrome-php/chrome from 1.3.0 to 1.4.0.

    Release notes

    Sourced from chrome-php/chrome's releases.

    v1.4.0

    • Added support for --no-proxy-server and --proxy-bypass-list
    • Added timeout option to Page::getHtml
    • Added Node::sendFiles method

    v1.3.1

    • Fixed issues with Keyboard::typeText with multibyte strings
    • Fixed issues with retina and scaled displays
    • Fixed issues with timeouts if system time changes
    • Fixed Mouse::find() after cursor has moved
    Changelog

    Sourced from chrome-php/chrome's changelog.

    1.4.0 (2022-01-23)

    • Added support for --no-proxy-server and --proxy-bypass-list
    • Added timeout option to Page::getHtml
    • Added Node::sendFiles method

    1.3.1 (2022-01-23)

    • Fixed issues with Keyboard::typeText with multibyte strings
    • Fixed issues with retina and scaled displays
    • Fixed issues with timeouts if system time changes
    • Fixed Mouse::find() after cursor has moved
    Commits
    • 757e8c5 Release 1.4.0
    • 6de0210 Update CODE_OF_CONDUCT.md
    • 433cde4 Update phpunit.xml.dist
    • cf66cdb Update CHANGELOG.md
    • 90b0da5 Merge branch '1.3' into 1.4
    • c68024c Release 1.3.1
    • 4ed67f3 Update LICENSE
    • b1d645b Revert "Revert "Add support for --no-proxy-server and --proxy-bypass-list Chr...
    • a953e1b Merge branch '1.3' into 1.4
    • a03581b Revert "Add support for --no-proxy-server and --proxy-bypass-list Chrome args...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    composer dependencies 
    opened by dependabot[bot] 2
  • Composer(deps): Bump chrome-php/chrome from 1.6.1 to 1.7.0

    Composer(deps): Bump chrome-php/chrome from 1.6.1 to 1.7.0

    Bumps chrome-php/chrome from 1.6.1 to 1.7.0.

    Release notes

    Sourced from chrome-php/chrome's releases.

    v1.7.0

    • Use command to guess the chrome executable in Linux
    • Officially support PHP 8.2
    • Fix extra HTTP headers

    v1.6.2

    • Fix intermittency in Mouse::findElement()
    • Fix scroll with values higher than possible
    Changelog

    Sourced from chrome-php/chrome's changelog.

    1.7.0 (2022-08-28)

    • Use command to guess the chrome executable in Linux
    • Officially support PHP 8.2
    • Fix extra HTTP headers

    1.6.2 (2022-08-28)

    • Fix intermittency in Mouse::findElement()
    • Fix scroll with values higher than possible
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    composer dependencies 
    opened by dependabot[bot] 1
  • Composer(deps): Bump chrome-php/chrome from 1.6.1 to 1.7.1

    Composer(deps): Bump chrome-php/chrome from 1.6.1 to 1.7.1

    Bumps chrome-php/chrome from 1.6.1 to 1.7.1.

    Release notes

    Sourced from chrome-php/chrome's releases.

    v1.7.1

    • Fix command execution in AutoDiscover

    v1.7.0

    • Use command to guess the chrome executable in Linux
    • Officially support PHP 8.2
    • Fix extra HTTP headers

    v1.6.2

    • Fix intermittency in Mouse::findElement()
    • Fix scroll with values higher than possible
    Changelog

    Sourced from chrome-php/chrome's changelog.

    1.7.1 (2022-09-04)

    • Fix command execution in AutoDiscover

    1.7.0 (2022-08-28)

    • Use command to guess the chrome executable in Linux
    • Officially support PHP 8.2
    • Fix extra HTTP headers

    1.6.2 (2022-08-28)

    • Fix intermittency in Mouse::findElement()
    • Fix scroll with values higher than possible
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    composer dependencies 
    opened by dependabot[bot] 0
  • Composer(deps): Bump chrome-php/chrome from 1.6.0 to 1.6.1

    Composer(deps): Bump chrome-php/chrome from 1.6.0 to 1.6.1

    Bumps chrome-php/chrome from 1.6.0 to 1.6.1.

    Release notes

    Sourced from chrome-php/chrome's releases.

    v1.6.1

    • Support Monolog 3
    Changelog

    Sourced from chrome-php/chrome's changelog.

    1.6.1 (2022-05-17)

    • Support Monolog 3
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    composer dependencies 
    opened by dependabot[bot] 0
  • Composer(deps): Bump chrome-php/chrome from 1.5.0 to 1.6.0

    Composer(deps): Bump chrome-php/chrome from 1.5.0 to 1.6.0

    Bumps chrome-php/chrome from 1.5.0 to 1.6.0.

    Release notes

    Sourced from chrome-php/chrome's releases.

    v1.6.0

    • Officially support PHP 8.1
    Changelog

    Sourced from chrome-php/chrome's changelog.

    1.6.0 (2022-03-30)

    • Officially support PHP 8.1
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    composer dependencies 
    opened by dependabot[bot] 0
  • Composer(deps): Bump chrome-php/chrome from 1.4.0 to 1.5.0

    Composer(deps): Bump chrome-php/chrome from 1.4.0 to 1.5.0

    Bumps chrome-php/chrome from 1.4.0 to 1.5.0.

    Release notes

    Sourced from chrome-php/chrome's releases.

    v1.5.0

    • Added Browser::getPages method
    • Added Page::waitUntilContainsElement() method
    • Added Page::setHtml() method
    • Added support for XPath by introducing Selector
    • Added Mouse::findElement() method
    • Switch to flatten mode

    v1.4.1

    • Added fallback to css layout metrics
    • Added missing destroyed setting
    • Prevent Node::querySelector from returning nodeId 0
    • Fixed "What's new" page opening on startup
    • More fixes to enable eventual PHP 8.1 support
    Changelog

    Sourced from chrome-php/chrome's changelog.

    1.5.0 (2022-03-25)

    • Added Browser::getPages method
    • Added Page::waitUntilContainsElement() method
    • Added Page::setHtml() method
    • Added support for XPath by introducing Selector
    • Added Mouse::findElement() method
    • Switch to flatten mode

    1.4.1 (2022-03-25)

    • Added fallback to css layout metrics
    • Added missing destroyed setting
    • Prevent Node::querySelector from returning nodeId 0
    • Fixed "What's new" page opening on startup
    • More fixes to enable eventual PHP 8.1 support
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    composer dependencies 
    opened by dependabot[bot] 0
Owner
Thomas
Thomas
Online All in One PHP Video & Audio Downloader From YouTube,Facebook,Twitter,Pinterest,Instagram,MXtakatak,IPL, Tiktok and 1000+ More Sites too

DLhut Contact me If You Find ANy Bug ... PHP Search and Download any Videos from any site. Online All in One Video & Audio Downloader From YouTube,Fac

Vijay Kumar 4 Nov 8, 2021
MainWP Child Plugin Auto Downloader.

This plugin checks to see if the MainWP Child plugin is installed and activated; If not, it will download it and install it.

Keith Crain 10 Sep 26, 2022
DLvidHUT Online All in One PHP Video Downloader

DLvidHUT Online All in One PHP Video Downloader API based PHP Video Downloader from YouTube, Instagram, Twitter, Facebook, Tiktok and many more (More Than YouTube DL)

Vijay Kumar 2 Dec 31, 2021
codecourse.com video downloader.

Codecourse Downloader Download codecourse.com videos. Description Inspired from iamfreee/laracasts-downloader. Download or update your local catalogue

Hakan ERSU 61 Nov 28, 2022
A Simple Facebook Video Downloader using PHP.

Facebook Video Downloader A simple Facebook Video Downloader using PHP. Feature Download Public Video Download Private Video All Quality How to use Co

Tran Viet Hoang 2 Sep 5, 2022
All in one Video Downloader - Download videos from facebook twitter youtube tiktok and 1000+ other sites .. made by Vijay Kumar

VKRdownloader Video Downloader by @TherealVKR Vijay Kumar .... Download Video From YouTube , Facebook , Twitter , Instagram , TikTok , And 1000+ Other

Vijay Kumar 35 Dec 29, 2022
Online All in One Video & Audio Downloader From YouTube,Facebook,Twitter,Pinterest,Instagram,MXtakatak,IPL, Tiktok and 1000+ More Sites too

DLhut Contact me If You Find ANy Bug ... PHP Search and Download any Videos from any site. Online All in One Video & Audio Downloader From YouTube,Fac

Vijay Kumar 6 Oct 11, 2021
Online All in One PHP Video & Audio Downloader From YouTube,Facebook,Twitter,Pinterest,Instagram,MXtakatak,IPL, Tiktok and 1000+ More Sites too

DLhut Contact me If You Find ANy Bug ... PHP Search and Download any Videos from any site. Online All in One Video & Audio Downloader From YouTube,Fac

Vijay Kumar 4 Nov 8, 2021
MainWP Child Plugin Auto Downloader.

This plugin checks to see if the MainWP Child plugin is installed and activated; If not, it will download it and install it.

Keith Crain 10 Sep 26, 2022
DLvidHUT Online All in One PHP Video Downloader

DLvidHUT Online All in One PHP Video Downloader API based PHP Video Downloader from YouTube, Instagram, Twitter, Facebook, Tiktok and many more (More Than YouTube DL)

Vijay Kumar 2 Dec 31, 2021
codecourse.com video downloader.

Codecourse Downloader Download codecourse.com videos. Description Inspired from iamfreee/laracasts-downloader. Download or update your local catalogue

Hakan ERSU 61 Nov 28, 2022
A Simple Facebook Video Downloader using PHP.

Facebook Video Downloader A simple Facebook Video Downloader using PHP. Feature Download Public Video Download Private Video All Quality How to use Co

Tran Viet Hoang 2 Sep 5, 2022
Tool for easy selection and export of user files in ZIP format.

Personal data export Idea Tool for easy selection and export of user files in ZIP format. Within a single selector, you choose all user data (much of

Baraja packages 2 Oct 18, 2021
Free ZIP Code API - Free Access to Worldwide Postal Code Data

About Zipcodebase - Free Zip Code API Zipcodebase is a zip code API that was founded in 2019 to solve common issues with postal code data. As we have

SaaS Industries 2 Nov 26, 2022
Simple, fast, isolated way to download+assimilate ZIP/TAR files

Composer Downloads Plugin The "Downloads" plugin allows you to download extra files (*.zip or *.tar.gz) and extract them within your package. This is

CiviCRM 6 Nov 19, 2022
List of France cities with zip codes, department codes, region codes, districts for former cities, GPS latitude longitude coordinates, and INSEE reference code.

List of France cities with zip codes, department codes, region codes, districts for former cities, GPS latitude longitude coordinates, and INSEE reference code.

Coercive 4 May 25, 2022
Small class to extract + compress .zip, .gz, .rar archives via browser.

The Unzipper The Unzipper extracts .zip and .rar archives or .gz/tar.gz files on webservers. It detects .zip/.rar/.tar.gz/.gz archives and let you cho

Lục Thiên Phong 10 Dec 24, 2022
IP2Location Yii extension enables the user to find the country, region, city, coordinates, zip code, time zone, ISP

IP2Location Yii extension enables the user to find the country, region, city, coordinates, zip code, time zone, ISP, domain name, connection type, area code, weather, MCC, MNC, mobile brand name, elevation, usage type, IP address type and IAB advertising category from IP address using IP2Location database. It has been optimized for speed and memory utilization. Developers can use the API to query all IP2Location BIN databases or web service for applications written using Yii.

IP2Location 7 May 21, 2022