כיצד אוכל לשאוב מידע על כל וידאו מראש אם הוא פתוח בנטפרי או לא
-
@משה-בניית-אתרים אוקיי אם כל הסרטונים הם מיוטיוב, תנסה לפנות לוידאו-טוב, ולבקש מהם רשימה כמו שהזכרת.
אמנם אני מסופק אם אכן יש להם את כל הסרטונים שפתוחים בנטפרי. אם הבנתי נכון זה מה שאמור להיות, השאלה אם זה כך במציאות. -
ואגב, על הצד שהסקריפט הנ"ל לא יוכל לעמוד בעומס של כל הרשימה, אשמח לדעת באיזה דרך תוכל להריץ סקריפט שלא ברמת השרת?
-
@משה-בניית-אתרים איך זה קשור לשרת? יש לך רשימה של מזהי וידאו שבאתר שלך?
תריץ עליהם (בכל מחשב או מה שלא יהיה) הצלבה מול הרשימה השניה (התיאורטית) -
זה נמצא בתוך פוסטים בשרת במסד הנתונים. יש לך דרך להריץ עליהם את השאילתא?
-
@משה-בניית-אתרים אני חושב שיש כאן סוג של שיח חרשים.
אתה צריך להריץ על כל אחד מהכתובות של הסרטונים, בקשה (לדוגמא fetch) ואז פשוט - אם הסרטון פתוח תקבל סטטוס 200, אם סגור תקבל 418. כל מה שחסום על ידי נטפרי מתקבלת שגיאה בקונסול עם המספר 418 (והתיאור blocked by netfree).
הכי פשוט לך לקבל (מהמסד נתונים, איך שאתה אמור לדעת להוציא) את כל הכתובות של סרטוני יוטיוב שנמצאים באתר, להכניס אותם למערך, ולבצע משהו כזה:var videos = ["כתובת 1", "כתובת 2", "וכו"] Promise.all(videos.map(u=>fetch(u))).then(responses => responses.forEach( response => console.log(`${response.url}: ${response.status}`) ));
כדי שזה יעבוד חלק תצטרך (אני משער שכבר יש לך) להכניס CORS (נגיד עם תוסף כגון זה בפיירפוקס).
תוכל לסנן כמובן, שרק אלו שמגיבים בסטטוס 418 יופיעו וכן הלאה. -
@chv
אני גם מתעניין בנושא וכמו שהצעתי כאן
ניסיתי לכתוב לזה סימנייה אך קיבלתי על הכל סטטוס 200 , גם מה שחסום(()=>{ let links = document.querySelectorAll('a'); for (const link of links) { fetch(link.href) .then((response)=>{return response.status}) .then((thestatus)=>{console.log(`הסטטוס הוא ${thestatus}`)}) } })()
-
@ב-ל יש לך בעיה בסיסית בקוד, הוא לא בנוי כמערך (או לפחות לא בצורה שאפשר להתנהל איתו בfetch וresponse) כמו כן לא הבנתי מאיפה מגיע thestatus.
תעשה קוד כזה - בערך - זה אמור לעבוד:
var array = []; var links = document.getElementsByTagName("a"); for(var i=0; i<links.length; i++) { array.push(links[i].href); } Promise.all(array.map(u=>fetch(u))).then(responses => responses.forEach( response => console.log(`${response.url}: ${response.status}`) ))
כמו שכתבתי למעלה - מכאן אתה כבר יכול לסנן את כל התשובות 418 (נגיד במקום console.log וכו', אתה כותב -
if (response.status == "418") { // התראה או יצירת רשימה של הלינקים הבעייתים וכו }))
זה לדוגמא)
צריך לדעת איך להחריג את הפרומיס משגיאות צדדיות - כגון חסימות של חוסמי פרסומות או הגנות מעקב וכו', שיצוד רק את הבקשות שקיבלו תשובות עם סטטוס. (זה חובה להשתמש כאן בפרומיס, כי יש המון תוצאות וצריך אותן במרוכז)
@yzahn אולי יש לך משהו לתרום בנידון. -
@chv אמר בכיצד אוכל לשאוב מידע על כל וידאו מראש אם הוא פתוח בנטפרי או לא:
@ב-ל יש לך בעיה בסיסית בקוד, הוא לא בנוי כמערך (או לפחות לא בצורה שאפשר להתנהל איתו בfetch וresponse) כמו כן לא הבנתי מאיפה מגיע thestatus.
זה לא פורום תכנות, אז לא אאריך אבל הקוד שלו בסדר גמור.
יש בעיה להריץ את הבדיקה בדפדפן כי יש בעיית CORS.
בתוסף לא יהיה הבעיה הזאת. -
@yzahn אמר בכיצד אוכל לשאוב מידע על כל וידאו מראש אם הוא פתוח בנטפרי או לא:
יש בעיה להריץ את הבדיקה בדפדפן כי יש בעיית CORS.
אז למה הוא מביא על הכל סטטוס 200 ?
-
@ב-ל על איזה דף הרצת את הקוד? ייתכן שהקישורים שלהם לא היה בעיית CORS היו באמת פתוחים
-
@yzahn
נכון. התקנתי תוסף שמונע בעיית CORS וזה אכן עובד -
@ב-ל אמר בכיצד אוכל לשאוב מידע על כל וידאו מראש אם הוא פתוח בנטפרי או לא:
נכון. התקנתי תוסף שמונע בעיית CORS וזה אכן עובד
מה התוסף?
-
@משה-בניית-אתרים
זה למשל
https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf/related
ויש עוד הרבה, תחפש בחנות של גוגל