Skip to content

Instantly share code, notes, and snippets.

@kappa7194
Created October 8, 2012 22:01
Show Gist options
  • Save kappa7194/3855272 to your computer and use it in GitHub Desktop.
Save kappa7194/3855272 to your computer and use it in GitHub Desktop.
BBF download checker
import bs4
import re
import urllib2
class Project:
project_page_url = None
download_page_url = None
title = None
is_download_page_working = False
def __init__(self, project_page_url):
self.project_page_url = project_page_url
self._get_project_title()
self.__get_download_page_url()
if self.download_page_url is not None:
self.__check_download_page()
def _get_project_title(self):
html = urllib2.urlopen(self.project_page_url)
soup = bs4.BeautifulSoup(html)
self.title = soup.find("h1").string
def __get_download_page_url(self):
html = urllib2.urlopen(self.project_page_url)
soup = bs4.BeautifulSoup(html)
download_image = soup.find(title="DOWNLOAD")
if download_image is not None:
download_link = download_image.parent
if download_link is not None:
self.download_page_url = download_link["href"]
def __check_download_page(self):
html = urllib2.urlopen(self.download_page_url)
soup = bs4.BeautifulSoup(html)
accept_button = soup.find("img", src=re.compile("accetto"))
self.is_download_page_working = accept_button is not None
class Checker:
projects_page_url = None
def __init__(self, projects_page_url):
self.projects_page_url = projects_page_url
self._check_projects()
def _check_projects(self):
html = urllib2.urlopen(self.projects_page_url)
soup = bs4.BeautifulSoup(html)
download_snippets = soup.find_all(id=re.compile("^attachment"), class_="wp-caption aligncenter")
if download_snippets is not None:
for download_snippet in download_snippets:
download_link = download_snippet.find("a")
if download_link is not None:
project = Project(download_link["href"])
print("%s: %s" % (project.title, project.is_download_page_working))
if __name__ == "__main__":
projects_page_url = "http://www.vazcomics.org/bbf/le-nostre-serie/"
checker = Checker(projects_page_url)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment