def test_clean_name_lowercases(self): """clean_name() should lowercase file names""" self.assertEqual(clean_name("/HOME/USER/DOCUMENTS"), "/HOME/USER/documents") self.assertEqual(clean_name("/home/user/documents/noTes-2.TXT"), "/home/user/documents/notes-2.txt")
def test_clean_name_drops_bad_underscores(self): self.assertEqual(clean_name("/home/user/something_.txt"), "/home/user/something.txt") self.assertEqual(clean_name("/home/user/something._txt"), "/home/user/something.txt") self.assertEqual(clean_name("this_-_bad_._name"), "this-bad.name")
def test_clean_name_character_cleanup(self): """clean_name() should drop weird characters""" self.assertEqual( clean_name("/home/user/documents/N#o%p!`e(&)_thA$nks...TXT~"), "/home/user/documents/nope_and_thanks.txt~") self.assertEqual(clean_name("/home/user/documents/so...much...win"), "/home/user/documents/so.much.win")
def tube8_videos(url): html = process.OPEN_URL(url) match = re.compile('data-value=.+?src="(.+?)".+?alt="(.+?)".+?"video_duration">(.+?)</div>.+?<a href="(.+?)"',re.DOTALL).findall(html) for img,name,length,url in match: name = clean_name.clean_name(name) length = clean_name.clean_name(length) process.PLAY('[COLORred]'+length+'[/COLOR] : '+name,url,740,img,FANART,'','') next = re.compile('<link rel="next" href="(.+?)">').findall(html) for item in next: process.Menu('Next Page',item,739,'https://a3-images.myspacecdn.com/images03/1/cb9e1e694ca941abaf62f0026d18049f/300x300.jpg',FANART,'','')
def get_pornstar(url): html = process.OPEN_URL(url) match = re.compile('<div class="subscribe-to-pornstar-icon display-none">.+?data-mxptext="(.+?)" href="(.+?)">.+?<img src="(.+?)"',re.DOTALL).findall(html) for name,url,img in match: name = clean_name.clean_name(name) url = pornhub + url process.Menu(name,url,709,img,FANART,'','') next = re.compile('<link rel="next" href="(.+?)" />').findall(html) for item in next: item = clean_name.clean_name(item) process.Menu('Next Page',item,712,'','','','')
def xtube_cats(url): html = process.OPEN_URL(url) match = re.compile('data-sort="{alphabetical:.+?<a href="(.+?)".+?<img src=".+?" data-lazySrc="(.+?)" alt="(.+?)">',re.DOTALL).findall(html) for url,img,name in match: url = 'http://www.xtube.com'+url name = clean_name.clean_name(name) process.Menu(name,url,754,img,FANART,'','') match2 = re.compile('data-sort="{alphabetical:.+?<a href="(.+?)".+?<img src="(.+?)" alt="(.+?)">',re.DOTALL).findall(html) for url,img,name in match: url = 'http://www.xtube.com'+url name = clean_name.clean_name(name) process.Menu(name,url,754,img,FANART,'','')
def eporner_pornstar(url): html = process.OPEN_URL(url) match = re.compile('<div class="mbprofile">.+?<a href="(.+?)" title="(.+?)">.+?<img src="(.+?)"',re.DOTALL).findall(html) for url,name,img in match: url = 'http://eporner.com'+url name = clean_name.clean_name(name) process.Menu(name,url,761,img,FANART,'','') next = re.compile("<a href='([^']*)' title='Next page'>").findall(html) for item in next: url = 'http://eporner.com'+item url = clean_name.clean_name(url) process.Menu('Next Page',url,762,'http://kenny2u.org/wp-content/uploads/2016/09/icon-1.png',FANART,'','')
def get_hamster_vid(url): html = process.OPEN_URL(url) match = re.compile('<div class="video"><a href="(.+?)".+?<img src=\'(.+?)\'.+?alt="(.+?)"/>.+?><b>(.+?)</b>(.+?)<div class="fr">(.+?)</div><div class="views-value">(.+?)</div></div></div>').findall(html) for url,img,name,duration,hd_check,rating,views in match: name = clean_name.clean_name(name) name = duration+' - '+name if 'hSpriteHD' in hd_check: name = '[COLORred]HD [/COLOR]'+name process.PLAY(name,url,719,img,img,'Views : '+views+'\nRating : '+rating,'') next = re.compile('<link rel="next" href="(.+?)">').findall(html) for item in next: item = clean_name.clean_name(item) process.Menu('Next Page',item ,716,'http://www.logospike.com/wp-content/uploads/2016/05/Xhamster_Logo_03.png',FANART,'','')
def eporner_video(url): html = process.OPEN_URL(url) match = re.compile('onmouseenter="show_video_prev.+?<span>(.+?)</span>.+?<a href="(.+?)".+?title="(.+?)".+?<img id=.+?src="(.+?)".+?"mbtim">(.+?)</div>',re.DOTALL).findall(html) for max_qual,url,name,img,length in match: url = 'http://www.eporner.com'+url name = clean_name.clean_name(name) name = max_qual.replace('4K','[COLOR darkgoldenrod][B]4K[/B][/COLOR]')+'-[COLORred]'+length+'[/COLOR]-'+name process.PLAY(name,url,759,img,FANART,'','') next = re.compile('<a href="([^"]*)" title="Next page">').findall(html) for item in next: url = 'http://eporner.com'+item url = clean_name.clean_name(url) process.Menu('Next Page',url,761,'http://kenny2u.org/wp-content/uploads/2016/09/icon-1.png',FANART,'','')
def thumbzilla_videos(url): html = process.OPEN_URL(url) match = re.compile('<a class="js-thumb" href="(.+?)".+?src="(.+?)".+?<span class="title">(.+?)</span>.+?<span class="duration">(.+?)</span>(.+?)</span>',re.DOTALL).findall(html) for url,img,name,length,hd_check in match: length+' - '+name url = 'http://thumbzilla.com'+url if 'hd' in hd_check: name = clean_name.clean_name(name) name = '[COLORred]HD [/COLOR]'+name process.PLAY(name,url,752,img,FANART,'','') next = re.compile('<link rel="next" href="(.+?)" />').findall(html) for item in next: item = clean_name.clean_name(item) process.Menu('Next Page',item,746,'http://static.spark.autodesk.com/2013/02/14__13_53_32/data2cd61048-351b-4b48-bd9c-946e7e076b53Medium2.jpg',FANART,'','')
def get_video_item(url): html = process.OPEN_URL(url) match = re.compile('<div class="preloadLine">.+?<a href="(.+?)" title="(.+?)".+?<var class="duration">(.+?)</var>(.+?)</div>.+?data-mediumthumb="(.+?)".+?<span class="views"><var>(.+?)</var> views</span>.+?<div class="value">(.+?)</div>.+?<var class="added">(.+?)</var>',re.DOTALL).findall(html) for url,name,duration,hd_check,image,views,rating,uploaded in match: fin_url = pornhub+url name = duration+' - '+name if 'hd-thumbnail' in hd_check: name = '[COLORred]HD [/COLOR]'+name name = clean_name.clean_name(name) process.PLAY(name,fin_url,711,image,FANART,'Views : '+views+'\nRating : '+rating+'\nUploaded : '+uploaded,'') next = re.compile('<link rel="next" href="(.+?)" />').findall(html) for item in next: item = clean_name.clean_name(item) process.Menu('Next Page',item,709,'','','','')
def spank_cats(url): html = process.OPEN_URL(url) match = re.compile('<div class="category-thumb">.+?<a href="(.+?)".+?<img src="(.+?)".+?alt="(.+?)"',re.DOTALL).findall(html) for url,img,name in match: url = 'http://spankwire.com'+url name = clean_name.clean_name(name) process.Menu(name,url,775,img,FANART,'','')
def fourK(): html = process.OPEN_URL('https://www.eporner.com/category/4k-p**n/') match = re.compile('<span>4K \(2160p\)</span></div> <a href="(.+?)" title="(.+?)".+?src="(.+?)"').findall(html) for url,name,img in match: url = 'http://eporner.com'+url name = clean_name.clean_name(name) process.PLAY(name,url,759,img,FANART,'','')
def redtube_collections(url): html = process.OPEN_URL(url) match = re.compile('<a href="/playlist/(.+?)".+?<img src="(.+?)".+?<span class="playlist-title">.+?</a>(.+?)</a>',re.DOTALL).findall(html) for url,img,name in match: url = 'http://redtube.com/playlist/'+url img = 'http:'+img name = clean_name.clean_name(name) process.Menu(name,url,731,img,FANART,'','')
def redtube_channels(url): html = process.OPEN_URL(url) match = re.compile('class="channels-list-img">.+?<img.+?src="(.+?)" alt="(.+?)">',re.DOTALL).findall(html) for img,name in match: img = 'http:'+img url = 'http://www.redtube.com/'+name name = clean_name.clean_name(name) process.Menu(name,url,731,img,FANART,'','')
def redtube_cats(url): html = process.OPEN_URL(url) match = re.compile('<div class="video">.+?<a href="(.+?)" title="(.+?)">.+?data-src="(.+?)"',re.DOTALL).findall(html) for url,name,img in match: url = 'http://redtube.com'+url name = clean_name.clean_name(name) img = 'http://'+img process.Menu(name,url,731,img,FANART,'','')
def redtube_pornstars(url): html = process.OPEN_URL(url) match = re.compile('<a href="/pornstar/(.+?)".+?title="(.+?)".+?src="(.+?)"',re.DOTALL).findall(html) for url,name,img in match: url = 'http://redtube.com/pornstar/'+url name = clean_name.clean_name(name) img = 'http:' + img process.Menu(name,url,731,img,FANART,'','')
def eporner_cats(url): html = process.OPEN_URL(url) block = re.compile('<div id="panel-right-title">(.+?)<li class="lihe">',re.DOTALL).findall(html) for item in block: match = re.compile('<a href="(.+?)" title="(.+?)"><img src="(.+?)"').findall(str(item)) for url,name,img in match: url = 'http://eporner.com'+url name = clean_name.clean_name(name) process.Menu(name.replace('P**n Videos',''),url,761,img,FANART,'','')
def youporn_video(url): html = process.OPEN_URL(url) match = re.compile("<div class='video-box.+?<a href=\"(.+?)\".+?<img src=\"(.+?)\".+?alt='(.+?)'",re.DOTALL).findall(html) for url,img,name in match: name = clean_name.clean_name(name) url = 'http://www.youporn.com'+url process.PLAY(name,url,728,img,FANART,'','') next = re.compile('<link rel="next" href="(.+?)" />').findall(html) for item in next: process.Menu('Next Page',item,725,'http://www.ares-portal.com/wp-content/uploads/2016/12/plugin.video_.youporngay.png',FANART,'','')
def XNew_Videos(url): HTML = process.OPEN_URL(url) match = re.compile('<div class="thumb-inside">.+?<img src="(.+?)".+?<a href="(.+?)" title="(.+?)">.+?<strong>(.+?)</strong> - (.+?)%').findall(HTML) for img,url,name,length,rating in match: process.PLAY((name).replace(' ','-').replace('---',' - ').replace(''','\'').replace('&','&').replace('"','"').replace(' ','') + ' - P**n Quality : ' + rating + '% - ' + length,'http://www.xvideos.com'+url,706,img,FANART,rating + '% - ' + length,'') next_button2 = re.compile('<li><a href="([^"]*)" class="no-page">Next</a></li></ul></div>').findall(HTML) for url in next_button2: if 'Next' not in List: url = clean_name.clean_name(url) process.Menu('Next Page','http://www.xvideos.com'+url,701,'https://pbs.twimg.com/profile_images/378800000578199366/cf160c1c86c13778a834bbade0c30e38.jpeg',FANART,'','') List.append('Next')
def redtube_video(url): html = process.OPEN_URL(url) match = re.compile('<img title="(.+?)" id="(.+?)" class=".+?" data-src="(.+?)"').findall(html) for name,url,img in match: name = clean_name.clean_name(name) url = 'http://www.redtube.com/'+url img = 'http:'+img process.PLAY(name,url,732,img,FANART,'','') next = re.compile('<link rel="next" href="(.+?)">').findall(html) for item in next: process.Menu('Next Page',item,731,'http://gosha-portal.pp.ua/1311/pic/redtube.png',FANART,'','')
def youporn_new_video(url): html = process.OPEN_URL(url) block = re.compile('"day_by_day_section">(.+?)<div class="title-bar sixteen-column">',re.DOTALL).findall(html) for item in block: match = re.compile("<div class='video-box four-column'.+?<a href=\"(.+?)\".+?<img src=\"(.+?)\".+?alt='(.+?)'",re.DOTALL).findall(str(item)) for url,img,name in match: name = clean_name.clean_name(name) url = 'http://www.youporn.com'+url process.PLAY(name,url,728,img,FANART,'','') next = re.compile('<link rel="next" href="(.+?)" />').findall(html) for item in next: process.Menu('Next Page',item,725,'http://www.ares-portal.com/wp-content/uploads/2016/12/plugin.video_.youporngay.png',FANART,'','')
def youjizz_videos(url): next_list = [] html = process.OPEN_URL(url) match = re.compile('<a class="frame".+?href=\'(.+?)\'.+?<img class="lazy".+?data-original="(.+?)".+?<span id="title1">(.+?)</span>.+?<span class=\'thumbtime\'><spa.+?>(.+?)</span',re.DOTALL).findall(html) for url,img,name,length in match: url = 'http://youjizz.com'+url name = length+' - '+name name = clean_name.clean_name(name) process.PLAY(name,url,769,img,FANART,'','') next = re.compile("a href='([^']*)'>Next.+?</a>").findall(html) for item in next: if 'Next' not in next_list: process.Menu('Next Page','http://youjizz.com'+item,765,'https://pbs.twimg.com/profile_images/3332003625/23c080fbec17cfb45ca3fd40ec06afe1.png',FANART,'','') next_list.append('Next')
def VIDEOLIST(url): pg = 'http://www.perfectgirls.net/' link = openURL(url) match = re.compile('<div class="list__item_link"><a href="(.+?)".+?title="(.+?)".+?data-original="(.+?)".+?<time>(.+?)</time>',re.DOTALL).findall(link) for url2,name,img,length in match: import clean_name name = clean_name.clean_name(name) addLink('[COLORred]'+length+'[/COLOR] - '+name,pg+url2,2,icon) next = re.compile('<a class="btn_wrapper__btn" href="([^"]*)">Next</a>').findall(link) for item in next: if url[-1] in '0123456789': url3 = url[:-1]+item else: url3 = url+'/'+item addDir('Next Page',url3,1,icon,'')
def VIDEOLIST(url): pg = 'http://xxxmilfbutt.com/' link = openURL(url) match = re.compile('<tbody><tr><td valign="top">\n<a href=\"(.+?)\"><img src=\"(.+?)\" .* title=\"(.+?)\" .*></a>').findall(link) for url2,img,name in match: import clean_name name = clean_name.clean_name(name) addLink('[COLORred]'+name+'[/COLOR]',url2,2,img) next = re.compile('<div id="pagination-links"><a href=\"([^"]*)\">.+?</a></div>').findall(link) for item in next: if url[-1] in '0123456789': url3 = url[:-1]+item else: url3 = item addDir('Next Page',url3,1,icon,'')
def VIDEOLIST(url): pg = 'http://www.perfectgirls.net/' link = openURL(url) match = re.compile('<div class="list__item_link"><a href="(.+?)".+?title="(.+?)".+?data-original="(.+?)".+?<time>(.+?)</time>',re.DOTALL).findall(link) for url2,name,img,length in match: import clean_name name = clean_name.clean_name(name) addLink('[COLORred]'+length+'[/COLOR] - '+name,pg+url2,2,icon) next = re.compile('<a class="btn_wrapper__btn" href="([^"]*)">Next</a>').findall(link) for item in next: if url[-1] in '0123456789': url3 = url[:-1]+item else: url3 = url+'/'+item addDir('Next Page',url3,1,icon,'')
def xtube_videos(url): next_list = [] html = process.OPEN_URL(url) match = re.compile('<a href="/video-watch(.+?)" title="(.+?)".+?<img src="(.+?)".+?<span class="duration">(.+?)</span>',re.DOTALL).findall(html) for url,name,img,length in match: name = length + ' - ' + name url = 'http://xtube.com/video-watch'+url name = clean_name.clean_name(name) process.PLAY(name,url,757,img,FANART,'','') next = re.compile('<a href="([^"]*)" title="next">').findall(html) for item in next: if 'Next' not in next_list: url = 'http://xtube.com'+item process.Menu('Next Page',url,754,'https://pbs.twimg.com/profile_images/732348322044903425/xTK0J4Cz.jpg',FANART,'','') next_list.append('Next')
def VIDEOLIST(url): pg = 'http://xxxmilfbutt.com/' link = openURL(url) match = re.compile( '<tbody><tr><td valign="top">\n<a href=\"(.+?)\"><img src=\"(.+?)\" .* title=\"(.+?)\" .*></a>' ).findall(link) for url2, img, name in match: import clean_name name = clean_name.clean_name(name) addLink('[COLORred]' + name + '[/COLOR]', url2, 2, img) next = re.compile( '<div id="pagination-links"><a href=\"([^"]*)\">.+?</a></div>' ).findall(link) for item in next: if url[-1] in '0123456789': url3 = url[:-1] + item else: url3 = item addDir('Next Page', url3, 1, icon, '')