Skip to content

Commit 92381d8

Browse files
author
updating-bot
committed
mirroring bot - 2024/10/26
1 parent 625d280 commit 92381d8

28 files changed

+974
-282
lines changed

svn_trunk/src/jd/plugins/AccountInfo.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,12 +180,8 @@ public boolean isExpired() {
180180
return expired;
181181
}
182182

183-
public void setAccountBalance(final long parseInt) {
184-
this.account_accountBalance = Math.max(0, parseInt);
185-
}
186-
187-
public void setAccountBalance(final String string) {
188-
this.setAccountBalance((long) (Double.parseDouble(string) * 100));
183+
public void setAccountBalance(final long num) {
184+
this.account_accountBalance = Math.max(0, num);
189185
}
190186

191187
public void setExpired(final boolean b) {

svn_trunk/src/jd/plugins/MultiHostHostData.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,19 @@ public void setDomains(List<String> domains) {
4545
this.domains = domains;
4646
}
4747

48-
public Boolean getIsUnlimitedTraffic() {
48+
public Boolean isUnlimitedTraffic() {
4949
return isUnlimitedTraffic;
5050
}
5151

52-
public void setIsUnlimitedTraffic(Boolean isUnlimitedTraffic) {
52+
public void setUnlimitedTraffic(Boolean isUnlimitedTraffic) {
5353
this.isUnlimitedTraffic = isUnlimitedTraffic;
5454
}
5555

56-
public Boolean getIsUnlimitedLinks() {
56+
public Boolean isUnlimitedLinks() {
5757
return isUnlimitedLinks;
5858
}
5959

60-
public void setIsUnlimitedLinks(Boolean isUnlimitedLinks) {
60+
public void setUnlimitedLinks(Boolean isUnlimitedLinks) {
6161
this.isUnlimitedLinks = isUnlimitedLinks;
6262
}
6363

@@ -157,12 +157,20 @@ public void setUnavailableUntilTimestamp(long unavailableUntilTimestamp) {
157157
this.unavailableUntilTimestamp = unavailableUntilTimestamp;
158158
}
159159

160+
public static List<MultiHostHostData> createFromMultiHostHostList(final List<MultiHostHost> sourcelist) {
161+
final List<MultiHostHostData> ret = new ArrayList<MultiHostHostData>();
162+
for (final MultiHostHost mhost : sourcelist) {
163+
ret.add(createFromMultiHostHost(mhost));
164+
}
165+
return ret;
166+
}
167+
160168
public static MultiHostHostData createFromMultiHostHost(MultiHostHost source) {
161169
MultiHostHostData hostData = new MultiHostHostData();
162170
hostData.setName(source.getName());
163171
hostData.setDomains(source.getDomains());
164-
hostData.setIsUnlimitedTraffic(source.isUnlimitedTraffic());
165-
hostData.setIsUnlimitedLinks(source.isUnlimitedLinks());
172+
hostData.setUnlimitedTraffic(source.isUnlimitedTraffic());
173+
hostData.setUnlimitedLinks(source.isUnlimitedLinks());
166174
hostData.setLinksLeft(source.getLinksLeft());
167175
hostData.setLinksMax(source.getLinksMax());
168176
hostData.setTrafficLeft(source.getTrafficLeft());
@@ -187,8 +195,8 @@ public MultiHostHost toMultiHostHost() {
187195
host.setLinksMax(this.getLinksMax());
188196
host.setTrafficLeft(this.getTrafficLeft());
189197
host.setTrafficMax(this.getTrafficMax());
190-
host.setUnlimitedTraffic(this.getIsUnlimitedTraffic());
191-
host.setUnlimitedLinks(this.getIsUnlimitedLinks());
198+
host.setUnlimitedTraffic(this.isUnlimitedTraffic());
199+
host.setUnlimitedLinks(this.isUnlimitedLinks());
192200
host.setTrafficCalculationFactorPercent(this.getTrafficCalculationFactorPercent());
193201
host.setMaxChunks(this.getMaxChunks());
194202
host.setMaxDownloads(this.getMaxDownloads());

svn_trunk/src/jd/plugins/PluginForHost.java

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,9 @@
153153
import org.jdownloader.plugins.SleepPluginProgress;
154154
import org.jdownloader.plugins.UserIOProgress;
155155
import org.jdownloader.plugins.WaitForAccountTrafficSkipReason;
156+
import org.jdownloader.plugins.WaitForAccountTrafficSkipReasonMultihostLinksRequired;
157+
import org.jdownloader.plugins.WaitForAccountTrafficSkipReasonMultihostTrafficRequired;
158+
import org.jdownloader.plugins.WaitingSkipReasonMultihostHostUnavailable;
156159
import org.jdownloader.plugins.accounts.AccountBuilderInterface;
157160
import org.jdownloader.plugins.config.AccountConfigInterface;
158161
import org.jdownloader.plugins.config.AccountJsonConfig;
@@ -1174,31 +1177,41 @@ public boolean enoughTrafficFor(final DownloadLink link, final Account account)
11741177
return false;
11751178
}
11761179
final MultihosterHostStatus status = mhost.getStatus();
1177-
if (status != MultihosterHostStatus.WORKING && status != MultihosterHostStatus.WORKING_UNSTABLE) {
1178-
/* Download of that host is currently not possible. */
1180+
if (mhost.getUnavailableTimeMillis() > 0) {
1181+
throw new ConditionalSkipReasonException(new WaitingSkipReasonMultihostHostUnavailable(account, link.getHost(), mhost.getUnavailableStatusText(), mhost.getUnavailableUntilTimestamp()));
1182+
} else if (status != MultihosterHostStatus.WORKING && status != MultihosterHostStatus.WORKING_UNSTABLE) {
1183+
/* Download of that host is permanently not possible. */
11791184
return false;
11801185
} else if (!mhost.isUnlimitedLinks() && mhost.getLinksLeft() <= 0) {
11811186
/* Max limits link is reached -> Cannot download */
1182-
return false;
1187+
if (ai.isTrafficRefill()) {
1188+
throw new ConditionalSkipReasonException(new WaitForAccountTrafficSkipReasonMultihostLinksRequired(account, link.getHost(), mhost.getLinksMax()));
1189+
} else {
1190+
return false;
1191+
}
11831192
}
11841193
if (!mhost.isUnlimitedTraffic()) {
11851194
/* Traffic limit exists -> Check if enough traffic is left. */
11861195
final long host_TrafficLeft = Math.max(0, mhost.getTrafficLeft());
11871196
/* In some cases, individual hosts can have different traffic calculation values than 100%. */
11881197
trafficNeeded = (trafficNeeded * mhost.getTrafficCalculationFactorPercent()) / 100;
1189-
if (host_TrafficLeft < trafficNeeded) {
1198+
if (trafficNeeded > host_TrafficLeft) {
11901199
/* Not enough individual file host traffic */
1191-
// TODO: Implement ConditionalSkipReasonException handling
1192-
return false;
1200+
if (ai.isTrafficRefill()) {
1201+
final long howMuchTrafficIsMissing = trafficNeeded - host_TrafficLeft;
1202+
throw new ConditionalSkipReasonException(new WaitForAccountTrafficSkipReasonMultihostTrafficRequired(account, link.getHost(), howMuchTrafficIsMissing));
1203+
} else {
1204+
return false;
1205+
}
11931206
}
11941207
}
11951208
}
11961209
if (!ai.isUnlimitedTraffic() && !ai.isSpecialTraffic()) {
11971210
/* Check if enough traffic is left */
1198-
if (trafficLeft < trafficNeeded) {
1211+
if (trafficNeeded > trafficLeft) {
11991212
if (ai.isTrafficRefill()) {
1200-
final long howMuchTrafficWeNeed = trafficNeeded - trafficLeft;
1201-
throw new ConditionalSkipReasonException(new WaitForAccountTrafficSkipReason(account, howMuchTrafficWeNeed));
1213+
final long howMuchTrafficIsMissing = trafficNeeded - trafficLeft;
1214+
throw new ConditionalSkipReasonException(new WaitForAccountTrafficSkipReason(account, howMuchTrafficIsMissing));
12021215
} else {
12031216
return false;
12041217
}

svn_trunk/src/jd/plugins/decrypter/FilesFmFolder.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import jd.PluginWrapper;
2323
import jd.controlling.ProgressController;
24+
import jd.http.Browser;
2425
import jd.http.Request;
2526
import jd.nutils.encoding.Encoding;
2627
import jd.parser.Regex;
@@ -34,18 +35,30 @@
3435
import jd.plugins.PluginForDecrypt;
3536
import jd.plugins.PluginForHost;
3637

37-
@DecrypterPlugin(revision = "$Revision: 48599 $", interfaceVersion = 3, names = { "files.fm" }, urls = { "https?://(?:\\w+\\.)?files\\.fm/u/[a-z0-9]+" })
38+
@DecrypterPlugin(revision = "$Revision: 50034 $", interfaceVersion = 3, names = { "files.fm" }, urls = { "https?://(?:\\w+\\.)?files\\.fm/u/[a-z0-9]+" })
3839
public class FilesFmFolder extends PluginForDecrypt {
3940
public FilesFmFolder(PluginWrapper wrapper) {
4041
super(wrapper);
4142
}
4243

44+
@Override
45+
public Browser createNewBrowserInstance() {
46+
final Browser br = super.createNewBrowserInstance();
47+
prepBR(br);
48+
return br;
49+
}
50+
51+
public static void prepBR(final Browser br) {
52+
br.setFollowRedirects(true);
53+
/* Their html responses can be pretty big. */
54+
br.setLoadLimit(br.getLoadLimit() * 10);
55+
}
56+
4357
public ArrayList<DownloadLink> decryptIt(final CryptedLink param, ProgressController progress) throws Exception {
4458
final ArrayList<DownloadLink> ret = new ArrayList<DownloadLink>();
4559
final PluginForHost hostplg = this.getNewPluginForHostInstance(this.getHost());
4660
/* 2016-03-10: They enforce https */
4761
final String folderID = new Regex(param.getCryptedUrl(), "([a-z0-9]+)$").getMatch(0);
48-
br.setFollowRedirects(true);
4962
br.getPage("https://files.fm/u/" + folderID + "?view=gallery&items_only=true&index=0&count=10000");
5063
if (br.getHttpConnection().getResponseCode() == 404 || br.containsHTML(">This link does not contain any files|These files are deleted by the owner<|The expiry date of these files is over<|class=\"deleted_wrapper\"")) {
5164
throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);

svn_trunk/src/jd/plugins/decrypter/LusciousNetAlbum.java

Lines changed: 56 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,10 @@
3737
import jd.plugins.Plugin;
3838
import jd.plugins.PluginException;
3939
import jd.plugins.PluginForDecrypt;
40+
import jd.plugins.PluginForHost;
41+
import jd.plugins.hoster.DirectHTTP;
4042

41-
@DecrypterPlugin(revision = "$Revision: 50028 $", interfaceVersion = 3, names = { "luscious.net" }, urls = { "https?://(?:(?:www|members)\\.)?luscious\\.net/albums/([a-z0-9\\-_]+)_(\\d+)/?" })
43+
@DecrypterPlugin(revision = "$Revision: 50034 $", interfaceVersion = 3, names = { "luscious.net" }, urls = { "https?://(?:(?:www|members)\\.)?luscious\\.net/albums/([a-z0-9\\-_]+)_(\\d+)/?" })
4244
public class LusciousNetAlbum extends PluginForDecrypt {
4345
public LusciousNetAlbum(PluginWrapper wrapper) {
4446
super(wrapper);
@@ -116,23 +118,63 @@ public ArrayList<DownloadLink> decryptIt(final CryptedLink param, ProgressContro
116118
if (br.getHttpConnection().getResponseCode() == 404) {
117119
throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
118120
}
121+
final String title = albumSlug.replace("-", " ");
122+
String[] thumbnails = br.getRegex("src=\"(https?://[^\"]+)\" class=\"\" loading=\"lazy\"").getColumn(0);
123+
if (thumbnails == null || thumbnails.length == 0) {
124+
thumbnails = br.getRegex("alt=\"\\d+\" src=\"(https?://[^\"]+)\"").getColumn(0);
125+
}
126+
final FilePackage fpFullsize = FilePackage.getInstance();
127+
fpFullsize.setName(title);
128+
final FilePackage fpThumbnails = FilePackage.getInstance();
129+
fpThumbnails.setName(title + " - thumbnails");
130+
for (final String urlThumbnail : thumbnails) {
131+
/* Change thumbnail URL to a full size URL */
132+
final String fullsizeUrl = urlThumbnail.replaceFirst("\\.315x0\\.jpg$", ".640x0.jpg");
133+
/* This link may not always be available thus we will also add the original thumbnail link later. */
134+
final DownloadLink directFullsize = this.createDownloadlink(DirectHTTP.createURLForThisPlugin(urlThumbnail));
135+
/* We know that this link is online. */
136+
directFullsize.setAvailable(true);
137+
directFullsize._setFilePackage(fpFullsize);
138+
ret.add(directFullsize);
139+
if (fullsizeUrl.equals(urlThumbnail)) {
140+
/* Both links are the same -> No reason to add thumbnail separately. */
141+
continue;
142+
}
143+
final DownloadLink directThumbnail = this.createDownloadlink(DirectHTTP.createURLForThisPlugin(urlThumbnail));
144+
/* We know that this link is online. */
145+
directThumbnail.setAvailable(true);
146+
directThumbnail._setFilePackage(fpThumbnails);
147+
ret.add(directThumbnail);
148+
}
119149
final String redirectURL = br.getRegex("\"(/download/r/\\d+/\\d+/?)\"").getMatch(0);
120-
if (redirectURL == null) {
121-
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
150+
if (redirectURL != null) {
151+
final Browser brc = br.cloneBrowser();
152+
brc.setFollowRedirects(false);
153+
brc.getPage(redirectURL);
154+
/* Typically redirects to external file hoster 9cloud.us. */
155+
final String redirect = brc.getRedirectLocation();
156+
if (redirect == null) {
157+
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
158+
}
159+
final PluginForHost plg = this.getNewPluginForHostInstance("9cloud.us");
160+
final DownloadLink link = this.createDownloadlink(redirect);
161+
if (plg.canHandle(redirect)) {
162+
link.setHost(plg.getHost());
163+
link.setDefaultPlugin(plg);
164+
/**
165+
* For 9cloud.us we cannot find any filenames as long as any free download limit is reached which is often the case.
166+
* </br>
167+
* To counter that, we'll just set a filename here including the available status as we know that that file is online.
168+
*/
169+
link.setName(title + ".zip");
170+
link.setAvailable(true);
171+
}
172+
link._setFilePackage(fpFullsize);
173+
ret.add(link);
122174
}
123-
final Browser brc = br.cloneBrowser();
124-
brc.setFollowRedirects(false);
125-
brc.getPage(redirectURL);
126-
/* Typically redirects to external file hoster 9cloud.us. */
127-
final String redirect = brc.getRedirectLocation();
128-
if (redirect == null) {
175+
if (ret.isEmpty()) {
129176
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
130177
}
131-
final DownloadLink link = this.createDownloadlink(redirect);
132-
/* Set temporary filename */
133-
link.setName(albumSlug + ".zip");
134-
// link.setAvailable(true);
135-
ret.add(link);
136178
}
137179
return ret;
138180
}

svn_trunk/src/jd/plugins/decrypter/MegaDpUaFolder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import jd.plugins.hoster.MegaDpUa;
3939
import jd.plugins.hoster.YoutubeDashV2;
4040

41-
@DecrypterPlugin(revision = "$Revision: 47516 $", interfaceVersion = 3, names = {}, urls = {})
41+
@DecrypterPlugin(revision = "$Revision: 50033 $", interfaceVersion = 3, names = {}, urls = {})
4242
@PluginDependencies(dependencies = { MegaDpUa.class })
4343
public class MegaDpUaFolder extends PluginForDecrypt {
4444
public MegaDpUaFolder(PluginWrapper wrapper) {
@@ -78,7 +78,7 @@ public static String[] buildAnnotationUrls(final List<String[]> pluginDomains) {
7878
public ArrayList<DownloadLink> decryptIt(final CryptedLink param, ProgressController progress) throws Exception {
7979
final ArrayList<DownloadLink> ret = new ArrayList<DownloadLink>();
8080
final Regex video = new Regex(param.getCryptedUrl(), TYPE_VIDEO);
81-
if (video.matches()) {
81+
if (video.patternFind()) {
8282
final String videoID = video.getMatch(0);
8383
ret.add(this.createDownloadlink(YoutubeDashV2.generateContentURL(videoID)));
8484
} else {

svn_trunk/src/jd/plugins/hoster/File4GoCom.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import jd.plugins.LinkStatus;
3939
import jd.plugins.PluginException;
4040

41-
@HostPlugin(revision = "$Revision: 50028 $", interfaceVersion = 3, names = { "file4go.net" }, urls = { "https?://(?:www\\.)?file4go\\.(?:net|com)/[^/]+/([a-zA-Z0-9_=]+)" })
41+
@HostPlugin(revision = "$Revision: 50033 $", interfaceVersion = 3, names = { "file4go.net" }, urls = { "https?://(?:www\\.)?file4go\\.(?:net|com)/[^/]+/([a-zA-Z0-9_=]+)" })
4242
public class File4GoCom extends antiDDoSForHost {
4343
public File4GoCom(PluginWrapper wrapper) {
4444
super(wrapper);
@@ -88,6 +88,7 @@ public AvailableStatus requestFileInformation(final DownloadLink link) throws Ex
8888
}
8989
/* Fix file extension */
9090
weakFilename = weakFilename.replaceFirst("-mp4$", ".mp4");
91+
weakFilename = this.correctOrApplyFileNameExtension(weakFilename, ".mp4", null);
9192
link.setName(weakFilename);
9293
}
9394
br.setCookie(getHost(), "animesonline", "1");
@@ -107,9 +108,9 @@ public AvailableStatus requestFileInformation(final DownloadLink link) throws Ex
107108
if (filename == null) {
108109
filename = br.getRegex("<div id=\"titulo_a\">\\s*(.*?)\\s*</div>").getMatch(0);
109110
}
110-
String filesize = br.getRegex("(?i)>\\s*Tamanho\\s*:\\s*</b>\\s*(.*?)\\s*</span>").getMatch(0);
111+
String filesize = br.getRegex(">\\s*Tamanho\\s*:\\s*</b>\\s*(.*?)\\s*</span>").getMatch(0);
111112
if (filesize == null) {
112-
filesize = br.getRegex("(?i)<b>File size\\s*:\\s*</b>\\s*([^<>\"]+)\\s*</").getMatch(0);
113+
filesize = br.getRegex("<b>File size\\s*:\\s*</b>\\s*([^<>\"]+)\\s*</").getMatch(0);
113114
}
114115
if (filename == null) {
115116
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
@@ -143,7 +144,7 @@ public void handleFree(final DownloadLink link) throws Exception, PluginExceptio
143144
throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
144145
}
145146
submitForm(form);
146-
if (br.containsHTML("(?i)REMOVED DMCA\\!")) {
147+
if (br.containsHTML("REMOVED DMCA\\!")) {
147148
/* 2023-01-24 */
148149
throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
149150
}
@@ -267,7 +268,7 @@ public AccountInfo fetchAccountInfo(final Account account) throws Exception {
267268
final AccountInfo ai = new AccountInfo();
268269
login(account, true);
269270
ai.setUnlimitedTraffic();
270-
final String expire = br.getRegex("(?i)>\\s*Premium Stop: (\\d{4}/\\d{2}/\\d{2} \\d{2}:\\d{2}:\\d{2}) </b>").getMatch(0);
271+
final String expire = br.getRegex(">\\s*Premium Stop: (\\d{4}/\\d{2}/\\d{2} \\d{2}:\\d{2}:\\d{2}) </b>").getMatch(0);
271272
if (expire == null) {
272273
final String lang = System.getProperty("user.language");
273274
if ("de".equalsIgnoreCase(lang)) {
@@ -302,9 +303,9 @@ public void handlePremium(final DownloadLink link, final Account account) throws
302303
}
303304

304305
private String getDllink(final Browser br) {
305-
String dllink = br.getRegex("(?i)href=\"(https?://[^\"]+)\">\\s*Download").getMatch(0);
306+
String dllink = br.getRegex("href=\"(https?://[^\"]+)\">\\s*Download").getMatch(0);
306307
if (dllink == null) {
307-
dllink = br.getRegex("(?i)class\\s*=\\s*\"novobotao download\"[^>]*href\\s*=\\s*\"([^\"]+)\">").getMatch(0);
308+
dllink = br.getRegex("class\\s*=\\s*\"novobotao download\"[^>]*href\\s*=\\s*\"([^\"]+)\">").getMatch(0);
308309
}
309310
return dllink;
310311
}

0 commit comments

Comments
 (0)