add support for affiliate
This commit is contained in:
parent
016c2fc549
commit
466865385e
|
@ -214,6 +214,11 @@ public class SoundcloudStreamExtractor extends StreamExtractor {
|
||||||
return new String[0];
|
return new String[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getAffiliateLinks() {
|
||||||
|
return new String[0];
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getErrorMessage() {
|
public String getErrorMessage() {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -43,6 +43,9 @@ public class ItagItem {
|
||||||
new ItagItem(139, AUDIO, M4A, 48),
|
new ItagItem(139, AUDIO, M4A, 48),
|
||||||
new ItagItem(140, AUDIO, M4A, 128),
|
new ItagItem(140, AUDIO, M4A, 128),
|
||||||
new ItagItem(141, AUDIO, M4A, 256),
|
new ItagItem(141, AUDIO, M4A, 256),
|
||||||
|
new ItagItem(249, AUDIO, OPUS, 50),
|
||||||
|
new ItagItem(250, AUDIO, OPUS, 70),
|
||||||
|
new ItagItem(160, AUDIO, OPUS, 160),
|
||||||
|
|
||||||
/// VIDEO ONLY ////////////////////////////////////////////
|
/// VIDEO ONLY ////////////////////////////////////////////
|
||||||
// ID Type Format Resolution FPS ///
|
// ID Type Format Resolution FPS ///
|
||||||
|
|
|
@ -196,7 +196,7 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
||||||
}
|
}
|
||||||
for(Element a : linkHolder.select("a")) {
|
for(Element a : linkHolder.select("a")) {
|
||||||
String link = a.attr("abs:href");
|
String link = a.attr("abs:href");
|
||||||
if(DonationLinkHelper.getServiceByLink(link) != DonationLinkHelper.DonationService.NO_DONATION) {
|
if(DonationLinkHelper.getDonatoinServiceByLink(link) != DonationLinkHelper.DonationService.NO_DONATION) {
|
||||||
links.add(link);
|
links.add(link);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -534,7 +534,7 @@ public class YoutubeStreamExtractor extends StreamExtractor {
|
||||||
try {
|
try {
|
||||||
ArrayList<String> donationLinks = new ArrayList<>();
|
ArrayList<String> donationLinks = new ArrayList<>();
|
||||||
for (String s : Parser.getLinksFromString(getDescription())) {
|
for (String s : Parser.getLinksFromString(getDescription())) {
|
||||||
if (DonationLinkHelper.getServiceByLink(s) != DonationLinkHelper.DonationService.NO_DONATION) {
|
if (DonationLinkHelper.getDonatoinServiceByLink(s) != DonationLinkHelper.DonationService.NO_DONATION) {
|
||||||
donationLinks.add(s);
|
donationLinks.add(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -546,6 +546,23 @@ public class YoutubeStreamExtractor extends StreamExtractor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getAffiliateLinks() throws ParsingException {
|
||||||
|
try {
|
||||||
|
ArrayList<String> donationLinks = new ArrayList<>();
|
||||||
|
for (String s : Parser.getLinksFromString(getDescription())) {
|
||||||
|
if (DonationLinkHelper.getAffiliateServiceByLink(s) != DonationLinkHelper.AffiliateService.NO_AFILIATE) {
|
||||||
|
donationLinks.add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String[] donlret = new String[donationLinks.size()];
|
||||||
|
donlret = donationLinks.toArray(donlret);
|
||||||
|
return donlret;
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new ParsingException("Could not get afiliate links", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*//////////////////////////////////////////////////////////////////////////
|
/*//////////////////////////////////////////////////////////////////////////
|
||||||
// Fetch page
|
// Fetch page
|
||||||
|
|
|
@ -142,6 +142,7 @@ public abstract class StreamExtractor extends Extractor {
|
||||||
public abstract StreamInfoItemsCollector getRelatedVideos() throws IOException, ExtractionException;
|
public abstract StreamInfoItemsCollector getRelatedVideos() throws IOException, ExtractionException;
|
||||||
|
|
||||||
public abstract String[] getDonationLinks() throws ExtractionException;
|
public abstract String[] getDonationLinks() throws ExtractionException;
|
||||||
|
public abstract String[] getAffiliateLinks() throws ExtractionException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Analyses the webpage's document and extracts any error message there might be.
|
* Analyses the webpage's document and extracts any error message there might be.
|
||||||
|
|
|
@ -242,6 +242,16 @@ public class StreamInfo extends Info {
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
streamInfo.addError(e);
|
streamInfo.addError(e);
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
streamInfo.setAffiliateLinks(extractor.getAffiliateLinks());
|
||||||
|
} catch (Exception e) {
|
||||||
|
streamInfo.addError(e);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
streamInfo.setDonationLinks(extractor.getDonationLinks());
|
||||||
|
} catch (Exception e) {
|
||||||
|
streamInfo.addError(e);
|
||||||
|
}
|
||||||
|
|
||||||
streamInfo.setRelatedStreams(ExtractorHelper.getRelatedVideosOrLogError(streamInfo, extractor));
|
streamInfo.setRelatedStreams(ExtractorHelper.getRelatedVideosOrLogError(streamInfo, extractor));
|
||||||
return streamInfo;
|
return streamInfo;
|
||||||
|
@ -274,6 +284,9 @@ public class StreamInfo extends Info {
|
||||||
private long startPosition = 0;
|
private long startPosition = 0;
|
||||||
private List<Subtitles> subtitles;
|
private List<Subtitles> subtitles;
|
||||||
|
|
||||||
|
private String[] donationLinks;
|
||||||
|
private String[] affiliateLinks;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the stream type
|
* Get the stream type
|
||||||
*
|
*
|
||||||
|
@ -466,4 +479,20 @@ public class StreamInfo extends Info {
|
||||||
public void setSubtitles(List<Subtitles> subtitles) {
|
public void setSubtitles(List<Subtitles> subtitles) {
|
||||||
this.subtitles = subtitles;
|
this.subtitles = subtitles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String[] getDonationLinks() {
|
||||||
|
return donationLinks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDonationLinks(String[] donationLinks) {
|
||||||
|
this.donationLinks = donationLinks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getAffiliateLinks() {
|
||||||
|
return affiliateLinks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAffiliateLinks(String[] affiliateLinks) {
|
||||||
|
this.affiliateLinks = affiliateLinks;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,11 +7,16 @@ public class DonationLinkHelper {
|
||||||
public enum DonationService {
|
public enum DonationService {
|
||||||
NO_DONATION,
|
NO_DONATION,
|
||||||
PATREON,
|
PATREON,
|
||||||
PAYPAL
|
PAYPAL,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum AffiliateService {
|
||||||
|
NO_AFILIATE,
|
||||||
|
AMAZON,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static DonationService getServiceByLink(String link) throws MalformedURLException {
|
public static DonationService getDonatoinServiceByLink(String link) throws MalformedURLException {
|
||||||
URL url = new URL(link);
|
URL url = new URL(link);
|
||||||
switch (url.getHost()) {
|
switch (url.getHost()) {
|
||||||
case "www.patreon.com":
|
case "www.patreon.com":
|
||||||
|
@ -27,5 +32,12 @@ public class DonationLinkHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static AffiliateService getAffiliateServiceByLink(String link) throws MalformedURLException {
|
||||||
|
URL url = new URL(link);
|
||||||
|
switch (url.getHost()) {
|
||||||
|
case "amzn.to": return AffiliateService.AMAZON;
|
||||||
|
default: return AffiliateService.NO_AFILIATE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,4 +49,10 @@ public class YoutubeStreamExtractorDonationTest {
|
||||||
assertTrue(String.valueOf(extractor.getDonationLinks().length),
|
assertTrue(String.valueOf(extractor.getDonationLinks().length),
|
||||||
extractor.getDonationLinks().length == 2);
|
extractor.getDonationLinks().length == 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAffiliateLinksTest() throws Exception {
|
||||||
|
assertTrue(String.valueOf(extractor.getAffiliateLinks().length),
|
||||||
|
extractor.getAffiliateLinks().length == 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue