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 channelId) { return "https://www.youtube.com/" + channelId; } @Override public String getId(String siteUrl) throws ParsingException { return Parser.matchGroup1(ID_PATTERN, siteUrl); } @Override public String cleanUrl(String siteUrl) throws ParsingException { return getUrl(getId(siteUrl)); } @Override public boolean acceptUrl(String videoUrl) { return (videoUrl.contains("youtube") || videoUrl.contains("youtu.be")) && (videoUrl.contains("/user/") || videoUrl.contains("/channel/")); } }