-improved xxxblg fixes #6883

-improved vimeo errorhandling
-improved dailymotion errorhandling
-improved vidaru fixes #6884
-added errorhandling for the vdisk decrypter fixes #6885
-excluded invalid upstore links fixes #6886
-fixed musicaol fixes #6887
-improved fileplanet, keycaptcha implementation is still missing refs #6888
-improved fileshare fixes #6889
-filestrack.com: RIP fixes #6892
-sharing-online.com: RIP fixes #6894
-improved mixotic fixes #6895
-improved twitchtv
-improved 1fichier errorhandling
-improved 1fichier login and download for free accounts
-fixed fsakura
-improved mixturecloud login refs #6864

git-svn-id: svn://svn.jdownloader.org/jdownloader/trunk@18799 ebf7c1c2-ba36-0410-9fe8-c592906822b4
This commit is contained in:
psp 2012-10-27 17:46:15 +00:00
parent f4c6f311ab
commit efd40a7830
21 changed files with 152 additions and 957 deletions

View File

@ -971,4 +971,6 @@ jd/plugins/hoster/VidHugeCom.class
jd/plugins/hoster/MonsterUploadsEu.class
jd/plugins/hoster/FileCosyCom.class
jd/plugins/hoster/AzuShareNet.class
jd/plugins/hoster/ShareatorNet.class
jd/plugins/hoster/ShareatorNet.class
jd/plugins/hoster/FilesTrackCom.class
jd/plugins/hoster/SharingOnlineCom.class

View File

