package org.schabi.newpipe.extractor.services.youtube; import org.schabi.newpipe.extractor.UrlIdHandler; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.utils.Parser; /* * Created by Christian Schabesberger on 25.07.16. * * Copyright (C) Christian Schabesberger 2016 * YoutubeChannelUrlIdHandler.java is part of NewPipe. * * NewPipe 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. * * NewPipe 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 NewPipe. If not, see . */ public class YoutubeChannelUrlIdHandler implements UrlIdHandler { private static final YoutubeChannelUrlIdHandler instance = new YoutubeChannelUrlIdHandler(); private static final String ID_PATTERN = "/(user/[A-Za-z0-9_-]*|channel/[A-Za-z0-9_-]*)"; public static YoutubeChannelUrlIdHandler getInstance() { return instance; } @Override public String getUrl(String id) { return "https://www.youtube.com/" + id; } @Override public String getId(String url) throws ParsingException { return Parser.matchGroup1(ID_PATTERN, url); } @Override public String cleanUrl(String complexUrl) throws ParsingException { return getUrl(getId(complexUrl)); } @Override public boolean acceptUrl(String url) { return (url.contains("youtube") || url.contains("youtu.be") || url.contains("hooktube.com")) && (url.contains("/user/") || url.contains("/channel/")); } }