Awesome
angular-youtube-api-factory is an angularjs module with a youtube api factory.
Author: Jonathan Hornung (JohnnyTheTank)
Usage
-
Install via either bower, npm or downloaded files:
bower install --save angular-youtube-api-factory
npm install --save angular-youtube-api-factory
- download angular-youtube-api-factory.zip
-
Include dependencies in your HTML.
- When using bower:
<script src="bower_components/angular-youtube-api-factory/dist/angular-youtube-api-factory.min.js"></script>
- When using npm:
<script src="node_modules/angular-youtube-api-factory/dist/angular-youtube-api-factory.min.js"></script>
- when using downloaded files
<script src="angular-youtube-api-factory.min.js"></script>
-
Add
jtt_youtube
to your application's module dependenciesangular.module('app', ['jtt_youtube']);
-
Use the factory
youtubeFactory
angular.module('app') .controller('appController', function($scope, youtubeFactory){ youtubeFactory.getVideosFromSearchByParams({ q: 'fcbayern', key: '<YOUR_API_KEY>' }).then(function (data) { console.info('videos from search by query', data); }); });
factory methods
getVideo
//docs: https://developers.google.com/youtube/v3/docs/videos/list
youtubeFactory.getVideoById({
videoId: "<VIDEO_ID>",
part: "<YOUR_PART>", // (optional) default: 'id,snippet,contentDetails,statistics'
key: "<YOUR_API_KEY>",
}).then(function (_data) {
//on success
}).catch(function (_data) {
//on error
});
getVideos
//docs: https://developers.google.com/youtube/v3/docs/channels/list
youtubeFactory.getVideosFromChannelById({
channelId: "<CHANNEL_ID>", // converter: http://johnnythetank.github.io/youtube-channel-name-converter/
q: "<SEARCH_STRING>", // (optional) search string
location: "<SEARCH_LOCATION>", // (optional) The parameter value is a string that specifies latitude/longitude coordinates e.g. '37.42307,-122.08427'.
locationRadius: "<LOCATION_RADIUS>", // (optional) valid values e.g. '1500m', '5km', '10000ft', and '0.75mi' | default: '5000m'
order: "<ORDER_TYPE>", // (optional) valid values: 'date', 'rating', 'relevance', 'title', 'videoCount', 'viewCount' | default: 'date'
maxResults: "<MAX_RESULTS>", // (optional) valid values: 0-50 | default: 5
publishedAfter: "<PUBLISHED_AFTER>", // (optional) RFC 3339 formatted date-time value (1970-01-01T00:00:00Z)
publishedBefore: "<PUBLISHED_AFTER>", // (optional) RFC 3339 formatted date-time value (1970-01-01T00:00:00Z)
regionCode: "<REGION_CODE>", // (optional) ISO 3166-1 alpha-2 country code
relevanceLanguage: "<RELEVANCE_LANGUAGE>", // (optional) ISO 639-1 two-letter language code
safeSearch: "<SAFE_SEARCH>", // (optional) valid values: 'moderate','none','strict' | defaut: 'moderate'
maxResults: "<MAX_RESULTS>", // (optional) valid values: 0-50 | default: 5
videoEmbeddable: "<VIDEO_EMBEDDABLE>", // (optional) valid values: 'true', 'any' | default: 'true'
videoLicense: "<VIDEO_LICENSE>", // (optional) valid values: 'any','creativeCommon','youtube'
videoSyndicated: "<VIDEO_SYNDICATED>", // (optional) restrict a search to only videos that can be played outside youtube.com. valid values: 'any','true' | default: 'any'
fields: "<FIELDS>", // (optional) Selector specifying which fields to include in a partial response
nextPageToken: "<NEXT_PAGE_TOKEN>", // (optional) either 'nextPageToken' or 'prevPageToken'
prevPageToken: "<PREV_PAGE_TOKEN>", // (optional) either 'nextPageToken' or 'prevPageToken'
part: "<PART>", // (optional) default: 'id,snippet'
key: "<YOUR_API_KEY>",
}).then(function (_data) {
//on success
}).catch(function (_data) {
//on error
});
//docs: https://developers.google.com/youtube/v3/docs/search/list
youtubeFactory.getVideosFromSearchByParams({
q: "<SEARCH_STRING>", // (optional) search string
location: "<SEARCH_LOCATION>", // (optional) The parameter value is a string that specifies latitude/longitude coordinates e.g. '37.42307,-122.08427'.
locationRadius: "<LOCATION_RADIUS>", // (optional) valid values e.g. '1500m', '5km', '10000ft', and '0.75mi' | default: '5000m'
order: "<ORDER_TYPE>", // (optional) valid values: 'date', 'rating', 'relevance', 'title', 'videoCount', 'viewCount' | default: 'date'
maxResults: "<MAX_RESULTS>", // (optional) valid values: 0-50 | default: 5
publishedAfter: "<PUBLISHED_AFTER>", // (optional) RFC 3339 formatted date-time value (1970-01-01T00:00:00Z)
publishedBefore: "<PUBLISHED_AFTER>", // (optional) RFC 3339 formatted date-time value (1970-01-01T00:00:00Z)
regionCode: "<REGION_CODE>", // (optional) ISO 3166-1 alpha-2 country code
relevanceLanguage: "<RELEVANCE_LANGUAGE>", // (optional) ISO 639-1 two-letter language code
safeSearch: "<SAFE_SEARCH>", // (optional) valid values: 'moderate','none','strict' | defaut: 'moderate'
maxResults: "<MAX_RESULTS>", // (optional) valid values: 0-50 | default: 5
videoEmbeddable: "<VIDEO_EMBEDDABLE>", // (optional) valid values: 'true', 'any' | default: 'true'
videoLicense: "<VIDEO_LICENSE>", // (optional) valid values: 'any','creativeCommon','youtube'
videoSyndicated: "<VIDEO_SYNDICATED>", // (optional) restrict a search to only videos that can be played outside youtube.com. valid values: 'any','true' | default: 'any'
fields: "<FIELDS>", // (optional) Selector specifying which fields to include in a partial response
nextPageToken: "<NEXT_PAGE_TOKEN>", // (optional) either 'nextPageToken' or 'prevPageToken'
prevPageToken: "<PREV_PAGE_TOKEN>", // (optional) either 'nextPageToken' or 'prevPageToken'
part: "<PART>", // (optional) default: 'id,snippet'
key: "<YOUR_API_KEY>",
}).then(function (_data) {
//on success
}).catch(function (_data) {
//on error
});
//docs: https://developers.google.com/youtube/v3/docs/playlists/list
youtubeFactory.getVideosFromPlaylistById({
playlistId: "<PLAYLIST_ID>",
maxResults: "<MAX_RESULTS>", // (optional) valid values: 0-50 // default: 5
nextPageToken: "<NEXT_PAGE_TOKEN>", // (optional) either 'nextPageToken' or 'prevPageToken'
prevPageToken: "<PREV_PAGE_TOKEN>", // (optional) either 'nextPageToken' or 'prevPageToken'
part: "<PART>", // (optional) default: 'id,snippet'
key: "<YOUR_API_KEY>",
}).then(function (_data) {
//on success
}).catch(function (_data) {
//on error
});
getChannel
// docs: https://developers.google.com/youtube/v3/docs/search/list
youtubeFactory.getChannelById({
channelId: "<CHANNEL_ID>", // converter: http://johnnythetank.github.io/youtube-channel-name-converter/
nextPageToken: "<NEXT_PAGE_TOKEN>", // (optional) either 'nextPageToken' or 'prevPageToken'
prevPageToken: "<PREV_PAGE_TOKEN>", // (optional) either 'nextPageToken' or 'prevPageToken'
part: "<PART>", // (optional) default: 'id,snippet'
key: "<YOUR_API_KEY>",
}).then(function (_data) {
//on success
}).catch(function (_data) {
//on error
});
Youtube Data JSON API
- Docs: https://developers.google.com/youtube/v3/docs/
- API Explorer: https://developers.google.com/apis-explorer/#p/youtube/v3/
- Youtube Username to Channel ID Converter: http://johnnythetank.github.io/youtube-channel-name-converter/
More angular-api-factories
bandsintown - dailymotion - facebook - flickr - footballdata - github - openweathermap - tumblr - vimeo - wikipedia - youtube
License
MIT