diff --git a/Models/authToken.cs b/Models/authToken.cs index 7e9219d..80f0585 100644 --- a/Models/authToken.cs +++ b/Models/authToken.cs @@ -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 " + diff --git a/Models/youtubeUpdateClass.cs b/Models/youtubeUpdateClass.cs index be780ee..117f234 100644 --- a/Models/youtubeUpdateClass.cs +++ b/Models/youtubeUpdateClass.cs @@ -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 youtubeDetailList = new List(); + 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 youtubeDetailList = new List(); + + 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(); diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json index b72ee8a..580087b 100644 --- a/Properties/launchSettings.json +++ b/Properties/launchSettings.json @@ -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 } } -} +} \ No newline at end of file diff --git a/Views/Home/KolList.cshtml b/Views/Home/KolList.cshtml index 53fd2a7..cac446d 100644 --- a/Views/Home/KolList.cshtml +++ b/Views/Home/KolList.cshtml @@ -319,20 +319,20 @@
- +
- +
- +
diff --git a/wwwroot/assets/javascript/custom/kollist.js b/wwwroot/assets/javascript/custom/kollist.js index 2955a4d..107fe12 100644 --- a/wwwroot/assets/javascript/custom/kollist.js +++ b/wwwroot/assets/javascript/custom/kollist.js @@ -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"; diff --git a/wwwroot/assets/javascript/custom/projectlist.js b/wwwroot/assets/javascript/custom/projectlist.js index 86aceb1..b480cd9 100644 --- a/wwwroot/assets/javascript/custom/projectlist.js +++ b/wwwroot/assets/javascript/custom/projectlist.js @@ -354,7 +354,7 @@ $(document).ready(function () { checkboxClick(this); }); }, - order: [[5, 'desc']], + order: [[1, 'desc']], info: true, search: "搜尋:", searching: true,