@ -35,7 +35,7 @@ public class DailyMotionComDecrypter extends PluginForDecrypt {
public ArrayList<DownloadLink> decryptIt(CryptedLink param, ProgressController progress) throws Exception {
ArrayList<DownloadLink> decryptedLinks = new ArrayList<DownloadLink>();
String parameter = param.toString();
String parameter = param.toString().replace("www.", "");
br.setFollowRedirects(true);
try {
br.getPage(parameter);

View File

@ -40,9 +40,8 @@ public class JustinTvDecrypt extends PluginForDecrypt {
public ArrayList<DownloadLink> decryptIt(CryptedLink param, ProgressController progress) throws Exception {
ArrayList<DownloadLink> decryptedLinks = new ArrayList<DownloadLink>();
// twitchtv belongs to justin.tv
br.setCookie("http://justin.tv", "language", "en");
br.setCookie("http://justin.tv", "mature_allowed", "true");
String parameter = param.toString().replaceAll("(de\\.)?(twitchtv\\.com|twitch\\.tv)", "justin.tv");
br.setCookie("http://justin.tv", "fl", "en-us");
String parameter = param.toString().replaceAll("(de\\.)?(twitchtv\\.com|twitch\\.tv)", "twitch.tv");
br.setFollowRedirects(true);
br.getPage(parameter);
if (parameter.contains("/videos")) {
@ -60,10 +59,13 @@ public class JustinTvDecrypt extends PluginForDecrypt {
logger.info("Link offline: " + parameter);
return decryptedLinks;
}
String filename = br.getRegex("<meta property=\"og:title\" content=\"(.*?)\"/>").getMatch(0);
if (filename == null) filename = br.getRegex("<h2 class=\"clip_title\">(.*?)</h2>").getMatch(0);
br.getPage("http://api.justin.tv/api/broadcast/by_archive/" + new Regex(parameter, "(\\d+)$").getMatch(0) + ".xml");
String[] links = br.getRegex("<video_file_url>(http://[^<>\"]*?)</video_file_url>").getColumn(0);
String filename = br.getRegex("<h2 id=\\'broadcast_title\\'>([^<>\"]*?)</h2>").getMatch(0);
if (parameter.contains("/b/")) {
br.getPage("http://api.justin.tv/api/broadcast/by_archive/" + new Regex(parameter, "(\\d+)$").getMatch(0) + ".xml");
} else {
br.getPage("http://api.justin.tv/api/broadcast/by_chapter/" + new Regex(parameter, "(\\d+)$").getMatch(0) + ".xml");
}
final String[] links = br.getRegex("<video_file_url>(http://[^<>\"]*?)</video_file_url>").getColumn(0);
int counter = 1;
if (links == null || links.length == 0 || filename == null) {
logger.warning("Decrypter broken: " + parameter);

View File

@ -46,10 +46,16 @@ public class MixoticNet extends PluginForDecrypt {
br.setFollowRedirects(false);
br.getPage(strParameter);
// Offline1
if (br.containsHTML("(An error has occurred|The article cannot be found)")) {
logger.info("Link offline: " + strParameter);
return decryptedLinks;
}
// Offline2
if (br.containsHTML("Sorry, this page is not existing|<title>Error \\- Page not found</title>")) {
logger.info("Link offline: " + strParameter);
return decryptedLinks;
}
int iIndex = strParameter.lastIndexOf("/");
String strMixNumber = strParameter.substring(iIndex + 1);

View File

@ -22,13 +22,11 @@ import java.util.regex.Pattern;
import jd.PluginWrapper;
import jd.controlling.ProgressController;
import jd.plugins.CryptedLink;
import jd.plugins.DecrypterException;
import jd.plugins.DecrypterPlugin;
import jd.plugins.DownloadLink;
import jd.plugins.PluginForDecrypt;
import jd.utils.locale.JDL;
@DecrypterPlugin(revision = "$Revision$", interfaceVersion = 2, names = { "multiupload.com" }, urls = { "http://(www\\.)?multiupload\\.[a-z]{2,3}/([A-Z0-9]{2}_[A-Z0-9]+|[0-9A-Z]+)" }, flags = { 0 })
@DecrypterPlugin(revision = "$Revision$", interfaceVersion = 2, names = { "multiupload.com" }, urls = { "http://(www\\.)?multiupload\\.(com|nl)/([A-Z0-9]{2}_[A-Z0-9]+|[0-9A-Z]+)" }, flags = { 0 })
public class MltpldCm extends PluginForDecrypt {
public MltpldCm(PluginWrapper wrapper) {
@ -44,16 +42,21 @@ public class MltpldCm extends PluginForDecrypt {
/* domain redirection */
br.getPage(br.getRedirectLocation());
}
if (br.containsHTML(">Unfortunately, the link you have clicked is not available")) throw new DecrypterException(JDL.L("plugins.decrypt.errormsg.unavailable", "Perhaps wrong URL or the download is not available anymore."));
if (br.containsHTML(">UNKNOWN ERROR<")) throw new DecrypterException(JDL.L("plugins.decrypt.errormsg.unknownerror", "Unknown error caused by multiupload.com."));
if (br.containsHTML(">Unfortunately, the link you have clicked is not available")) {
logger.info("Link offline: " + parameter);
return decryptedLinks;
}
if (br.containsHTML(">UNKNOWN ERROR<")) {
logger.info("Link offline: " + parameter);
return decryptedLinks;
}
if (!parameter.contains("_")) {
String[] redirectLinks = br.getRegex(Pattern.compile("id=\"url_\\d+\"><a href=\"(http://(www\\.)?multiupload\\.[a-z]{2,3}/.*?)\"")).getColumn(0);
final String[] redirectLinks = br.getRegex(Pattern.compile("id=\"url_\\d+\"><a href=\"(http://(www\\.)?multiupload\\.(com|nl)/.*?)\"")).getColumn(0);
if (redirectLinks == null || redirectLinks.length == 0) {
logger.warning("redirectLinks list is null...");
return null;
}
progress.setRange(redirectLinks.length);
for (String redirectLink : redirectLinks) {
for (final String redirectLink : redirectLinks) {
br.getPage(redirectLink);
String finallink = br.getRedirectLocation();
if (finallink == null) {
@ -61,7 +64,6 @@ public class MltpldCm extends PluginForDecrypt {
}
if (finallink.contains("mediafire")) finallink = finallink.replace("mediafire.com?", "mediafire.com/?");
decryptedLinks.add(createDownloadlink(finallink));
progress.increase(1);
}
} else {
String finallink = br.getRedirectLocation();

View File

@ -41,13 +41,13 @@ public class MusicAolCom extends PluginForDecrypt {
br.setFollowRedirects(false);
br.getPage(parameter);
final int cdNum = Integer.parseInt(new Regex(parameter, "(\\d+)").getMatch(0)) - 1;
final String feedName = br.getRegex("id=\"album_" + cdNum + "\" playlisturl=\"http://feeds\\.castfire\\.com/cdlp/all/aol/pls:([^<>\"]*?)\"").getMatch(0);
if (feedName == null) {
final String feed = br.getRegex("id=\"album_" + cdNum + "\" playlisturl=\"(http://[^<>\"]*?)\"").getMatch(0);
if (feed == null) {
logger.warning("Decrypter broken for link: " + parameter);
return null;
}
br.getPage("http://feeds.castfire.com/cdlp/all/aol/pls:" + feedName + "?track1=stream&track2=Web+App&track3=AOL+Music+Web&callback=&_=" + System.currentTimeMillis());
String albumName = br.getRegex("\"album_name\":\"([^<>\"]*?)\"").getMatch(0);
br.getPage(feed);
String albumName = br.getRegex("\"title\":\"([^<>\"]*?)\"").getMatch(0);
final String[][] content = br.getRegex("\"title\":\"([^<>\"]*?)\",\"url\":\"(http:[^<>\"]*?)\"").getMatches();
if (content == null || content.length == 0 || albumName == null) {
logger.warning("Decrypter broken for link: " + parameter);
@ -63,6 +63,7 @@ public class MusicAolCom extends PluginForDecrypt {
}
final DownloadLink dl = createDownloadlink("directhttp://" + finallink);
dl.setFinalFileName(albumName + " - " + Encoding.htmlDecode(scontent[0]) + ".flv");
dl.setAvailable(true);
decryptedLinks.add(dl);
}
final FilePackage fp = FilePackage.getInstance();

View File

@ -29,7 +29,7 @@ import jd.plugins.PluginForDecrypt;
import org.appwork.utils.formatter.SizeFormatter;
@DecrypterPlugin(revision = "$Revision$", interfaceVersion = 2, names = { "vdisk.cn" }, urls = { "http://(www\\.)?vdisk\\.cn/(?!down/)[a-z0-9]+" }, flags = { 0 })
@DecrypterPlugin(revision = "$Revision$", interfaceVersion = 2, names = { "vdisk.cn" }, urls = { "http://(www\\.)?vdisk\\.cn/(?!down/|user|file|api)[a-z0-9]+" }, flags = { 0 })
public class VDiskCn extends PluginForDecrypt {
public VDiskCn(PluginWrapper wrapper) {
@ -41,6 +41,10 @@ public class VDiskCn extends PluginForDecrypt {
ArrayList<String> allPages = new ArrayList<String>();
String parameter = param.toString();
br.getPage(parameter);
if (br.containsHTML(">找不到您需要的页面\\!<|可能您访问的内容已经删除,或您无权访问本页面。<")) {
logger.info("Link offline: " + parameter);
return decryptedLinks;
}
final String[] pages = br.getRegex("<a href=\\'\\?tag=ALLFILES\\&p=(\\d+)\\'").getColumn(0);
if (pages == null || pages.length == 0)
allPages.add("1");

View File

@ -46,6 +46,41 @@ public class VidaruCom extends PluginForDecrypt {
DownloadLink dl = createDownloadlink(externID);
dl.setProperty("Referer", parameter);
decryptedLinks.add(dl);
return decryptedLinks;
}
externID = br.getRegex("izlesene\\.com/embedplayer\\.swf\\?video=(\\d+)\\'").getMatch(0);
if (externID != null) {
final DownloadLink dl = createDownloadlink("http://www.izlesene.com/video/" + System.currentTimeMillis() + "/" + externID);
decryptedLinks.add(dl);
return decryptedLinks;
}
externID = br.getRegex("shareUrl=(http%3A//[a-z0-9\\-_]+\\.yahoo\\.com/[^<>\"]*?)\\&\\'").getMatch(0);
if (externID != null) {
final DownloadLink dl = createDownloadlink(externID);
decryptedLinks.add(dl);
return decryptedLinks;
}
externID = br.getRegex("vidivodo\\.com/VideoPlayerShare\\.swf\\?u=([^<>\"]*?)\\'").getMatch(0);
if (externID != null) {
br.getPage("http://en.vidivodo.com/player/getxml?mediaid=" + externID + "&publisherid=vidivodoEmbed&type=");
externID = br.getRegex("<pagelink>(http://[^<>\"]*?)</pagelink>").getMatch(0);
if (externID == null && br.containsHTML("<\\?xml version=\"1\\.0\" encoding=\"UTF\\-8\" \\?>")) {
logger.info("Link offline: " + parameter);
return decryptedLinks;
}
if (externID == null) {
logger.warning("Decrypter broken for link: " + parameter);
return null;
}
final DownloadLink dl = createDownloadlink(externID);
decryptedLinks.add(dl);
return decryptedLinks;
}
externID = br.getRegex("name=\\'movie\\' value=\\'http://(www\\.)?dailymotion\\.com/swf/video/([a-z0-9\\-_]+)\\'").getMatch(1);
if (externID != null) {
final DownloadLink dl = createDownloadlink("http://www.dailymotion.com/video/" + externID + "_" + System.currentTimeMillis());
decryptedLinks.add(dl);
return decryptedLinks;
}
// filename needed for all IDs below here
if (filename == null) {

View File

@ -20,8 +20,8 @@ import java.util.ArrayList;
import jd.PluginWrapper;
import jd.controlling.ProgressController;
import jd.parser.Regex;
import jd.parser.html.Form;
import jd.parser.html.HTMLParser;
import jd.plugins.CryptedLink;
import jd.plugins.DecrypterPlugin;
import jd.plugins.DownloadLink;
@ -59,12 +59,19 @@ public class XXXBlg extends PluginForDecrypt {
String fpname = br.getRegex("<title>(.*?)\\| XXX\\-Blog").getMatch(0);
if (fpname == null) fpname = br.getRegex("rel=\"bookmark\" title=\"(.*?)\"").getMatch(0);
String pagepiece = br.getRegex("<strong>(.*?)</a></strong></p>").getMatch(0);
if (pagepiece == null) pagepiece = br.getRegex("table class=\"dltable\">.*?Download:</strong(.*?)</table").getMatch(0);
if (pagepiece == null) return null;
String[] links = HTMLParser.getHttpLinks(pagepiece, "");
if (links == null || links.length == 0) return null;
if (pagepiece == null) pagepiece = br.getRegex("<div class=\"entry\">(.*?)<div id=\"respond\">").getMatch(0);
if (pagepiece == null) {
logger.warning("Decrypter broken for link: " + parameter);
return null;
}
final String[] links = new Regex(pagepiece, "<a href=\"(http[^<>\"]*?)\"").getColumn(0);
if (links == null || links.length == 0) {
logger.warning("Decrypter broken for link: " + parameter);
return null;
}
for (String link : links) {
DownloadLink dlink = createDownloadlink(link);
if (link.matches("http://(www\\.)?xxx-blog\\.to/((share|sto|com-|u|filefactory/|relink/)[\\w\\./-]+|.*?\\.html|(blog|typ)/(dvd-rips|scenes|amateur-clips|hd-(scenes|movies)|site-rips|image-sets|games)/.+/)")) continue;
final DownloadLink dlink = createDownloadlink(link.replace("http://xxx-blog.to/../download/?", ""));
dlink.setSourcePluginPasswordList(pwList);
decryptedLinks.add(dlink);
}

View File

@ -71,7 +71,10 @@ public class DailyMotionCom extends PluginForHost {
} catch (Throwable e) {
}
}
// 404
if (br.containsHTML("(<title>Dailymotion \\ 404 Not Found</title>|url\\(/images/404_background\\.jpg)")) throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
// 403
if (br.containsHTML("class=\"forbidden\">Access forbidden</h3>|>You don\\'t have permission to access the requested URL")) throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
// We can't download livestreams
if (br.containsHTML("DMSTREAMMODE=live")) throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
String source = br.getRegex("\"sequence\":\"([^<>\"]*?)\"").getMatch(0);

View File

@ -71,6 +71,10 @@ public class FilePlanetaCom extends PluginForHost {
return COOKIE_HOST + "/tos.html";
}
public void correctDownloadLink(DownloadLink link) {
link.setUrlDownload("http://fileplaneta.com/" + new Regex(link.getDownloadURL(), "([a-z0-9]{12})$").getMatch(0));
}
public FilePlanetaCom(PluginWrapper wrapper) {
super(wrapper);
this.enablePremium(COOKIE_HOST + "/premium.html");
@ -156,7 +160,8 @@ public class FilePlanetaCom extends PluginForHost {
}
/**
* Video links can already be found here, if a link is found here we can skip wait times and captchas
* Video links can already be found here, if a link is found here we can
* skip wait times and captchas
*/
if (dllink == null) {
checkErrors(downloadLink, false, passCode);
@ -184,7 +189,7 @@ public class FilePlanetaCom extends PluginForHost {
dlForm.put("code", code.toString());
logger.info("Put captchacode " + code.toString() + " obtained by captcha metod \"plaintext captchas\" in the form.");
} else if (correctedBR.contains("/captchas/")) {
logger.info("Detected captcha method \"Standard captcha\" for this host");
logger.info("Detected captcha method \"Standard captcha\"");
String[] sitelinks = HTMLParser.getHttpLinks(br.toString(), null);
String captchaurl = null;
if (sitelinks == null || sitelinks.length == 0) {
@ -205,7 +210,7 @@ public class FilePlanetaCom extends PluginForHost {
dlForm.put("code", code);
logger.info("Put captchacode " + code + " obtained by captcha metod \"Standard captcha\" in the form.");
} else if (new Regex(correctedBR, "(api\\.recaptcha\\.net|google\\.com/recaptcha/api/)").matches()) {
logger.info("Detected captcha method \"Re Captcha\" for this host");
logger.info("Detected captcha method \"Re Captcha\"");
PluginForHost recplug = JDUtilities.getPluginForHost("DirectHTTP");
jd.plugins.hoster.DirectHTTP.Recaptcha rc = ((DirectHTTP) recplug).getReCaptcha(br);
rc.setForm(dlForm);
@ -221,6 +226,8 @@ public class FilePlanetaCom extends PluginForHost {
dlForm = rc.getForm();
/** wait time is often skippable for reCaptcha handling */
// skipWaittime = true;
} else if (correctedBR.contains("keycaptcha.com/swfs/cap.js'")) {
logger.info("Detected captcha method \"keycaptca\"");
}
/* Captcha END */
if (password) passCode = handlePassword(passCode, dlForm, downloadLink);

View File

@ -58,7 +58,7 @@ public class FilePostCom extends PluginForHost {
private boolean showAccountCaptcha = false;
private static final String FILEIDREGEX = "filepost\\.com/files/(.+)";
private static final String MAINPAGE = "https://filepost.com/";
private static Object LOCK = new Object();
private static Object LOCK = new Object();
private static final String FREEBLOCKED = "(>The file owner has limited free downloads of this file|premium membership is required to download this file\\.<)";
public FilePostCom(PluginWrapper wrapper) {
@ -86,7 +86,8 @@ public class FilePostCom extends PluginForHost {
int c = 0;
for (DownloadLink dl : links) {
/*
* append fake filename, because api will not report anything else
* append fake filename, because api will not report
* anything else
*/
if (c > 0) sb.append("%0D%0A");
sb.append(Encoding.urlEncode(dl.getDownloadURL()));
@ -124,7 +125,8 @@ public class FilePostCom extends PluginForHost {
/*
* (non-Javadoc)
*
* @see jd.plugins.PluginForHost#correctDownloadLink(jd.plugins.DownloadLink)
* @see
* jd.plugins.PluginForHost#correctDownloadLink(jd.plugins.DownloadLink)
*/
@Override
public void correctDownloadLink(DownloadLink link) throws Exception {
@ -361,7 +363,8 @@ public class FilePostCom extends PluginForHost {
}
/**
* Important: Handling for password protected links is not included yet (only in handleFree)!
* Important: Handling for password protected links is not included yet
* (only in handleFree)!
*/
@Override
public void handlePremium(DownloadLink link, Account account) throws Exception {
@ -401,7 +404,9 @@ public class FilePostCom extends PluginForHost {
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
}
dl = jd.plugins.BrowserAdapter.openDownload(br, link, dllink, true, 0);
// Connectionlimit not tested but user said it didn't work with 2
// connections
dl = jd.plugins.BrowserAdapter.openDownload(br, link, dllink, true, 1);
if (dl.getConnection().getContentType().contains("html")) {
logger.warning("The final dllink seems not to be a file!");
br.followConnection();

View File

@ -209,7 +209,7 @@ public class FileShareInUa extends PluginForHost {
// Using the link + "?free" we can get to the page with the captcha but
// atm we do it without captcha
br.getPage(link.getDownloadURL());
if (br.containsHTML("Такой страницы на нашем сайте нет")) throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
if (br.containsHTML("Файл удален|К сожалению мы не смогли найти файл, который вы запрашиваете")) throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
String filename = br.getRegex("<title>скачать (.*?)</title>").getMatch(0);
if (filename == null) {
filename = br.getRegex("class=\"file_name sr_archive\">[\n\r ]+<span>(.*?)</span>").getMatch(0);

View File

@ -1,444 +0,0 @@
//jDownloader - Downloadmanager
//Copyright (C) 2009 JD-Team support@jdownloader.org
//
//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 <http://www.gnu.org/licenses/>.
package jd.plugins.hoster;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.SortedMap;
import java.util.TreeMap;
import jd.PluginWrapper;
import jd.nutils.encoding.Encoding;
import jd.parser.Regex;
import jd.parser.html.Form;
import jd.parser.html.HTMLParser;
import jd.plugins.DownloadLink;
import jd.plugins.DownloadLink.AvailableStatus;
import jd.plugins.HostPlugin;
import jd.plugins.LinkStatus;
import jd.plugins.Plugin;
import jd.plugins.PluginException;
import jd.plugins.PluginForHost;
import jd.utils.JDUtilities;
import org.appwork.utils.formatter.SizeFormatter;
@HostPlugin(revision = "$Revision$", interfaceVersion = 2, names = { "filestrack.com" }, urls = { "http://[\\w\\.]*?filestrack\\.com/[a-z0-9]{12}" }, flags = { 0 })
public class FilesTrackCom extends PluginForHost {
private String BRBEFORE = "";
private static final String PASSWORDTEXT0 = "<br><b>Password:</b> <input";
private static final String PASSWORDTEXT1 = "<br><b>Passwort:</b> <input";
private static final String COOKIE_HOST = "http://filestrack.com";
public boolean NOPREMIUM = false;
public FilesTrackCom(PluginWrapper wrapper) {
super(wrapper);
this.setStartIntervall(100 * 1000l);
// this.enablePremium(COOKIE_HOST + "/premium.html");
}
public void checkErrors(DownloadLink theLink, boolean checkAll, String passCode) throws NumberFormatException, PluginException {
if (checkAll) {
if (BRBEFORE.contains("<br><b>Password:</b> <input") || BRBEFORE.contains("<br><b>Passwort:</b> <input") || BRBEFORE.contains("Wrong password")) {
logger.warning("Wrong password, the entered password \"" + passCode + "\" is wrong, retrying...");
theLink.setProperty("pass", null);
throw new PluginException(LinkStatus.ERROR_RETRY);
}
if (BRBEFORE.contains("Wrong captcha")) {
logger.warning("Wrong captcha or wrong password!");
throw new PluginException(LinkStatus.ERROR_CAPTCHA);
}
}
// Some waittimes...
if (BRBEFORE.contains("You have to wait")) {
int minutes = 0, seconds = 0, hours = 0;
String tmphrs = new Regex(BRBEFORE, "You have to wait.*?\\s+(\\d+)\\s+hours?").getMatch(0);
if (tmphrs != null) hours = Integer.parseInt(tmphrs);
String tmpmin = new Regex(BRBEFORE, "You have to wait.*?\\s+(\\d+)\\s+minutes?").getMatch(0);
if (tmpmin != null) minutes = Integer.parseInt(tmpmin);
String tmpsec = new Regex(BRBEFORE, "You have to wait.*?\\s+(\\d+)\\s+seconds?").getMatch(0);
if (tmpsec != null) seconds = Integer.parseInt(tmpsec);
int waittime = ((3600 * hours) + (60 * minutes) + seconds + 1) * 1000;
if (waittime != 0) {
logger.info("Detected waittime #1, waiting " + waittime + " milliseconds");
throw new PluginException(LinkStatus.ERROR_IP_BLOCKED, null, waittime);
} else {
logger.info("Waittime regexes seem to be broken");
throw new PluginException(LinkStatus.ERROR_IP_BLOCKED);
}
}
if (BRBEFORE.contains("You have reached the download-limit")) {
String tmphrs = new Regex(BRBEFORE, "\\s+(\\d+)\\s+hours?").getMatch(0);
String tmpmin = new Regex(BRBEFORE, "\\s+(\\d+)\\s+minutes?").getMatch(0);
String tmpsec = new Regex(BRBEFORE, "\\s+(\\d+)\\s+seconds?").getMatch(0);
String tmpdays = new Regex(BRBEFORE, "\\s+(\\d+)\\s+days?").getMatch(0);
if (tmphrs == null && tmpmin == null && tmpsec == null && tmpdays == null) {
throw new PluginException(LinkStatus.ERROR_IP_BLOCKED, null, 60 * 60 * 1000l);
} else {
int minutes = 0, seconds = 0, hours = 0, days = 0;
if (tmphrs != null) hours = Integer.parseInt(tmphrs);
if (tmpmin != null) minutes = Integer.parseInt(tmpmin);
if (tmpsec != null) seconds = Integer.parseInt(tmpsec);
if (tmpdays != null) days = Integer.parseInt(tmpdays);
int waittime = ((days * 24 * 3600) + (3600 * hours) + (60 * minutes) + seconds + 1) * 1000;
logger.info("Detected waittime #2, waiting " + waittime + "milliseconds");
throw new PluginException(LinkStatus.ERROR_IP_BLOCKED, null, waittime);
}
}
if (BRBEFORE.contains("You're using all download slots for IP")) throw new PluginException(LinkStatus.ERROR_IP_BLOCKED, null, 10 * 60 * 1001l);
if (BRBEFORE.contains("Error happened when generating Download Link")) throw new PluginException(LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE, "Server error!", 10 * 60 * 1000l);
// Errorhandling for only-premium links
if (BRBEFORE.contains(" can download files up to ") || BRBEFORE.contains("Upgrade your account to download bigger files") || BRBEFORE.contains(">Upgrade your account to download larger files") || BRBEFORE.contains(">The file You requested reached max downloads limit for Free Users") || BRBEFORE.contains("Please Buy Premium To download this file<")) {
String filesizelimit = new Regex(BRBEFORE, "You can download files up to(.*?)only").getMatch(0);
if (filesizelimit != null) {
filesizelimit = filesizelimit.trim();
logger.warning("As free user you can download files up to " + filesizelimit + " only");
throw new PluginException(LinkStatus.ERROR_FATAL, "Free users can only download files up to " + filesizelimit);
} else {
logger.warning("Only downloadable via premium");
throw new PluginException(LinkStatus.ERROR_FATAL, "Only downloadable via premium");
}
}
}
public void checkServerErrors() throws NumberFormatException, PluginException {
if (BRBEFORE.contains("No file")) throw new PluginException(LinkStatus.ERROR_FATAL, "Server error");
if (BRBEFORE.contains("File Not Found") || BRBEFORE.contains("<h1>404 Not Found</h1>")) {
logger.warning("Server says link offline, please recheck that!");
throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
}
}
private String decodeDownloadLink(String s) {
String decoded = null;
try {
Regex params = new Regex(s, "'(.*?[^\\\\])',(\\d+),(\\d+),'(.*?)'");
String p = params.getMatch(0).replaceAll("\\\\", "");
int a = Integer.parseInt(params.getMatch(1));
int c = Integer.parseInt(params.getMatch(2));
String[] k = params.getMatch(3).split("\\|");
while (c != 0) {
c--;
if (k[c].length() != 0) p = p.replaceAll("\\b" + Integer.toString(c, a) + "\\b", k[c]);
}
decoded = p;
} catch (Exception e) {
}
String finallink = null;
if (decoded != null) {
finallink = new Regex(decoded, "name=\"src\"value=\"(.*?)\"").getMatch(0);
if (finallink == null) finallink = new Regex(decoded, "type=\"video/divx\"src=\"(.*?)\"").getMatch(0);
}
return finallink;
}
public void doFree(DownloadLink downloadLink, boolean resumable, int maxchunks) throws Exception, PluginException {
String dllink = null;
String passCode = null;
Form freeform = null;
Form[] allForms = br.getForms();
if (allForms != null && allForms.length != 0) {
for (Form singleForm : allForms) {
if (singleForm.containsHTML("download1")) {
freeform = singleForm;
break;
}
}
}
if (freeform != null) {
freeform.remove("method_premium");
br.submitForm(freeform);
doSomething();
}
checkErrors(downloadLink, false, passCode);
String md5hash = new Regex(BRBEFORE, "<b>MD5.*?</b>.*?nowrap>(.*?)<").getMatch(0);
if (md5hash != null) {
md5hash = md5hash.trim();
logger.info("Found md5hash: " + md5hash);
downloadLink.setMD5Hash(md5hash);
}
br.setFollowRedirects(false);
Form DLForm = br.getFormbyProperty("name", "F1");
if (DLForm == null) throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
// Ticket Time
String ttt = new Regex(BRBEFORE, "countdown\">.*?(\\d+).*?</span>").getMatch(0);
if (ttt == null) ttt = new Regex(BRBEFORE, "id=\"countdown_str\".*?<span id=\".*?\">.*?(\\d+).*?</span").getMatch(0);
if (ttt != null) {
logger.info("Waittime detected, waiting " + ttt + " seconds from now on...");
int tt = Integer.parseInt(ttt);
sleep(tt * 1001, downloadLink);
}
boolean password = false;
boolean recaptcha = false;
if (BRBEFORE.contains(PASSWORDTEXT0) || BRBEFORE.contains(PASSWORDTEXT1)) {
password = true;
logger.info("The downloadlink seems to be password protected.");
}
/* Captcha START */
if (BRBEFORE.contains(";background:#ccc;text-align")) {
logger.info("Detected captcha method \"plaintext captchas\" for this host");
// Captcha method by ManiacMansion
String[][] letters = new Regex(Encoding.htmlDecode(br.toString()), "<span style='position:absolute;padding-left:(\\d+)px;padding-top:\\d+px;'>(\\d)</span>").getMatches();
if (letters == null || letters.length == 0) {
logger.warning("plaintext captchahandling broken!");
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
SortedMap<Integer, String> capMap = new TreeMap<Integer, String>();
for (String[] letter : letters) {
capMap.put(Integer.parseInt(letter[0]), letter[1]);
}
StringBuilder code = new StringBuilder();
for (String value : capMap.values()) {
code.append(value);
}
DLForm.put("code", code.toString());
logger.info("Put captchacode " + code.toString() + " obtained by captcha metod \"plaintext captchas\" in the form.");
} else if (BRBEFORE.contains("/captchas/")) {
logger.info("Detected captcha method \"Standard captcha\" for this host");
String[] sitelinks = HTMLParser.getHttpLinks(br.toString(), null);
String captchaurl = null;
if (sitelinks == null || sitelinks.length == 0) {
logger.warning("Standard captcha captchahandling broken!");
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
for (String link : sitelinks) {
if (link.contains("/captchas/")) {
captchaurl = link;
break;
}
}
if (captchaurl == null) {
logger.warning("Standard captcha captchahandling broken!");
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
String code = getCaptchaCode(captchaurl, downloadLink);
DLForm.put("code", code);
logger.info("Put captchacode " + code + " obtained by captcha metod \"Standard captcha\" in the form.");
} else if (BRBEFORE.contains("api.recaptcha.net") || BRBEFORE.contains("google.com/recaptcha/api/")) {
// Some hosters also got commentfields with captchas, therefore is
// the !br.contains...check Exampleplugin:
// FileGigaCom
logger.info("Detected captcha method \"Re Captcha\" for this host");
PluginForHost recplug = JDUtilities.getPluginForHost("DirectHTTP");
jd.plugins.hoster.DirectHTTP.Recaptcha rc = ((DirectHTTP) recplug).getReCaptcha(br);
rc.parse();
rc.load();
File cf = rc.downloadCaptcha(getLocalCaptchaFile());
String c = getCaptchaCode(cf, downloadLink);
if (password) {
passCode = handlePassword(passCode, rc.getForm(), downloadLink);
}
recaptcha = true;
rc.setCode(c);
logger.info("Put captchacode " + c + " obtained by captcha metod \"Re Captcha\" in the form and submitted it.");
dllink = br.getRedirectLocation();
}
/* Captcha END */
// If the hoster uses Re Captcha the form has already been sent before
// here so here it's checked. Most hosters don't use Re Captcha so
// usually recaptcha is false
if (!recaptcha) {
if (password) {
passCode = handlePassword(passCode, DLForm, downloadLink);
}
dl = jd.plugins.BrowserAdapter.openDownload(br, downloadLink, DLForm, resumable, maxchunks);
logger.info("Submitted DLForm");
}
if (dllink == null) {
boolean error = false;
try {
if (dl.getConnection().getContentType().contains("html")) error = true;
} catch (Exception e) {
error = true;
}
if (error) {
br.followConnection();
logger.info("followed connection...");
doSomething();
checkErrors(downloadLink, true, passCode);
dllink = getDllink();
}
}
if (dllink == null) {
logger.warning("Final downloadlink (String is \"dllink\") regex didn't match!");
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
logger.info("Final downloadlink = " + dllink + " starting the download...");
dl = jd.plugins.BrowserAdapter.openDownload(br, downloadLink, dllink, resumable, maxchunks);
if (dl.getConnection().getContentType().contains("html")) {
logger.warning("The final dllink seems not to be a file!");
br.followConnection();
checkServerErrors();
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
if (passCode != null) {
downloadLink.setProperty("pass", passCode);
}
dl.startDownload();
}
// Removed fake messages which can kill the plugin
public void doSomething() throws NumberFormatException, PluginException {
BRBEFORE = br.toString();
ArrayList<String> someStuff = new ArrayList<String>();
ArrayList<String> regexStuff = new ArrayList<String>();
regexStuff.add("<!(--.*?--)>");
regexStuff.add("(display: none;\">.*?</div>)");
regexStuff.add("(visibility:hidden>.*?<)");
for (String aRegex : regexStuff) {
String lolz[] = br.getRegex(aRegex).getColumn(0);
if (lolz != null) {
for (String dingdang : lolz) {
someStuff.add(dingdang);
}
}
}
for (String fun : someStuff) {
BRBEFORE = BRBEFORE.replace(fun, "");
}
}
// XfileSharingProBasic Version 1.9.3
@Override
public String getAGBLink() {
return COOKIE_HOST + "/tos.html";
}
public String getDllink() {
String dllink = br.getRedirectLocation();
if (dllink == null) {
dllink = new Regex(BRBEFORE, "dotted #bbb;padding.*?<a href=\"(.*?)\"").getMatch(0);
if (dllink == null) {
dllink = new Regex(BRBEFORE, "This (direct link|download link) will be available for your IP.*?href=\"(http.*?)\"").getMatch(1);
if (dllink == null) {
dllink = new Regex(BRBEFORE, "Download: <a href=\"(.*?)\"").getMatch(0);
if (dllink == null) {
String crypted = br.getRegex("p}\\((.*?)\\.split\\('\\|'\\)").getMatch(0);
if (crypted != null) dllink = decodeDownloadLink(crypted);
}
}
}
}
return dllink;
}
@Override
public int getMaxSimultanFreeDownloadNum() {
return -1;
}
@Override
public void handleFree(DownloadLink downloadLink) throws Exception, PluginException {
requestFileInformation(downloadLink);
doFree(downloadLink, false, 1);
}
public String handlePassword(String passCode, Form pwform, DownloadLink thelink) throws IOException, PluginException {
if (thelink.getStringProperty("pass", null) == null) {
passCode = Plugin.getUserInput("Password?", thelink);
} else {
/* gespeicherten PassCode holen */
passCode = thelink.getStringProperty("pass", null);
}
pwform.put("password", passCode);
logger.info("Put password \"" + passCode + "\" entered by user in the DLForm.");
return passCode;
}
// do not add @Override here to keep 0.* compatibility
public boolean hasAutoCaptcha() {
return true;
}
// do not add @Override here to keep 0.* compatibility
public boolean hasCaptcha() {
return true;
}
@Override
public AvailableStatus requestFileInformation(DownloadLink link) throws IOException, PluginException {
this.setBrowserExclusive();
br.setFollowRedirects(false);
br.setCookie(COOKIE_HOST, "lang", "english");
br.getPage(link.getDownloadURL());
doSomething();
if (BRBEFORE.contains("No such file") || BRBEFORE.contains("No such user exist") || BRBEFORE.contains("File not found") || BRBEFORE.contains(">File Not Found<")) {
logger.warning("file is 99,99% offline, throwing \"file not found\" now...");
throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
}
String filename = new Regex(BRBEFORE, "You have requested.*?http://.*?[a-z0-9]{12}/(.*?)</font>").getMatch(0);
if (filename == null) {
filename = new Regex(BRBEFORE, "fname\"( type=\"hidden\")? value=\"(.*?)\"").getMatch(1);
if (filename == null) {
filename = new Regex(BRBEFORE, "<h2>Download File(.*?)</h2>").getMatch(0);
if (filename == null) {
filename = new Regex(BRBEFORE, "Filename:</b></td><td[ ]{0,2}>(.*?)</td>").getMatch(0);
if (filename == null) {
filename = new Regex(BRBEFORE, "Filename.*?nowrap.*?>(.*?)</td").getMatch(0);
if (filename == null) {
filename = new Regex(BRBEFORE, "File Name.*?nowrap>(.*?)</td").getMatch(0);
}
}
}
}
}
String filesize = new Regex(BRBEFORE, "\\(([0-9]+ bytes)\\)").getMatch(0);
if (filesize == null) {
filesize = new Regex(BRBEFORE, "<small>\\((.*?)\\)</small>").getMatch(0);
if (filesize == null) {
filesize = new Regex(BRBEFORE, "</font>[ ]+\\((.*?)\\)(.*?)</font>").getMatch(0);
}
}
if (filename == null || filename.equals("")) {
if (BRBEFORE.contains("You have reached the download-limit")) {
logger.warning("Waittime detected, please reconnect to make the linkchecker work!");
return AvailableStatus.UNCHECKABLE;
}
logger.warning("The filename equals null, throwing \"plugin defect\" now...");
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
filename = filename.replaceAll("(</b>|<b>|\\.html)", "");
link.setName(filename.trim());
if (filesize != null && !filesize.equals("")) {
logger.info("Filesize found, filesize = " + filesize);
link.setDownloadSize(SizeFormatter.getSize(filesize));
}
return AvailableStatus.TRUE;
}
@Override
public void reset() {
}
@Override
public void resetDownloadlink(DownloadLink link) {
}
}

View File

@ -374,14 +374,7 @@ public class FsakuraCom extends PluginForHost {
}
public String getDllink() {
String dllink = br.getRedirectLocation();
if (dllink == null) {
dllink = new Regex(correctedBR, "id=\"link_download\" onClick=\"this.select\\(\\);\" value=\"(http://[^<>\"]*?)\"").getMatch(0);
if (dllink == null) {
dllink = new Regex(correctedBR, "\"(http://fs\\d+\\.fsakura\\.com/files/\\d+/[a-z0-9]{12}/[^<>\"]*?)\"").getMatch(0);
}
}
return dllink;
return new Regex(correctedBR, "\"(http://(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|[a-z0-9]+\\." + COOKIE_HOST.replace("http://", "") + ")(:\\d{1,4})?/(files|d)/\\d+/[a-z0-9]+/[^<>\"/]*?)\"").getMatch(0);
}
private void getPage(String page) throws Exception {

View File

@ -16,6 +16,7 @@
package jd.plugins.hoster;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@ -34,6 +35,7 @@ import jd.plugins.HostPlugin;
import jd.plugins.LinkStatus;
import jd.plugins.PluginException;
import jd.plugins.PluginForHost;
import jd.utils.JDUtilities;
import jd.utils.locale.JDL;
import org.appwork.utils.formatter.SizeFormatter;
@ -155,10 +157,24 @@ public class MixtureCloudCom extends PluginForHost {
br.getHeaders().put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0");
br.getHeaders().put("Accept-Language", "en-US,en;q=0.5");
br.getHeaders().put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
br.getHeaders().put("Content-Type", "application/x-www-form-urlencoded");
br.getPage("https://www.mixturecloud.com/login");
final String secCode = br.getRegex("type=\"hidden\" name=\"securecode\" value=\"([^<>\"]*?)\"").getMatch(0);
if (secCode == null) throw new PluginException(LinkStatus.ERROR_PREMIUM, PluginException.VALUE_ID_PREMIUM_DISABLE);
br.postPage("https://www.mixturecloud.com/login", "back=&securecode=" + Encoding.urlEncode(secCode) + "&email=" + Encoding.urlEncode(account.getUser()) + "&password=" + Encoding.urlEncode(account.getPass()));
String postData = "back=https%3A%2F%2Fwww.mixturecloud.com%2Fpregister&securecode=" + Encoding.urlEncode(secCode) + "&email=" + Encoding.urlEncode(account.getUser()) + "&password=" + Encoding.urlEncode(account.getPass());
// Check if we have to enter a login captcha
final String rcID = br.getRegex("google\\.com/recaptcha/api/noscript\\?k=([^<>\"]*?)\"").getMatch(0);
if (rcID != null) {
final PluginForHost recplug = JDUtilities.getPluginForHost("DirectHTTP");
final jd.plugins.hoster.DirectHTTP.Recaptcha rc = ((DirectHTTP) recplug).getReCaptcha(br);
rc.setId(rcID);
rc.load();
final File cf = rc.downloadCaptcha(getLocalCaptchaFile());
final DownloadLink dummyLink = new DownloadLink(this, "Account", "mixturecloud.com", "http://mixturecloud.com", true);
final String c = getCaptchaCode(cf, dummyLink);
postData += "&recaptcha_challenge_field=" + rc.getChallenge() + "&recaptcha_response_field=" + Encoding.urlEncode(c);
}
br.postPage("https://www.mixturecloud.com/login", postData);
if (br.getCookie(MAINPAGE, "mx") == null) throw new PluginException(LinkStatus.ERROR_PREMIUM, PluginException.VALUE_ID_PREMIUM_DISABLE);
if (!br.containsHTML(">Ihr Konto ist bereits unbegrenzt") && !br.containsHTML(">Votre compte est déjà Illimité")) {
logger.info("Unsupported accounttype!");

View File

@ -35,18 +35,18 @@ import jd.plugins.PluginForHost;
/* Set interfaceVersion to 3 to avoid old Stable trying to load this Plugin */
@HostPlugin(revision = "$Revision$", interfaceVersion = 3, names = { "shareator.net", "azushare.net", "filecosy.com", "monsteruploads.eu", "vidhuge.com", "doneshare.com", "cixup.com", "animegoon.com", "supermov.com", "ufliq.com", "vidreel.com", "deditv.com", "supershare.net", "shareshared.com", "uploadville.com", "fileserver.cc", "bebasupload.com", "savefile.ro", "ovfile.com", "divxbase.com", "gptfile.com", "dudupload.com", "eyvx.com", "farshare.to", "azsharing.com", "freefilessharing.com", "elitedisk.com", "freakmov.com", "cloudnator.com", "filesavr.com", "saveufile.in.th", "migahost.com", "fastfreefilehosting.com", "files2k.eu", "shafiles.me", "jalurcepat.com", "divload.org", "refile.net", "oron.com", "wupload.com", "filesonic.com", "xxlupload.com", "cumfox.com", "pyramidfiles.com", "nahraj.cz", "jsharer.com", "annonhost.net", "filekeeper.org", "dynyoo.com", "163pan.com",
"imagehost.org", "4us.to", "yabadaba.ru", "madshare.com", "diglo.com", "tubeload.to", "tunabox.net", "yourfilehost.com", "uploadegg.com", "brsbox.com", "amateurboobtube.com", "good.net", "freeload.to", "netporn.nl", "przeklej.pl", "alldrives.ge", "allshares.ge", "holderfile.com", "megashare.vnn.vn", "link.ge", "up.jeje.ge", "up-4.com", "cloudcache", "ddlanime.com", "mountfile.com", "platinshare.com", "ishare.iask.sina.com.cn", "megavideo.com", "megaupload.com", "cum.com", "zshare.net", "uploading4u.com", "megafree.kz", "batubia.com", "upload24.net", "files.namba.kz", "datumbit.com", "fik1.com", "fileape.com", "filezzz.com", "imagewaste.com", "fyels.com", "gotupload.com", "sharehub.com", "sharehut.com", "filesurf.ru", "openfile.ru", "letitfile.ru", "tab.net.ua", "uploadbox.com", "supashare.net", "usershare.net", "skipfile.com", "10upload.com", "x7.to", "multiupload.com",
"uploadking.com", "uploadhere.com", "fileshaker.com", "vistaupload.com", "groovefile.com", "enterupload.com", "xshareware.com", "xun6.com", "yourupload.de", "youshare.eu", "mafiaupload.com", "addat.hu", "archiv.to", "bigupload.com", "biggerupload.com", "bitload.com", "bufiles.com", "cash-file.net", "combozip.com", "duckload.com", "exoshare.com", "file2upload.net", "filebase.to", "filebling.com", "filecrown.com", "filefrog.to", "filefront.com", "filehook.com", "filestage.to", "filezup.com", "fullshare.net", "gaiafile.com", "keepfile.com", "kewlshare.com", "lizshare.net", "loaded.it", "loadfiles.in", "megarapid.eu", "megashare.vn", "metahyper.com", "missupload.com", "netstorer.com", "nextgenvidz.com", "piggyshare.com", "profitupload.com", "quickload.to", "quickyshare.com", "share.cx", "sharehoster.de", "shareua.com", "speedload.to", "upfile.in", "ugotfile.com", "upload.ge",
"uploadmachine.com", "uploady.to", "uploadstore.net", "vspace.cc", "web-share.net", "yvh.cc", "x-files.kz" }, urls = { "http://(www\\.)?shareator\\.net/[0-9a-z]+", "http://(www\\.)?azushare\\.net/[A-Za-z0-9]+/", "https?://(www\\.)?filecosy\\.com/[a-z0-9]{12}", "https?://(www\\.)?monsteruploads\\.eu/[a-z0-9]{12}(/[^<>\"/]*?)?\\.html", "https?://(www\\.)?vidhuge\\.com/[a-z0-9]{12}", "http://(www\\.)?doneshare\\.com/files/details/[a-z0-9\\-]+\\.html", "http://(www\\.)?cixup\\.com/((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "https?://(www\\.)?animegoon\\.com/[a-z0-9]{12}", "http://(www\\.)?supermov\\.com/(rc|video)/[0-9]+", "https?://(www\\.)?ufliq\\.com/[a-z0-9]{12}", "http://(www\\.)?vidreel\\.com/video/[0-9a-zA-Z]+/", "http://(www\\.)?deditv\\.com/(play|gate\\-way)\\.php\\?v=[0-9a-f]+",
"http://(www\\.)?(hotshare|supershare)\\.net/(.+/)?(file|audio|video)/.+", "https?://(www\\.)?shareshared\\.com/[a-z0-9]{12}", "http://(www\\.)?uploadville\\.com/[a-z0-9]{12}", "http://(www\\.)?fileserver\\.cc/[a-z0-9]{12}", "http://(www\\.)?bebasupload\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?savefile\\.ro/[\\w]+/?", "http://(www\\.)?ovfile\\.com/[a-z0-9]{12}", "https?://(www\\.)?divxbase\\.com/[a-z0-9]{12}", "https?://(www\\.)?gptfile\\.com/[a-z0-9]{12}", "https?://(www\\.)?dudupload\\.com/[a-z0-9]{12}", "http://(www\\.)?eyvx\\.com/[a-z0-9]{12}", "http://(www\\.)?farshare\\.to/[a-z0-9]{12}", "http://(www\\.)?azsharing\\.com/[a-z0-9]{12}/", "http://(www\\.)?freefilessharing\\.com/[a-z0-9]{12}", "https?://(www\\.)?elitedisk\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?freakmov\\.com/(rc|video)/[0-9]+", "http://[\\w\\.]*?(shragle|cloudnator)\\.(com|de)/files/[\\w]+/.*",
"http://[\\w\\.]*?filesavr\\.com/[A-Za-z0-9]+(_\\d+)?", "http://(www\\.)?saveufile\\.(in\\.th|com)/car\\.php\\?file=[a-z0-9]+", "https?://(www\\.)?migahost\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?fastfreefilehosting\\.com/((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "https?://(www\\.)?files2k\\.eu/[a-z0-9]{12}", "https?://(www\\.)?shafiles\\.me/[a-z0-9]{12}", "http://(www\\.)?jalurcepat\\.com/[a-z0-9]{12}", "https?://(www\\.)?(divload|divupload)\\.org/(embed\\-)?[a-z0-9]{12}", "http://(www\\.)?refile\\.net/(d|f)/\\?[\\w]+", "http://[\\w\\.]*?oron\\.com/[a-z0-9]{12}", "http://(www\\.)?wupload\\.[a-z]{1,5}/file/([0-9]+(/.+)?|[a-z0-9]+/[0-9]+(/.+)?)", "http://[\\w\\.]*?(sharingmatrix|filesonic)\\..*?/.*?file/([a-zA-Z0-9]+(/.+)?|[a-z0-9]+/[0-9]+(/.+)?|[0-9]+(/.+)?)", "https?://(www\\.)?xxlupload\\.com/[a-z0-9]{12}",
"http://(www\\.)?cumfox\\.com/videos/.*?-\\d+\\.html", "http://(www\\.)?pyramidfiles\\.com/[a-z0-9]{12}", "http://(www\\.)?nahraj\\.cz/content/(view|download)/[a-z0-9]+\\-[a-z0-9]+\\-[a-z0-9]+\\-[a-z0-9]+\\-[a-z0-9]+", "http://(www\\.)?jsharer\\.com/download/[a-z0-9]+\\.htm", "https?://(www\\.)?annonhost\\.net/[a-z0-9]{12}", "http://(www\\.)?filekeeper\\.org/download/[0-9a-zA-Z]+/([\\(\\)0-9A-Za-z\\.\\-_% ]+|[/]+/[\\(\\)0-9A-Za-z\\.\\-_% ])", "http://(www\\.)?dynyoo\\.com/\\?goto=dl\\&id=[a-z0-9]{32}", "http://[\\w\\.]*?163pan\\.com/files/[a-z0-9]+\\.html", "http://[\\w\\.]*?imagehost\\.org/(download/[0-9]+/.+|[0-9]+/.+)", "http://[\\w\\.]*?4us\\.to/download\\.php\\?id=[A-Z0-9]+", "http://[\\w\\.]*?yabadaba\\.ru/files/[0-9]+", "http://(www\\.)?madshare\\.com/(en/)?download/[a-zA-Z0-9]+/", "http://(www\\.)?diglo\\.com/download/[a-z0-9]+",
"http://(www\\.)?tubeload\\.to/file(\\d+)?\\-.+", "http://(www\\.)?tunabox\\.net/files/[A-Za-z0-9]+\\.html", "http://[\\w\\.]*?yourfilehost\\.com/media\\.php\\?cat=.*?\\&file=.+", "https?://(www\\.)?uploadegg\\.com/[a-z0-9]{12}", "http://(www\\.)?brsbox\\.com/filebox/down/fc/[a-z0-9]{32}", "http://(www\\.)?amateurboobtube\\.com/videos/\\d+/.*?\\.html", "http://(www\\.)?good\\.net/.+", "http://(www\\.)*?(freeload|mcload)\\.to/(divx\\.php\\?file_id=|\\?Mod=Divx\\&Hash=)[a-z0-9]+", "http://(www\\.)?netporn\\.nl/watch/[a-z0-9]+/.{1}", "http://(www\\.)?przeklej\\.pl/(d/\\w+/|\\d+|plik/)[^\\s]+", "http://(www\\.)?alldrives\\.ge/main/linkform\\.php\\?f=[a-z0-9]+", "http://(www\\.)?allshares\\.ge/(\\?d|download\\.php\\?id)=[A-Z0-9]+", "https?://(www\\.)?holderfile\\.com/[a-z0-9]{12}",
"http://(www\\.)?megashare\\.vnn\\.vn/((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "http://(www\\.)?link\\.ge/((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "http://(www\\.)?up\\.jeje\\.ge//((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "http://(www\\.)?up\\-4\\.com/(\\?d|download\\.php\\?id)=[A-Z0-9]+", "https?://(www\\.)?cloudcache\\.cc/[a-z0-9]{12}", "https?://(www\\.)?(ddlanime\\.com|ddlani\\.me)/[a-z0-9]{12}", "http://(www\\.)?mountfile\\.com/file/[a-z0-9]+/[a-z0-9]+", "http://(www\\.)?platinshare\\.com/files/[A-Za-z0-9]+", "http://(www\\.)?ishare\\.iask\\.sina\\.com\\.cn/f/\\d+\\.html", "http://(www\\.)?megavideo\\.com/(.*?(v|d)=|v/)[a-zA-Z0-9]+", "http://(www\\.)?megaupload\\.com/.*?(\\?|&)d=[0-9A-Za-z]+", "http://(www\\.)?(cum|megaporn|megarotic|sexuploader)\\.com/(.*?v=|v/)[a-zA-Z0-9]+",
"http://(www\\.)?zshare\\.net/(download|video|image|audio|flash)/.*", "http://(www\\.)?uploading4u\\.com/((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "http://(www\\.)?megafree\\.kz/file\\d+", "http://(www\\.)?batubia\\.com/[a-z0-9]{12}", "http://(www\\.)?upload24\\.net/[a-z0-9]+\\.[a-z0-9]+", "http://(www\\.)?download\\.files\\.namba\\.kz/files/\\d+", "http://(www\\.)?datumbit\\.com/file/.*?/", "http://(www\\.)?fik1\\.com/[a-z0-9]{12}", "http://(www\\.)?fileape\\.com/(index\\.php\\?act=download\\&id=|dl/)\\w+", "http://(www\\.)?filezzz\\.com/download/[0-9]+/", "http://(www\\.)?imagewaste\\.com/pictures/\\d+/.{1}", "http://(www\\.)?fyels\\.com/[A-Za-z0-9]+", "http://(www\\.)?gotupload\\.com/[a-z0-9]{12}", "http://(go.sharehub.com|sharehub.me|follow.to|kgt.com|krt.com)/.*", "http://(www\\.)?sharehut\\.com/[a-z0-9]{12}",
"http://[\\w\\.]*?(filesurf|4ppl|files\\.youmama)\\.ru/[0-9]+", "http://[\\w\\.]*?openfile\\.ru/[0-9]+", "http://[\\w\\.]*?letitfile\\.(ru|com)/download/id\\d+", "http://[\\w\\.]*?tab\\.net\\.ua/sites/files/site_name\\..*?/id\\.\\d+/", "http://[\\w\\.]*?uploadbox\\.com/.*?files/[0-9a-zA-Z]+", "http://(www\\.)?supashare\\.net/[a-z0-9]{12}", "https?://(www\\.)?usershare\\.net/[a-z0-9]{12}", "http://(www\\.)?skipfile\\.com/[a-z0-9]{12}", "http://(www\\.)?10upload\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?x7\\.to/(?!list)[a-zA-Z0-9]+(/(?!inList)[^/\r\n]+)?", "http://(www\\.)?multiuploaddecrypted\\.com/([A-Z0-9]{2}_[A-Z0-9]+|[0-9A-Z]+)", "http://(www\\.)?uploadking\\.com/[A-Z0-9]+", "http://(www\\.)?uploadhere\\.com/[A-Z0-9]+", "http://[\\w\\.]*?fileshaker\\.com/.+", "http://(www\\.)?vistaupload\\.com/[a-z0-9]{12}", "https?://(www\\.)?groovefile\\.com/[a-z0-9]{12}",
"http://[\\w\\.]*?enterupload\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?xshareware\\.com/[\\w]+/.*", "http://[\\w\\.]*?xun6\\.(com|net)/file/[a-z0-9]+", "http://(www\\.)?yourupload\\.de/[a-z0-9]{12}", "http://(www\\.)?youshare\\.eu/[a-z0-9]{12}", "http://(www\\.)?mafiaupload\\.com/do\\.php\\?id=\\d+", "http://[\\w\\.]*?addat.hu/.+/.+", "http://(www\\.)?archiv\\.to/((\\?Module\\=Details\\&HashID\\=|GET/)FILE[A-Z0-9]+|view/divx/[a-z0-9]+)", "http://[\\w\\.]*?bigupload\\.com/(d=|files/)[A-Z0-9]+", "http://(www\\.)?biggerupload\\.com/[a-z0-9]{12}", "http://(www\\.)?(bitload\\.com/(f|d)/\\d+/[a-z0-9]+|mystream\\.to/file-\\d+-[a-z0-9]+)", "https?://(www\\.)?bufiles\\.com/[a-z0-9]{12}", "http://(www\\.)?cash-file\\.(com|net)/[a-z0-9]{12}", "http://[\\w\\.]*?combozip\\.com/[a-z0-9]{12}",
@HostPlugin(revision = "$Revision$", interfaceVersion = 3, names = { "sharing-online.com", "filestrack.com", "shareator.net", "azushare.net", "filecosy.com", "monsteruploads.eu", "vidhuge.com", "doneshare.com", "cixup.com", "animegoon.com", "supermov.com", "ufliq.com", "vidreel.com", "deditv.com", "supershare.net", "shareshared.com", "uploadville.com", "fileserver.cc", "bebasupload.com", "savefile.ro", "ovfile.com", "divxbase.com", "gptfile.com", "dudupload.com", "eyvx.com", "farshare.to", "azsharing.com", "freefilessharing.com", "elitedisk.com", "freakmov.com", "cloudnator.com", "filesavr.com", "saveufile.in.th", "migahost.com", "fastfreefilehosting.com", "files2k.eu", "shafiles.me", "jalurcepat.com", "divload.org", "refile.net", "oron.com", "wupload.com", "filesonic.com", "xxlupload.com", "cumfox.com", "pyramidfiles.com", "nahraj.cz", "jsharer.com", "annonhost.net",
"filekeeper.org", "dynyoo.com", "163pan.com", "imagehost.org", "4us.to", "yabadaba.ru", "madshare.com", "diglo.com", "tubeload.to", "tunabox.net", "yourfilehost.com", "uploadegg.com", "brsbox.com", "amateurboobtube.com", "good.net", "freeload.to", "netporn.nl", "przeklej.pl", "alldrives.ge", "allshares.ge", "holderfile.com", "megashare.vnn.vn", "link.ge", "up.jeje.ge", "up-4.com", "cloudcache", "ddlanime.com", "mountfile.com", "platinshare.com", "ishare.iask.sina.com.cn", "megavideo.com", "megaupload.com", "cum.com", "zshare.net", "uploading4u.com", "megafree.kz", "batubia.com", "upload24.net", "files.namba.kz", "datumbit.com", "fik1.com", "fileape.com", "filezzz.com", "imagewaste.com", "fyels.com", "gotupload.com", "sharehub.com", "sharehut.com", "filesurf.ru", "openfile.ru", "letitfile.ru", "tab.net.ua", "uploadbox.com", "supashare.net", "usershare.net", "skipfile.com",
"10upload.com", "x7.to", "multiupload.com", "uploadking.com", "uploadhere.com", "fileshaker.com", "vistaupload.com", "groovefile.com", "enterupload.com", "xshareware.com", "xun6.com", "yourupload.de", "youshare.eu", "mafiaupload.com", "addat.hu", "archiv.to", "bigupload.com", "biggerupload.com", "bitload.com", "bufiles.com", "cash-file.net", "combozip.com", "duckload.com", "exoshare.com", "file2upload.net", "filebase.to", "filebling.com", "filecrown.com", "filefrog.to", "filefront.com", "filehook.com", "filestage.to", "filezup.com", "fullshare.net", "gaiafile.com", "keepfile.com", "kewlshare.com", "lizshare.net", "loaded.it", "loadfiles.in", "megarapid.eu", "megashare.vn", "metahyper.com", "missupload.com", "netstorer.com", "nextgenvidz.com", "piggyshare.com", "profitupload.com", "quickload.to", "quickyshare.com", "share.cx", "sharehoster.de", "shareua.com", "speedload.to",
"upfile.in", "ugotfile.com", "upload.ge", "uploadmachine.com", "uploady.to", "uploadstore.net", "vspace.cc", "web-share.net", "yvh.cc", "x-files.kz" }, urls = { "http://(www\\.)?sharing\\-online\\.com/[a-z0-9]{12}", "http://(www\\.)?filestrack\\.com/[a-z0-9]{12}", "http://(www\\.)?shareator\\.net/[0-9a-z]+", "http://(www\\.)?azushare\\.net/[A-Za-z0-9]+/", "https?://(www\\.)?filecosy\\.com/[a-z0-9]{12}", "https?://(www\\.)?monsteruploads\\.eu/[a-z0-9]{12}(/[^<>\"/]*?)?\\.html", "https?://(www\\.)?vidhuge\\.com/[a-z0-9]{12}", "http://(www\\.)?doneshare\\.com/files/details/[a-z0-9\\-]+\\.html", "http://(www\\.)?cixup\\.com/((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "https?://(www\\.)?animegoon\\.com/[a-z0-9]{12}", "http://(www\\.)?supermov\\.com/(rc|video)/[0-9]+", "https?://(www\\.)?ufliq\\.com/[a-z0-9]{12}",
"http://(www\\.)?vidreel\\.com/video/[0-9a-zA-Z]+/", "http://(www\\.)?deditv\\.com/(play|gate\\-way)\\.php\\?v=[0-9a-f]+", "http://(www\\.)?(hotshare|supershare)\\.net/(.+/)?(file|audio|video)/.+", "https?://(www\\.)?shareshared\\.com/[a-z0-9]{12}", "http://(www\\.)?uploadville\\.com/[a-z0-9]{12}", "http://(www\\.)?fileserver\\.cc/[a-z0-9]{12}", "http://(www\\.)?bebasupload\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?savefile\\.ro/[\\w]+/?", "http://(www\\.)?ovfile\\.com/[a-z0-9]{12}", "https?://(www\\.)?divxbase\\.com/[a-z0-9]{12}", "https?://(www\\.)?gptfile\\.com/[a-z0-9]{12}", "https?://(www\\.)?dudupload\\.com/[a-z0-9]{12}", "http://(www\\.)?eyvx\\.com/[a-z0-9]{12}", "http://(www\\.)?farshare\\.to/[a-z0-9]{12}", "http://(www\\.)?azsharing\\.com/[a-z0-9]{12}/", "http://(www\\.)?freefilessharing\\.com/[a-z0-9]{12}", "https?://(www\\.)?elitedisk\\.com/[a-z0-9]{12}",
"http://[\\w\\.]*?freakmov\\.com/(rc|video)/[0-9]+", "http://[\\w\\.]*?(shragle|cloudnator)\\.(com|de)/files/[\\w]+/.*", "http://[\\w\\.]*?filesavr\\.com/[A-Za-z0-9]+(_\\d+)?", "http://(www\\.)?saveufile\\.(in\\.th|com)/car\\.php\\?file=[a-z0-9]+", "https?://(www\\.)?migahost\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?fastfreefilehosting\\.com/((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "https?://(www\\.)?files2k\\.eu/[a-z0-9]{12}", "https?://(www\\.)?shafiles\\.me/[a-z0-9]{12}", "http://(www\\.)?jalurcepat\\.com/[a-z0-9]{12}", "https?://(www\\.)?(divload|divupload)\\.org/(embed\\-)?[a-z0-9]{12}", "http://(www\\.)?refile\\.net/(d|f)/\\?[\\w]+", "http://[\\w\\.]*?oron\\.com/[a-z0-9]{12}", "http://(www\\.)?wupload\\.[a-z]{1,5}/file/([0-9]+(/.+)?|[a-z0-9]+/[0-9]+(/.+)?)",
"http://[\\w\\.]*?(sharingmatrix|filesonic)\\..*?/.*?file/([a-zA-Z0-9]+(/.+)?|[a-z0-9]+/[0-9]+(/.+)?|[0-9]+(/.+)?)", "https?://(www\\.)?xxlupload\\.com/[a-z0-9]{12}", "http://(www\\.)?cumfox\\.com/videos/.*?-\\d+\\.html", "http://(www\\.)?pyramidfiles\\.com/[a-z0-9]{12}", "http://(www\\.)?nahraj\\.cz/content/(view|download)/[a-z0-9]+\\-[a-z0-9]+\\-[a-z0-9]+\\-[a-z0-9]+\\-[a-z0-9]+", "http://(www\\.)?jsharer\\.com/download/[a-z0-9]+\\.htm", "https?://(www\\.)?annonhost\\.net/[a-z0-9]{12}", "http://(www\\.)?filekeeper\\.org/download/[0-9a-zA-Z]+/([\\(\\)0-9A-Za-z\\.\\-_% ]+|[/]+/[\\(\\)0-9A-Za-z\\.\\-_% ])", "http://(www\\.)?dynyoo\\.com/\\?goto=dl\\&id=[a-z0-9]{32}", "http://[\\w\\.]*?163pan\\.com/files/[a-z0-9]+\\.html", "http://[\\w\\.]*?imagehost\\.org/(download/[0-9]+/.+|[0-9]+/.+)", "http://[\\w\\.]*?4us\\.to/download\\.php\\?id=[A-Z0-9]+",
"http://[\\w\\.]*?yabadaba\\.ru/files/[0-9]+", "http://(www\\.)?madshare\\.com/(en/)?download/[a-zA-Z0-9]+/", "http://(www\\.)?diglo\\.com/download/[a-z0-9]+", "http://(www\\.)?tubeload\\.to/file(\\d+)?\\-.+", "http://(www\\.)?tunabox\\.net/files/[A-Za-z0-9]+\\.html", "http://[\\w\\.]*?yourfilehost\\.com/media\\.php\\?cat=.*?\\&file=.+", "https?://(www\\.)?uploadegg\\.com/[a-z0-9]{12}", "http://(www\\.)?brsbox\\.com/filebox/down/fc/[a-z0-9]{32}", "http://(www\\.)?amateurboobtube\\.com/videos/\\d+/.*?\\.html", "http://(www\\.)?good\\.net/.+", "http://(www\\.)*?(freeload|mcload)\\.to/(divx\\.php\\?file_id=|\\?Mod=Divx\\&Hash=)[a-z0-9]+", "http://(www\\.)?netporn\\.nl/watch/[a-z0-9]+/.{1}", "http://(www\\.)?przeklej\\.pl/(d/\\w+/|\\d+|plik/)[^\\s]+", "http://(www\\.)?alldrives\\.ge/main/linkform\\.php\\?f=[a-z0-9]+",
"http://(www\\.)?allshares\\.ge/(\\?d|download\\.php\\?id)=[A-Z0-9]+", "https?://(www\\.)?holderfile\\.com/[a-z0-9]{12}", "http://(www\\.)?megashare\\.vnn\\.vn/((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "http://(www\\.)?link\\.ge/((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "http://(www\\.)?up\\.jeje\\.ge//((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "http://(www\\.)?up\\-4\\.com/(\\?d|download\\.php\\?id)=[A-Z0-9]+", "https?://(www\\.)?cloudcache\\.cc/[a-z0-9]{12}", "https?://(www\\.)?(ddlanime\\.com|ddlani\\.me)/[a-z0-9]{12}", "http://(www\\.)?mountfile\\.com/file/[a-z0-9]+/[a-z0-9]+", "http://(www\\.)?platinshare\\.com/files/[A-Za-z0-9]+", "http://(www\\.)?ishare\\.iask\\.sina\\.com\\.cn/f/\\d+\\.html", "http://(www\\.)?megavideo\\.com/(.*?(v|d)=|v/)[a-zA-Z0-9]+",
"http://(www\\.)?megaupload\\.com/.*?(\\?|&)d=[0-9A-Za-z]+", "http://(www\\.)?(cum|megaporn|megarotic|sexuploader)\\.com/(.*?v=|v/)[a-zA-Z0-9]+", "http://(www\\.)?zshare\\.net/(download|video|image|audio|flash)/.*", "http://(www\\.)?uploading4u\\.com/((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "http://(www\\.)?megafree\\.kz/file\\d+", "http://(www\\.)?batubia\\.com/[a-z0-9]{12}", "http://(www\\.)?upload24\\.net/[a-z0-9]+\\.[a-z0-9]+", "http://(www\\.)?download\\.files\\.namba\\.kz/files/\\d+", "http://(www\\.)?datumbit\\.com/file/.*?/", "http://(www\\.)?fik1\\.com/[a-z0-9]{12}", "http://(www\\.)?fileape\\.com/(index\\.php\\?act=download\\&id=|dl/)\\w+", "http://(www\\.)?filezzz\\.com/download/[0-9]+/", "http://(www\\.)?imagewaste\\.com/pictures/\\d+/.{1}", "http://(www\\.)?fyels\\.com/[A-Za-z0-9]+", "http://(www\\.)?gotupload\\.com/[a-z0-9]{12}",
"http://(go.sharehub.com|sharehub.me|follow.to|kgt.com|krt.com)/.*", "http://(www\\.)?sharehut\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?(filesurf|4ppl|files\\.youmama)\\.ru/[0-9]+", "http://[\\w\\.]*?openfile\\.ru/[0-9]+", "http://[\\w\\.]*?letitfile\\.(ru|com)/download/id\\d+", "http://[\\w\\.]*?tab\\.net\\.ua/sites/files/site_name\\..*?/id\\.\\d+/", "http://[\\w\\.]*?uploadbox\\.com/.*?files/[0-9a-zA-Z]+", "http://(www\\.)?supashare\\.net/[a-z0-9]{12}", "https?://(www\\.)?usershare\\.net/[a-z0-9]{12}", "http://(www\\.)?skipfile\\.com/[a-z0-9]{12}", "http://(www\\.)?10upload\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?x7\\.to/(?!list)[a-zA-Z0-9]+(/(?!inList)[^/\r\n]+)?", "http://(www\\.)?multiuploaddecrypted\\.com/([A-Z0-9]{2}_[A-Z0-9]+|[0-9A-Z]+)", "http://(www\\.)?uploadking\\.com/[A-Z0-9]+", "http://(www\\.)?uploadhere\\.com/[A-Z0-9]+", "http://[\\w\\.]*?fileshaker\\.com/.+",
"http://(www\\.)?vistaupload\\.com/[a-z0-9]{12}", "https?://(www\\.)?groovefile\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?enterupload\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?xshareware\\.com/[\\w]+/.*", "http://[\\w\\.]*?xun6\\.(com|net)/file/[a-z0-9]+", "http://(www\\.)?yourupload\\.de/[a-z0-9]{12}", "http://(www\\.)?youshare\\.eu/[a-z0-9]{12}", "http://(www\\.)?mafiaupload\\.com/do\\.php\\?id=\\d+", "http://[\\w\\.]*?addat.hu/.+/.+", "http://(www\\.)?archiv\\.to/((\\?Module\\=Details\\&HashID\\=|GET/)FILE[A-Z0-9]+|view/divx/[a-z0-9]+)", "http://[\\w\\.]*?bigupload\\.com/(d=|files/)[A-Z0-9]+", "http://(www\\.)?biggerupload\\.com/[a-z0-9]{12}", "http://(www\\.)?(bitload\\.com/(f|d)/\\d+/[a-z0-9]+|mystream\\.to/file-\\d+-[a-z0-9]+)", "https?://(www\\.)?bufiles\\.com/[a-z0-9]{12}", "http://(www\\.)?cash-file\\.(com|net)/[a-z0-9]{12}", "http://[\\w\\.]*?combozip\\.com/[a-z0-9]{12}",
"http://[\\w\\.]*?(duckload\\.com|youload\\.to)/(download/[a-z0-9]+|(divx|play)/[A-Z0-9\\.-]+|[a-zA-Z0-9\\.]+)", "http://(www\\.)?exoshare\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?file2upload\\.(net|com)/download/[0-9]+/", "http://[\\w\\.]*?filebase\\.to/(files|download)/\\d{1,}/.*", "http://[\\w\\.]*?filebling\\.com/[a-z0-9]{12}", "http://(www\\.)?filecrown\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?filefrog\\.to/download/\\d+/[a-zA-Z0-9]+", "http://[\\w\\.]*?filefront\\.com/[0-9]+", "http://(www\\.)?filehook\\.com/[a-z0-9]{12}", "http://(www\\.)?filestage\\.to/watch/[a-z0-9]+/", "http://(www\\.)?(filezup|divxupfile)\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?fullshare\\.net/show/[a-z0-9]+/.+", "http://(www\\.)?gaiafile\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?keepfile\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?kewlshare\\.com/dl/[\\w]+/", "http://[\\w\\.]*?lizshare\\.net/[a-z0-9]{12}",
"http://(www\\.)?loaded\\.it/(show/[a-z0-9]+/[A-Za-z0-9_\\-% \\.]+|(flash|divx)/[a-z0-9]+/)", "http://[\\w\\.]*?loadfiles\\.in/[a-z0-9]{12}", "(http://[\\w\\.]*?megarapid\\.eu/files/\\d+/.+)|(http://[\\w\\.]*?megarapid\\.eu/\\?e=403\\&m=captcha\\&file=\\d+/.+)", "http://[\\w\\.]*?(megashare\\.vn/(download\\.php\\?uid=[0-9]+\\&id=[0-9]+|dl\\.php/\\d+)|share\\.megaplus\\.vn/dl\\.php/\\d+)", "http://(www\\.)?metahyper\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?missupload\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?netstorer\\.com/[a-zA-Z0-9]+/.+", "http://[\\w\\.]*?nextgenvidz\\.com/view/\\d+", "http://(www\\.)?piggyshare\\.com/file/[a-z0-9]+", "http://(www\\.)?profitupload\\.com/files/[A-Za-z0-9]+\\.html", "http://[\\w\\.]*?quickload\\.to/\\?Go=Player\\&HashID=FILE[A-Z0-9]+", "http://[\\w\\.]*?quickyshare\\.com/[a-z0-9]{12}", "http://[\\w\\.]*?share\\.cx/(files/)?\\d+",
"http://[\\w\\.]*?sharehoster\\.(de|com|net)/(dl|wait|vid)/[a-z0-9]+", "http://[\\w\\.]*?shareua.com/get_file/.*?/\\d+", "http://[\\w\\.]*?speedload\\.to/FILE[A-Z0-9]+", "http://(www\\.)?upfile\\.in/[a-z0-9]{12}", "http://[\\w\\.]*?ugotfile.com/file/\\d+/.+", "http://[\\w\\.]*?upload\\.ge/((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "http://[\\w\\.]*?uploadmachine\\.com/(download\\.php\\?id=[0-9]+&type=[0-9]{1}|file/[0-9]+/)", "http://[\\w\\.]*?uploady\\.to/dl/((\\?d|download\\.php\\?id)=[A-Z0-9]+|((en|ru|fr|es)/)?file/[0-9]+/)", "http://(www\\.)?uploadstore\\.net/[a-z0-9]{12}", "http://[\\w\\.]*?vspace\\.cc/file/[A-Z0-9]+\\.html", "http://[\\w\\.]*?web-share\\.net/download/file/item/.*?_[0-9]+", "http://(www\\.)?yvh\\.cc/video\\.php\\?file=[a-z0-9_]+", "http://[\\w\\.]*?x-files\\.kz/[a-z0-9]+" }, flags = { 0 })

View File

@ -47,7 +47,7 @@ public class OneFichierCom extends PluginForHost {
private static AtomicInteger maxPrem = new AtomicInteger(1);
private static final String PASSWORDTEXT = "(Accessing this file is protected by password|Please put it on the box bellow|Veuillez le saisir dans la case ci-dessous)";
private static final String IPBLOCKEDTEXTS = "(/>Téléchargements en cours|>veuillez patienter avant de télécharger un autre fichier|>You already downloading (some|a) file|>You can download only one file at a time|>Please wait a few seconds before downloading new ones|>You must wait for another download)";
private static final String IPBLOCKEDTEXTS = "(/>Téléchargements en cours|>veuillez patienter avant de télécharger un autre fichier|>You already downloading (some|a) file|>You can download only one file at a time|>Please wait a few seconds before downloading new ones|>You must wait for another download|Without premium status, you can download only one file at a time)";
private static final String FREELINK = "freeLink";
private static final String PREMLINK = "premLink";
private static final String SSL_CONNECTION = "SSL_CONNECTION";
@ -82,7 +82,7 @@ public class OneFichierCom extends PluginForHost {
link.getLinkStatus().setStatusText(JDL.L("plugins.hoster.onefichiercom.passwordprotected", "This link is password protected"));
return AvailableStatus.UNCHECKABLE;
}
String[][] linkInfo = br.getRegex("https?://[^;]+;([^;]+);([0-9]+);(\\d+)").getMatches();
final String[][] linkInfo = br.getRegex("https?://[^;]+;([^;]+);([0-9]+);(\\d+)").getMatches();
if (linkInfo == null || linkInfo.length == 0) {
logger.warning("Available Status broken for link");
return null;
@ -193,12 +193,14 @@ public class OneFichierCom extends PluginForHost {
br.getPage("https://1fichier.com/console/account.pl?user=" + Encoding.urlEncode(account.getUser()) + "&pass=" + Encoding.urlEncode(JDHash.getMD5(account.getPass())));
String timeStamp = br.getRegex("(\\d+)").getMatch(0);
String freeCredits = br.getRegex("0[\r\n]+([0-9\\.]+)").getMatch(0);
if (timeStamp == null || "error".equalsIgnoreCase(timeStamp)) {
// Use site login/site download if either API is not working or API says
// that there are no credits available
if ("error".equalsIgnoreCase(timeStamp) || ("0".equals(timeStamp) && freeCredits == null)) {
/**
* Only used if the API fails and is wrong but that usually doesn't
* happen!
*/
logger.info("Username/Password invalid via API, trying non-API login");
logger.info("Using site login because API is either wrong or no free credits...");
br.postPage("https://www.1fichier.com/en/login.pl", "lt=on&Login=Login&secure=on&mail=" + Encoding.urlEncode(account.getUser()) + "&pass=" + account.getPass());
final String logincheck = br.getCookie("http://1fichier.com/", "SID");
if (logincheck == null || logincheck.equals("")) {

View File

@ -1,448 +0,0 @@
//jDownloader - Downloadmanager
//Copyright (C) 2009 JD-Team support@jdownloader.org
//
//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 <http://www.gnu.org/licenses/>.
package jd.plugins.hoster;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.SortedMap;
import java.util.TreeMap;
import jd.PluginWrapper;
import jd.nutils.encoding.Encoding;
import jd.parser.Regex;
import jd.parser.html.Form;
import jd.parser.html.HTMLParser;
import jd.plugins.DownloadLink;
import jd.plugins.DownloadLink.AvailableStatus;
import jd.plugins.HostPlugin;
import jd.plugins.LinkStatus;
import jd.plugins.Plugin;
import jd.plugins.PluginException;
import jd.plugins.PluginForHost;
import jd.utils.JDUtilities;
import org.appwork.utils.formatter.SizeFormatter;
@HostPlugin(revision = "$Revision$", interfaceVersion = 2, names = { "sharing-online.com" }, urls = { "http://(www\\.)?sharing-online\\.com/[a-z0-9]{12}" }, flags = { 0 })
public class SharingOnlineCom extends PluginForHost {
private String BRBEFORE = "";
private static final String PASSWORDTEXT0 = "<br><b>Password:</b> <input";
private static final String PASSWORDTEXT1 = "<br><b>Passwort:</b> <input";
private static final String COOKIE_HOST = "http://sharing-online.com";
public boolean NOPREMIUM = false;
public SharingOnlineCom(PluginWrapper wrapper) {
super(wrapper);
// this.enablePremium(COOKIE_HOST + "/premium.html");
}
public void checkErrors(DownloadLink theLink, boolean checkAll, String passCode, boolean loggedIn) throws NumberFormatException, PluginException {
if (checkAll) {
if (BRBEFORE.contains("<br><b>Password:</b> <input") || BRBEFORE.contains("<br><b>Passwort:</b> <input") || BRBEFORE.contains("Wrong password")) {
logger.warning("Wrong password, the entered password \"" + passCode + "\" is wrong, retrying...");
theLink.setProperty("pass", null);
throw new PluginException(LinkStatus.ERROR_RETRY);
}
if (BRBEFORE.contains("Wrong captcha")) {
logger.warning("Wrong captcha or wrong password!");
throw new PluginException(LinkStatus.ERROR_CAPTCHA);
}
}
// Some waittimes...
if (BRBEFORE.contains("You have to wait")) {
if (loggedIn) throw new PluginException(LinkStatus.ERROR_PREMIUM, PluginException.VALUE_ID_PREMIUM_TEMP_DISABLE);
int minutes = 0, seconds = 0, hours = 0;
String tmphrs = new Regex(BRBEFORE, "You have to wait.*?\\s+(\\d+)\\s+hours?").getMatch(0);
if (tmphrs != null) hours = Integer.parseInt(tmphrs);
String tmpmin = new Regex(BRBEFORE, "You have to wait.*?\\s+(\\d+)\\s+minutes?").getMatch(0);
if (tmpmin != null) minutes = Integer.parseInt(tmpmin);
String tmpsec = new Regex(BRBEFORE, "You have to wait.*?\\s+(\\d+)\\s+seconds?").getMatch(0);
if (tmpsec != null) seconds = Integer.parseInt(tmpsec);
int waittime = ((3600 * hours) + (60 * minutes) + seconds + 1) * 1000;
if (waittime != 0) {
logger.info("Detected waittime #1, waiting " + waittime + " milliseconds");
throw new PluginException(LinkStatus.ERROR_IP_BLOCKED, null, waittime);
} else {
logger.info("Waittime regexes seem to be broken");
throw new PluginException(LinkStatus.ERROR_IP_BLOCKED);
}
}
if (BRBEFORE.contains("You have reached the download-limit")) {
if (loggedIn) throw new PluginException(LinkStatus.ERROR_PREMIUM, PluginException.VALUE_ID_PREMIUM_TEMP_DISABLE);
String tmphrs = new Regex(BRBEFORE, "\\s+(\\d+)\\s+hours?").getMatch(0);
String tmpmin = new Regex(BRBEFORE, "\\s+(\\d+)\\s+minutes?").getMatch(0);
String tmpsec = new Regex(BRBEFORE, "\\s+(\\d+)\\s+seconds?").getMatch(0);
String tmpdays = new Regex(BRBEFORE, "\\s+(\\d+)\\s+days?").getMatch(0);
if (tmphrs == null && tmpmin == null && tmpsec == null && tmpdays == null) {
throw new PluginException(LinkStatus.ERROR_IP_BLOCKED, null, 60 * 60 * 1000l);
} else {
int minutes = 0, seconds = 0, hours = 0, days = 0;
if (tmphrs != null) hours = Integer.parseInt(tmphrs);
if (tmpmin != null) minutes = Integer.parseInt(tmpmin);
if (tmpsec != null) seconds = Integer.parseInt(tmpsec);
if (tmpdays != null) days = Integer.parseInt(tmpdays);
int waittime = ((days * 24 * 3600) + (3600 * hours) + (60 * minutes) + seconds + 1) * 1000;
logger.info("Detected waittime #2, waiting " + waittime + "milliseconds");
throw new PluginException(LinkStatus.ERROR_IP_BLOCKED, null, waittime);
}
}
if (BRBEFORE.contains("You're using all download slots for IP")) {
if (loggedIn) throw new PluginException(LinkStatus.ERROR_PREMIUM, PluginException.VALUE_ID_PREMIUM_TEMP_DISABLE);
throw new PluginException(LinkStatus.ERROR_IP_BLOCKED, null, 10 * 60 * 1001l);
}
if (BRBEFORE.contains("Error happened when generating Download Link")) throw new PluginException(LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE, "Server error!", 10 * 60 * 1000l);
// Errorhandling for only-premium links
if (BRBEFORE.contains(" can download files up to ") || BRBEFORE.contains("Upgrade your account to download bigger files") || BRBEFORE.contains("This file reached max downloads") || BRBEFORE.contains(">Upgrade your account to download larger files")) {
String filesizelimit = new Regex(BRBEFORE, "You can download files up to(.*?)only").getMatch(0);
if (filesizelimit != null) {
filesizelimit = filesizelimit.trim();
logger.warning("As free user you can download files up to " + filesizelimit + " only");
throw new PluginException(LinkStatus.ERROR_FATAL, "Free users can only download files up to " + filesizelimit);
} else {
logger.warning("Only downloadable via premium");
throw new PluginException(LinkStatus.ERROR_FATAL, "Only downloadable via premium");
}
}
}
public void checkServerErrors() throws NumberFormatException, PluginException {
if (BRBEFORE.contains("No file")) throw new PluginException(LinkStatus.ERROR_FATAL, "Server error");
if (BRBEFORE.contains("File Not Found") || BRBEFORE.contains("<h1>404 Not Found</h1>")) {
logger.warning("Server says link offline, please recheck that!");
throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
}
}
private String decodeDownloadLink(String s) {
String decoded = null;
try {
Regex params = new Regex(s, "'(.*?[^\\\\])',(\\d+),(\\d+),'(.*?)'");
String p = params.getMatch(0).replaceAll("\\\\", "");
int a = Integer.parseInt(params.getMatch(1));
int c = Integer.parseInt(params.getMatch(2));
String[] k = params.getMatch(3).split("\\|");
while (c != 0) {
c--;
if (k[c].length() != 0) p = p.replaceAll("\\b" + Integer.toString(c, a) + "\\b", k[c]);
}
decoded = p;
} catch (Exception e) {
}
String finallink = null;
if (decoded != null) {
finallink = new Regex(decoded, "name=\"src\"value=\"(.*?)\"").getMatch(0);
if (finallink == null) finallink = new Regex(decoded, "type=\"video/divx\"src=\"(.*?)\"").getMatch(0);
}
return finallink;
}
public void doFree(DownloadLink downloadLink, boolean resumable, int maxchunks, boolean loggedIn) throws Exception, PluginException {
String dllink = null;
String passCode = null;
Form freeform = null;
Form[] allForms = br.getForms();
if (allForms != null && allForms.length != 0) {
for (Form singleForm : allForms) {
if (singleForm.containsHTML("download1")) {
freeform = singleForm;
break;
}
}
}
if (freeform != null) {
freeform.remove("method_premium");
br.submitForm(freeform);
doSomething();
}
checkErrors(downloadLink, false, passCode, loggedIn);
String md5hash = new Regex(BRBEFORE, "<b>MD5.*?</b>.*?nowrap>(.*?)<").getMatch(0);
if (md5hash != null) {
md5hash = md5hash.trim();
logger.info("Found md5hash: " + md5hash);
downloadLink.setMD5Hash(md5hash);
}
br.setFollowRedirects(false);
Form DLForm = br.getFormbyProperty("name", "F1");
if (DLForm == null) throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
// Ticket Time
String ttt = new Regex(BRBEFORE, "countdown\">.*?(\\d+).*?</span>").getMatch(0);
if (ttt == null) ttt = new Regex(BRBEFORE, "id=\"countdown_str\".*?<span id=\".*?\">.*?(\\d+).*?</span").getMatch(0);
if (ttt != null) {
logger.info("Waittime detected, waiting " + ttt + " seconds from now on...");
int tt = Integer.parseInt(ttt);
sleep(tt * 1001, downloadLink);
}
boolean password = false;
boolean recaptcha = false;
if (BRBEFORE.contains(PASSWORDTEXT0) || BRBEFORE.contains(PASSWORDTEXT1)) {
password = true;
logger.info("The downloadlink seems to be password protected.");
}
/* Captcha START */
if (BRBEFORE.contains(";background:#ccc;text-align")) {
logger.info("Detected captcha method \"plaintext captchas\" for this host");
// Captcha method by ManiacMansion
String[][] letters = new Regex(Encoding.htmlDecode(br.toString()), "<span style='position:absolute;padding-left:(\\d+)px;padding-top:\\d+px;'>(\\d)</span>").getMatches();
if (letters == null || letters.length == 0) {
logger.warning("plaintext captchahandling broken!");
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
SortedMap<Integer, String> capMap = new TreeMap<Integer, String>();
for (String[] letter : letters) {
capMap.put(Integer.parseInt(letter[0]), letter[1]);
}
StringBuilder code = new StringBuilder();
for (String value : capMap.values()) {
code.append(value);
}
DLForm.put("code", code.toString());
logger.info("Put captchacode " + code.toString() + " obtained by captcha metod \"plaintext captchas\" in the form.");
} else if (BRBEFORE.contains("/captchas/")) {
logger.info("Detected captcha method \"Standard captcha\" for this host");
String[] sitelinks = HTMLParser.getHttpLinks(br.toString(), null);
String captchaurl = null;
if (sitelinks == null || sitelinks.length == 0) {
logger.warning("Standard captcha captchahandling broken!");
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
for (String link : sitelinks) {
if (link.contains("/captchas/")) {
captchaurl = link;
break;
}
}
if (captchaurl == null) {
logger.warning("Standard captcha captchahandling broken!");
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
String code = getCaptchaCode(captchaurl, downloadLink);
DLForm.put("code", code);
logger.info("Put captchacode " + code + " obtained by captcha metod \"Standard captcha\" in the form.");
} else if (BRBEFORE.contains("api.recaptcha.net") || BRBEFORE.contains("google.com/recaptcha/api/")) {
// Some hosters also got commentfields with captchas, therefore is
// the !br.contains...check Exampleplugin:
// FileGigaCom
logger.info("Detected captcha method \"Re Captcha\" for this host");
PluginForHost recplug = JDUtilities.getPluginForHost("DirectHTTP");
jd.plugins.hoster.DirectHTTP.Recaptcha rc = ((DirectHTTP) recplug).getReCaptcha(br);
rc.parse();
rc.load();
File cf = rc.downloadCaptcha(getLocalCaptchaFile());
String c = getCaptchaCode(cf, downloadLink);
if (password) {
passCode = handlePassword(passCode, rc.getForm(), downloadLink);
}
recaptcha = true;
rc.setCode(c);
logger.info("Put captchacode " + c + " obtained by captcha metod \"Re Captcha\" in the form and submitted it.");
dllink = br.getRedirectLocation();
}
/* Captcha END */
// If the hoster uses Re Captcha the form has already been sent before
// here so here it's checked. Most hosters don't use Re Captcha so
// usually recaptcha is false
if (!recaptcha) {
if (password) {
passCode = handlePassword(passCode, DLForm, downloadLink);
}
dl = jd.plugins.BrowserAdapter.openDownload(br, downloadLink, DLForm, resumable, maxchunks);
logger.info("Submitted DLForm");
}
boolean error = false;
if (dllink == null) {
try {
if (dl.getConnection().getContentType().contains("html")) error = true;
} catch (Exception e) {
error = true;
}
}
if (error) {
br.followConnection();
logger.info("followed connection...");
doSomething();
checkErrors(downloadLink, true, passCode, loggedIn);
dllink = getDllink();
if (dllink == null) {
logger.warning("Final downloadlink (String is \"dllink\") regex didn't match!");
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
logger.info("Final downloadlink = " + dllink + " starting the download...");
dl = jd.plugins.BrowserAdapter.openDownload(br, downloadLink, dllink, resumable, maxchunks);
if (dl.getConnection().getContentType().contains("html")) {
logger.warning("The final dllink seems not to be a file!");
br.followConnection();
checkServerErrors();
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
}
if (passCode != null) {
downloadLink.setProperty("pass", passCode);
}
dl.startDownload();
}
// Removed fake messages which can kill the plugin
public void doSomething() throws NumberFormatException, PluginException {
BRBEFORE = br.toString();
ArrayList<String> someStuff = new ArrayList<String>();
ArrayList<String> regexStuff = new ArrayList<String>();
regexStuff.add("<!(--.*?--)>");
regexStuff.add("(display: none;\">.*?</div>)");
regexStuff.add("(visibility:hidden>.*?<)");
for (String aRegex : regexStuff) {
String lolz[] = br.getRegex(aRegex).getColumn(0);
if (lolz != null) {
for (String dingdang : lolz) {
someStuff.add(dingdang);
}
}
}
for (String fun : someStuff) {
BRBEFORE = BRBEFORE.replace(fun, "");
}
}
// XfileSharingProBasic Version 2.0.0.0
@Override
public String getAGBLink() {
return COOKIE_HOST + "/tos.html";
}
public String getDllink() {
String dllink = br.getRedirectLocation();
if (dllink == null) {
dllink = new Regex(BRBEFORE, "dotted #bbb;padding.*?<a href=\"(.*?)\"").getMatch(0);
if (dllink == null) {
dllink = new Regex(BRBEFORE, "This (direct link|download link) will be available for your IP.*?href=\"(http.*?)\"").getMatch(1);
if (dllink == null) {
dllink = new Regex(BRBEFORE, "Download: <a href=\"(.*?)\"").getMatch(0);
if (dllink == null) {
String crypted = br.getRegex("p}\\((.*?)\\.split\\('\\|'\\)").getMatch(0);
if (crypted != null) dllink = decodeDownloadLink(crypted);
}
}
}
}
return dllink;
}
@Override
public int getMaxSimultanFreeDownloadNum() {
return -1;
}
@Override
public void handleFree(DownloadLink downloadLink) throws Exception, PluginException {
requestFileInformation(downloadLink);
doFree(downloadLink, false, 1, false);
}
public String handlePassword(String passCode, Form pwform, DownloadLink thelink) throws IOException, PluginException {
if (thelink.getStringProperty("pass", null) == null) {
passCode = Plugin.getUserInput("Password?", thelink);
} else {
/* gespeicherten PassCode holen */
passCode = thelink.getStringProperty("pass", null);
}
pwform.put("password", passCode);
logger.info("Put password \"" + passCode + "\" entered by user in the DLForm.");
return passCode;
}
// do not add @Override here to keep 0.* compatibility
public boolean hasAutoCaptcha() {
return true;
}
// do not add @Override here to keep 0.* compatibility
public boolean hasCaptcha() {
return true;
}
@Override
public AvailableStatus requestFileInformation(DownloadLink link) throws IOException, PluginException {
this.setBrowserExclusive();
br.setFollowRedirects(false);
br.setCookie(COOKIE_HOST, "lang", "english");
br.getPage(link.getDownloadURL());
doSomething();
if (BRBEFORE.contains("No such file") || BRBEFORE.contains("No such user exist") || BRBEFORE.contains("File not found") || BRBEFORE.contains(">File Not Found<") || BRBEFORE.contains("This file is either removed due to copyright claim or is deleted by the uploader")) {
logger.warning("file is 99,99% offline, throwing \"file not found\" now...");
throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
}
String filename = new Regex(BRBEFORE, "You have requested.*?http://.*?[a-z0-9]{12}/(.*?)</font>").getMatch(0);
if (filename == null) {
filename = new Regex(BRBEFORE, "fname\"( type=\"hidden\")? value=\"(.*?)\"").getMatch(1);
if (filename == null) {
filename = new Regex(BRBEFORE, "<h2>Download File(.*?)</h2>").getMatch(0);
if (filename == null) {
filename = new Regex(BRBEFORE, "Filename:</b></td><td[ ]{0,2}>(.*?)</td>").getMatch(0);
if (filename == null) {
filename = new Regex(BRBEFORE, "Filename.*?nowrap.*?>(.*?)</td").getMatch(0);
if (filename == null) {
filename = new Regex(BRBEFORE, "File Name.*?nowrap>(.*?)</td").getMatch(0);
}
}
}
}
}
String filesize = new Regex(BRBEFORE, "\\(([0-9]+ bytes)\\)").getMatch(0);
if (filesize == null) {
filesize = new Regex(BRBEFORE, "<small>\\((.*?)\\)</small>").getMatch(0);
if (filesize == null) {
filesize = new Regex(BRBEFORE, "</font>[ ]+\\((.*?)\\)(.*?)</font>").getMatch(0);
}
}
if (filename == null || filename.equals("")) {
if (BRBEFORE.contains("You have reached the download-limit")) {
logger.warning("Waittime detected, please reconnect to make the linkchecker work!");
return AvailableStatus.UNCHECKABLE;
}
logger.warning("The filename equals null, throwing \"plugin defect\" now...");
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
}
filename = filename.replaceAll("(</b>|<b>|\\.html)", "");
link.setName(filename.trim());
if (filesize != null && !filesize.equals("")) {
logger.info("Filesize found, filesize = " + filesize);
link.setDownloadSize(SizeFormatter.getSize(filesize));
}
return AvailableStatus.TRUE;
}
@Override
public void reset() {
}
@Override
public void resetDownloadlink(DownloadLink link) {
}
}

View File

@ -43,7 +43,7 @@ import jd.utils.locale.JDL;
import org.appwork.utils.formatter.SizeFormatter;
import org.appwork.utils.formatter.TimeFormatter;
@HostPlugin(revision = "$Revision$", interfaceVersion = 2, names = { "upsto.re" }, urls = { "http://(www\\.)?upsto\\.re/(?!faq|privacy|terms|d/)[A-Za-z0-9]+" }, flags = { 2 })
@HostPlugin(revision = "$Revision$", interfaceVersion = 2, names = { "upsto.re" }, urls = { "http://(www\\.)?upsto\\.re/(?!faq|privacy|terms|d/|aff|login|account|dmca|imprint|message|panel|premium)[A-Za-z0-9]+" }, flags = { 2 })
public class UpstoRe extends PluginForHost {
public UpstoRe(PluginWrapper wrapper) {

View File

@ -497,10 +497,12 @@ public class VimeoCom extends PluginForHost {
downloadLink.setUrlDownload(url);
if (downloadLink.getStringProperty("Referer", null) != null) br.getHeaders().put("Referer", downloadLink.getStringProperty("Referer"));
br.getPage(downloadLink.getDownloadURL() + "?hd=1");
// For player.vimeo.com links
if (br.containsHTML("<title>Sorry</title>")) throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
final String clipID = new Regex(downloadLink.getDownloadURL(), "(\\d+)$").getMatch(0);
handlePW(downloadLink, br, "http://vimeo.com/" + clipID + "/password");
br.getPage(downloadLink.getDownloadURL() + "?hd=1");
if (br.containsHTML("Page not found")) { throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND); }
if (br.containsHTML("Page not found")) throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
if (br.containsHTML(">Private Video<")) { throw new PluginException(LinkStatus.ERROR_FATAL, "This is a private video. You have no permission to watch this video!"); }
final String signature = br.getRegex("\"signature\":\"([a-z0-9]+)\"").getMatch(0);
final String time = br.getRegex("\"timestamp\":(\\d+)").getMatch(0);