Add project files.
This commit is contained in:
60
YTManager/Tasks/FetchVideos.cs
Normal file
60
YTManager/Tasks/FetchVideos.cs
Normal file
@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Google.Apis.YouTube.v3;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace YTManager.Tasks
|
||||
{
|
||||
public class FetchVideos
|
||||
{
|
||||
public static void run()
|
||||
{
|
||||
Console.WriteLine("Startnig job ...");
|
||||
|
||||
// YT API access key
|
||||
var youtubeService = new YouTubeService(new Google.Apis.Services.BaseClientService.Initializer()
|
||||
{
|
||||
ApiKey = "AIzaSyCuIYkMc5SktlnXRXNaDf2ObX-fQvtWCnQ",
|
||||
ApplicationName = "testingapppp"
|
||||
});
|
||||
|
||||
// Get all the channels to update.
|
||||
var ops = new DbContextOptionsBuilder<MediaDB>();
|
||||
string constr = "Host=home.hak8or.com;Database=postgres;Username=postgres;Password=mysecretpassword";
|
||||
ops.UseNpgsql(constr);
|
||||
using (var dbcontext = new MediaDB(ops.Options)) {
|
||||
var channels = dbcontext.Channels.ToList();
|
||||
|
||||
// Get all the most recent videos for each channel.
|
||||
channels.ForEach(ch => {
|
||||
// Get channel videos from youtube.
|
||||
var query = youtubeService.Activities.List("snippet");
|
||||
query.ChannelId = ch.YTChannelID;
|
||||
var response = query.Execute();
|
||||
|
||||
// Get all videos which aren't already in the DB.
|
||||
var notindb = response.Items
|
||||
.Where(i => !dbcontext.Videos.Any(dbvid => dbvid.YTVideoID != i.Id))
|
||||
.Select(newvid =>
|
||||
new Models.Video {
|
||||
Title = newvid.Snippet.Title,
|
||||
Description = newvid.Snippet.Description,
|
||||
YTVideoID = newvid.Id,
|
||||
Uploaded = newvid.Snippet.PublishedAt.GetValueOrDefault(),
|
||||
AddedtoDB = DateTime.Now,
|
||||
Channel = ch,
|
||||
ThumbnailURL = newvid.Snippet.Thumbnails.Medium.Url
|
||||
}).ToList();
|
||||
|
||||
// Add all videos not already in the database over.
|
||||
notindb.ForEach(newvid => dbcontext.Videos.Add(newvid));
|
||||
|
||||
// And save since we are done.
|
||||
dbcontext.SaveChanges();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user