updates
parent
9f2f0de5c0
commit
949bfcf38f
|
|
@ -77,11 +77,11 @@ public class authToken
|
|||
user_perm = GlobalClass.appsettings("Admin:perm");
|
||||
user_isLogin = true;
|
||||
|
||||
int intMin = 20;
|
||||
int intMin = 180;
|
||||
|
||||
if (tokenItem.token_isremember == "Y")
|
||||
{
|
||||
intMin = 60 * 24 * 7;
|
||||
intMin = 60 * 24 * 14;
|
||||
}
|
||||
|
||||
dbConn.sqlConnection().Execute("update token set token_expireddate = @token_expireddate " +
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public class youtubeUpdateClass : IHostedService, IDisposable
|
|||
{
|
||||
_timer = new Timer(DoWork, null,
|
||||
TimeSpan.Zero,
|
||||
TimeSpan.FromSeconds(15 * 60));
|
||||
TimeSpan.FromSeconds(60 * 60));
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
|
|
@ -104,113 +104,139 @@ public class youtubeUpdateClass : IHostedService, IDisposable
|
|||
}
|
||||
}
|
||||
|
||||
dynamic youtubePlaylistObj;
|
||||
youtubePlaylistObj = JsonConvert.DeserializeObject(youtubePlaylistJson);
|
||||
string videoIdList = "";
|
||||
|
||||
|
||||
foreach (var item in youtubePlaylistObj.items) {
|
||||
videoIdList += item.snippet.resourceId.videoId + ",";
|
||||
}
|
||||
|
||||
videoIdList = videoIdList.TrimEnd(',');
|
||||
|
||||
if (videoIdList == "")
|
||||
try
|
||||
{
|
||||
updateLog failedLog = new updateLog();
|
||||
failedLog.updateLog_text = "此Youtube帳號 " + mediaItem.kolMedia_accountName + "(" + mediaItem.kolMedia_displayName + ") Google Youtube Data Api 的Video數量 回傳0個!";
|
||||
failedLog.updateLog_kolMedia_uid = mediaItem.kolMedia_uid;
|
||||
failedLog.updateLog_kolMedia_accountName = mediaItem.kolMedia_accountName;
|
||||
failedLog.updateLog_kolMedia_displayName = mediaItem.kolMedia_displayName;
|
||||
failedLog.updateLog_kol_uid = mediaItem.kol_uid;
|
||||
failedLog.updateLog_type = "YouTube";
|
||||
failedLog.updateLog_result = "failed";
|
||||
dynamic youtubePlaylistObj;
|
||||
youtubePlaylistObj = JsonConvert.DeserializeObject(youtubePlaylistJson);
|
||||
string videoIdList = "";
|
||||
|
||||
conn.Insert(failedLog);
|
||||
}
|
||||
else
|
||||
{
|
||||
string youtubeVideoApi = "https://www.googleapis.com/youtube/v3/videos?part=statistics,snippet&key=" + GlobalClass.appsettings("GoogleKey") + "&id=" + videoIdList;
|
||||
string youtubeVideoJson = "";
|
||||
|
||||
using (var httpClient = new HttpClient())
|
||||
foreach (var item in youtubePlaylistObj.items)
|
||||
{
|
||||
using (var response = await httpClient.GetAsync(youtubeVideoApi))
|
||||
{
|
||||
youtubeVideoJson = await response.Content.ReadAsStringAsync();
|
||||
}
|
||||
videoIdList += item.snippet.resourceId.videoId + ",";
|
||||
}
|
||||
|
||||
dynamic youtubeVideoObj;
|
||||
youtubeVideoObj = JsonConvert.DeserializeObject(youtubeVideoJson);
|
||||
int totalViewNum = 0;
|
||||
int videosNum = 0;
|
||||
List<youtubeDetail> youtubeDetailList = new List<youtubeDetail>();
|
||||
videoIdList = videoIdList.TrimEnd(',');
|
||||
|
||||
foreach (var item in youtubeVideoObj.items) {
|
||||
|
||||
if (videoIdList == "")
|
||||
{
|
||||
updateLog failedLog = new updateLog();
|
||||
failedLog.updateLog_text = "此Youtube帳號 " + mediaItem.kolMedia_accountName + "(" + mediaItem.kolMedia_displayName + ") Google Youtube Data Api 的Video數量 回傳0個!";
|
||||
failedLog.updateLog_kolMedia_uid = mediaItem.kolMedia_uid;
|
||||
failedLog.updateLog_kolMedia_accountName = mediaItem.kolMedia_accountName;
|
||||
failedLog.updateLog_kolMedia_displayName = mediaItem.kolMedia_displayName;
|
||||
failedLog.updateLog_kol_uid = mediaItem.kol_uid;
|
||||
failedLog.updateLog_type = "YouTube";
|
||||
failedLog.updateLog_result = "failed";
|
||||
|
||||
try {
|
||||
totalViewNum += (int)item.statistics.viewCount;
|
||||
videosNum++;
|
||||
youtubeDetail objDetail = new youtubeDetail();
|
||||
objDetail.youtube_uid = youtube_uid;
|
||||
objDetail.youtubeDetail_uid = "ytd_" + GlobalClass.CreateRandomCode(16);
|
||||
objDetail.youtubeDetail_title = item.snippet.title;
|
||||
objDetail.youtubeDetail_description = item.snippet.description;
|
||||
conn.Insert(failedLog);
|
||||
}
|
||||
else
|
||||
{
|
||||
string youtubeVideoApi = "https://www.googleapis.com/youtube/v3/videos?part=statistics,snippet&key=" + GlobalClass.appsettings("GoogleKey") + "&id=" + videoIdList;
|
||||
string youtubeVideoJson = "";
|
||||
|
||||
string publishedAt = item.snippet.publishedAt;
|
||||
|
||||
var published = DateTime.Parse(publishedAt, null, DateTimeStyles.None);
|
||||
|
||||
objDetail.youtubeDetail_publishedAt = published;
|
||||
objDetail.youtubeDetail_commentCount = (int)item.statistics.commentCount;
|
||||
objDetail.youtubeDetail_viewCount = (int)item.statistics.viewCount;
|
||||
objDetail.youtubeDetail_likeCount = (int)item.statistics.likeCount;
|
||||
objDetail.youtubeDetail_favoriteCount = (int)item.statistics.favoriteCount;
|
||||
|
||||
try {
|
||||
objDetail.youtubeDetail_thumbnails = item.snippet.thumbnails.maxres.url;
|
||||
using (var httpClient = new HttpClient())
|
||||
{
|
||||
using (var response = await httpClient.GetAsync(youtubeVideoApi))
|
||||
{
|
||||
youtubeVideoJson = await response.Content.ReadAsStringAsync();
|
||||
}
|
||||
catch { objDetail.youtubeDetail_thumbnails = ""; }
|
||||
|
||||
|
||||
|
||||
objDetail.youtubeDetail_videoId = item.id;
|
||||
objDetail.youtubeDetail_json = JsonConvert.SerializeObject(item);
|
||||
|
||||
youtubeDetailList.Add(objDetail);
|
||||
} catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
dynamic youtubeVideoObj;
|
||||
youtubeVideoObj = JsonConvert.DeserializeObject(youtubeVideoJson);
|
||||
int totalViewNum = 0;
|
||||
int videosNum = 0;
|
||||
List<youtubeDetail> youtubeDetailList = new List<youtubeDetail>();
|
||||
|
||||
foreach (var item in youtubeVideoObj.items)
|
||||
{
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
totalViewNum += (int)item.statistics.viewCount;
|
||||
videosNum++;
|
||||
youtubeDetail objDetail = new youtubeDetail();
|
||||
objDetail.youtube_uid = youtube_uid;
|
||||
objDetail.youtubeDetail_uid = "ytd_" + GlobalClass.CreateRandomCode(16);
|
||||
objDetail.youtubeDetail_title = item.snippet.title;
|
||||
objDetail.youtubeDetail_description = item.snippet.description;
|
||||
|
||||
string publishedAt = item.snippet.publishedAt;
|
||||
|
||||
var published = DateTime.Parse(publishedAt, null, DateTimeStyles.None);
|
||||
|
||||
objDetail.youtubeDetail_publishedAt = published;
|
||||
objDetail.youtubeDetail_commentCount = (int)item.statistics.commentCount;
|
||||
objDetail.youtubeDetail_viewCount = (int)item.statistics.viewCount;
|
||||
objDetail.youtubeDetail_likeCount = (int)item.statistics.likeCount;
|
||||
objDetail.youtubeDetail_favoriteCount = (int)item.statistics.favoriteCount;
|
||||
|
||||
try
|
||||
{
|
||||
objDetail.youtubeDetail_thumbnails = item.snippet.thumbnails.maxres.url;
|
||||
}
|
||||
catch { objDetail.youtubeDetail_thumbnails = ""; }
|
||||
|
||||
|
||||
|
||||
objDetail.youtubeDetail_videoId = item.id;
|
||||
objDetail.youtubeDetail_json = JsonConvert.SerializeObject(item);
|
||||
|
||||
youtubeDetailList.Add(objDetail);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
double avg = ((totalViewNum / videosNum) + 0.5);
|
||||
|
||||
newYoutube.youtube_avgViewCount = (int)System.Math.Floor(avg);
|
||||
|
||||
//conn.Execute("update youtube set youtube_revoke = 'Y' where kol_uid = @kol_uid and kolMedia_uid = @kolMedia_uid", new { kol_uid = mediaItem.kol_uid, kolMedia_uid = mediaItem.kolMedia_uid });
|
||||
conn.Execute("update youtube set youtube_revoke = 'Y' where kol_uid = @kol_uid ", new { kol_uid = mediaItem.kol_uid });
|
||||
|
||||
conn.Insert(youtubeDetailList);
|
||||
conn.Insert(newYoutube);
|
||||
|
||||
}
|
||||
|
||||
double avg = ((totalViewNum / videosNum) + 0.5);
|
||||
|
||||
newYoutube.youtube_avgViewCount = (int)System.Math.Floor(avg);
|
||||
updateLog successLog = new updateLog();
|
||||
successLog.updateLog_text = "此Youtube帳號 " + mediaItem.kolMedia_accountName + "(" + mediaItem.kolMedia_displayName + ") Youtube資料更新成功";
|
||||
successLog.updateLog_kolMedia_uid = mediaItem.kolMedia_uid;
|
||||
successLog.updateLog_kolMedia_accountName = mediaItem.kolMedia_accountName;
|
||||
successLog.updateLog_kolMedia_displayName = mediaItem.kolMedia_displayName;
|
||||
successLog.updateLog_kol_uid = mediaItem.kol_uid;
|
||||
successLog.updateLog_type = "YouTube";
|
||||
successLog.updateLog_result = "success";
|
||||
successLog.updateLog_uid = channel_id;
|
||||
|
||||
conn.Execute("update youtube set youtube_revoke = 'Y' where kol_uid = @kol_uid and kolMedia_uid = @kolMedia_uid", new { kol_uid = mediaItem.kol_uid, kolMedia_uid = mediaItem.kolMedia_uid });
|
||||
|
||||
conn.Insert(youtubeDetailList);
|
||||
conn.Insert(newYoutube);
|
||||
conn.Insert(successLog);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
updateLog successLog = new updateLog();
|
||||
successLog.updateLog_text = "此Youtube帳號 " + mediaItem.kolMedia_accountName + "(" + mediaItem.kolMedia_displayName + ") Youtube資料更新失敗,失敗原因 " + ex.Message;
|
||||
successLog.updateLog_kolMedia_uid = mediaItem.kolMedia_uid;
|
||||
successLog.updateLog_kolMedia_accountName = mediaItem.kolMedia_accountName;
|
||||
successLog.updateLog_kolMedia_displayName = mediaItem.kolMedia_displayName;
|
||||
successLog.updateLog_kol_uid = mediaItem.kol_uid;
|
||||
successLog.updateLog_type = "YouTube";
|
||||
successLog.updateLog_result = "failed";
|
||||
successLog.updateLog_uid = channel_id;
|
||||
|
||||
conn.Insert(successLog);
|
||||
}
|
||||
|
||||
|
||||
updateLog successLog = new updateLog();
|
||||
successLog.updateLog_text = "此Youtube帳號 " + mediaItem.kolMedia_accountName + "(" + mediaItem.kolMedia_displayName + ") Youtube資料更新成功";
|
||||
successLog.updateLog_kolMedia_uid = mediaItem.kolMedia_uid;
|
||||
successLog.updateLog_kolMedia_accountName = mediaItem.kolMedia_accountName;
|
||||
successLog.updateLog_kolMedia_displayName = mediaItem.kolMedia_displayName;
|
||||
successLog.updateLog_kol_uid = mediaItem.kol_uid;
|
||||
successLog.updateLog_type = "YouTube";
|
||||
successLog.updateLog_result = "success";
|
||||
successLog.updateLog_uid = channel_id;
|
||||
|
||||
conn.Insert(successLog);
|
||||
|
||||
}
|
||||
else {
|
||||
updateLog failedLog = new updateLog();
|
||||
|
|
|
|||
|
|
@ -1,21 +1,15 @@
|
|||
{
|
||||
"iisSettings": {
|
||||
"windowsAuthentication": false,
|
||||
"anonymousAuthentication": true,
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:59933",
|
||||
"sslPort": 44377
|
||||
}
|
||||
},
|
||||
{
|
||||
"profiles": {
|
||||
"Journeys_WantHome": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": true,
|
||||
"applicationUrl": "https://localhost:7111;http://localhost:5223",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"dotnetRunMessages": true,
|
||||
"applicationUrl": "https://localhost:7111;http://localhost:5223",
|
||||
"nativeDebugging": false,
|
||||
"sqlDebugging": false
|
||||
},
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
|
|
@ -23,6 +17,24 @@
|
|||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"WSL": {
|
||||
"commandName": "WSL2",
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "https://localhost:7111",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development",
|
||||
"ASPNETCORE_URLS": "https://localhost:7111;http://localhost:5223"
|
||||
},
|
||||
"distributionName": ""
|
||||
}
|
||||
},
|
||||
"iisSettings": {
|
||||
"windowsAuthentication": false,
|
||||
"anonymousAuthentication": true,
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:59933",
|
||||
"sslPort": 44377
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -319,20 +319,20 @@
|
|||
<!-- .form-group -->
|
||||
<div class="form-group">
|
||||
<div class="form-label-group">
|
||||
<input type="text" id="kolMedia_url" class="form-control" value="" placeholder="網址" maxlength="50" required=""> <label for="kolMedia_url">網址</label>
|
||||
<input type="text" id="kolMedia_url" class="form-control" value="" placeholder="網址" maxlength="80" required=""> <label for="kolMedia_url">網址</label>
|
||||
</div>
|
||||
</div><!-- /.form-group -->
|
||||
|
||||
<!-- .form-group -->
|
||||
<div class="form-group">
|
||||
<div class="form-label-group">
|
||||
<input type="text" id="kolMedia_accountName" class="form-control" value="" placeholder="社群帳號" maxlength="20" required=""> <label for="kolMedia_accountName">社群帳號</label>
|
||||
<input type="text" id="kolMedia_accountName" class="form-control" value="" placeholder="社群帳號" maxlength="30" required=""> <label for="kolMedia_accountName">社群帳號</label>
|
||||
</div>
|
||||
</div><!-- /.form-group -->
|
||||
<!-- .form-group -->
|
||||
<div class="form-group">
|
||||
<div class="form-label-group">
|
||||
<input type="text" id="kolMedia_displayName" class="form-control" value="" placeholder="社群名稱" maxlength="20" required=""> <label for="kolMedia_displayName">社群名稱</label>
|
||||
<input type="text" id="kolMedia_displayName" class="form-control" value="" placeholder="社群名稱" maxlength="30" required=""> <label for="kolMedia_displayName">社群名稱</label>
|
||||
</div>
|
||||
</div><!-- /.form-group -->
|
||||
<!-- .form-group -->
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ $(document).ready(function () {
|
|||
var mediaArray = [];
|
||||
var tags = $('#kol_tags').val();
|
||||
var tagsStr = "";
|
||||
|
||||
var err_msg = "";
|
||||
var src = $('#fileupload-avatar').parent().children('img').prop('src');
|
||||
var origin = location.origin;
|
||||
src = src.replace(origin, '');
|
||||
|
|
@ -98,17 +98,30 @@ $(document).ready(function () {
|
|||
kolMedia_fansNum: RemoveComma($(this).find('td').eq(4).text().trim())
|
||||
}
|
||||
kolMedia_accountName = $(this).find('td').eq(2).text().trim();
|
||||
kolMedia_url22 = $(this).find('td').eq(1).text().trim();
|
||||
if ($(this).find('td').eq(0).text().trim() == 'YouTube') {
|
||||
if (kolMedia_accountName.substring(0, 1) != '@') {
|
||||
err_msg += $(this).find('td').eq(3).text().trim() + " 此YouTube頻道資料有誤,YouTube的帳號名稱第一碼應該為@字元\n";
|
||||
|
||||
}
|
||||
|
||||
if (kolMedia_url22.indexOf("youtube") >= 0) {
|
||||
err_msg += kolMedia_url22 + " 此Youtube網址有誤\n";
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if ($(this).find('td').eq(0).text().trim() == 'Facebook') {
|
||||
if (kolMedia_url22.substring(0, 4) != 'http') {
|
||||
err_msg += $(this).find('td').eq(3).text().trim() + " 此Facebook網址有誤\n";
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
mediaArray.push(item);
|
||||
});
|
||||
|
||||
var err_msg = "";
|
||||
|
||||
|
||||
if (kol_name == "") {
|
||||
err_msg += "KOL頻道名稱未填!\n";
|
||||
|
|
|
|||
|
|
@ -354,7 +354,7 @@ $(document).ready(function () {
|
|||
checkboxClick(this);
|
||||
});
|
||||
},
|
||||
order: [[5, 'desc']],
|
||||
order: [[1, 'desc']],
|
||||
info: true,
|
||||
search: "搜尋:",
|
||||
searching: true,
|
||||
|
|
|
|||
Loading…
Reference in New Issue