mirror of
https://github.com/benbusby/whoogle-search.git
synced 2025-07-09 03:04:13 -04:00
The results return an empty div with a background color set (not sure why, not generated on Whoogle's side). This unsets the background color so that at least it isn't visible.
49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
from bs4 import BeautifulSoup
|
|
|
|
|
|
class GClasses:
|
|
"""A class for tracking obfuscated class names used in Google results that
|
|
are directly referenced in Whoogle's filtering code.
|
|
|
|
Note: Using these should be a last resort. It is always preferred to filter
|
|
results using structural cues instead of referencing class names, as these
|
|
are liable to change at any moment.
|
|
"""
|
|
main_tbm_tab = 'KP7LCb'
|
|
images_tbm_tab = 'n692Zd'
|
|
footer = 'TuS8Ad'
|
|
result_class_a = 'ZINbbc'
|
|
result_class_b = 'luh4td'
|
|
scroller_class = 'idg8be'
|
|
line_tag = 'BsXmcf'
|
|
|
|
result_classes = {
|
|
result_class_a: ['Gx5Zad'],
|
|
result_class_b: ['fP1Qef']
|
|
}
|
|
|
|
@classmethod
|
|
def replace_css_classes(cls, soup: BeautifulSoup) -> BeautifulSoup:
|
|
"""Replace updated Google classes with the original class names that
|
|
Whoogle relies on for styling.
|
|
|
|
Args:
|
|
soup: The result page as a BeautifulSoup object
|
|
|
|
Returns:
|
|
BeautifulSoup: The new BeautifulSoup
|
|
"""
|
|
result_divs = soup.find_all('div', {
|
|
'class': [_ for c in cls.result_classes.values() for _ in c]
|
|
})
|
|
|
|
for div in result_divs:
|
|
new_class = ' '.join(div['class'])
|
|
for key, val in cls.result_classes.items():
|
|
new_class = ' '.join(new_class.replace(_, key) for _ in val)
|
|
div['class'] = new_class.split(' ')
|
|
return soup
|
|
|
|
def __str__(self):
|
|
return self.value
|