You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
715 B
Python
27 lines
715 B
Python
import re, base64
|
|
from resolv.shared import ResolverError, TechnicalError, Task
|
|
|
|
class OneChannelTask(Task):
|
|
result_type = "url"
|
|
|
|
name = "1channel"
|
|
author = "Sven Slootweg"
|
|
author_url = "http://cryto.net/~joepie91"
|
|
|
|
def run(self):
|
|
matches = re.search("https?:\/\/(www\.)?1channel\.ch\/external\.php\?.*url=([^&]+)", self.url)
|
|
|
|
if matches is None:
|
|
self.state = "invalid"
|
|
raise ResolverError("The provided URL is not a valid external 1channel URL.")
|
|
|
|
try:
|
|
real_url = base64.b64decode(matches.group(2)).strip()
|
|
except TypeError:
|
|
self.state = "failed"
|
|
raise TechnicalError("The provided URL is malformed.")
|
|
|
|
self.results = { 'url': real_url }
|
|
self.state = "finished"
|
|
return self
|