@pcinfogmach הכי טוב שאני מכיר זה שירות התרגום של גוגל בגוגל קלאוד, זה מבוסס בינה לקונטקסט.
אפשר להאמין (אין מקור לזה, תחושת בטן) שבחודשים הקרובים זה ישתדרג יותר עם שילוב של AI חדיש יותר..
@pcinfogmach הכי טוב שאני מכיר זה שירות התרגום של גוגל בגוגל קלאוד, זה מבוסס בינה לקונטקסט.
אפשר להאמין (אין מקור לזה, תחושת בטן) שבחודשים הקרובים זה ישתדרג יותר עם שילוב של AI חדיש יותר..
@ארי כתב בקובץ PDF משובש בשמירה מVBA אקסס:
ניסיתי במחשב לשנות את הברירת מחדל של קבצי PDF שלא יהיה אדובי אלא אדג', אבל זה לא עזר ועדיין הקובץ יצא משובש.
האם זה אומר שלא זו הבעיה, או שעדיין הוא יכול לגרום לשיבוש של הקובץ?
שינית את ברירת המחדל לפתיחה או להדפסה? אינני יודע האם זה אפשרי להגדיר מדפסת pdf ברירת מחדל, עכ"פ אם זה לא קורה במחשב שאדובי לא מתוקנת בו, כנראה שיש לאדובי איזה קשר לעניין...
תבדוק במאפייני קובץ הpdf שנוצר, האם מופיע שהוא נוצר באמצעות אדובי
עכ"פ השיטה הזו אמורה לשמור את המסמך לpdf באמצעות המנוע המובנה של ווינדוס, מקור
wordApp.ActiveDocument.ExportAsFixedFormat OutputFileName:=path & "\" & rs!שם_טופס & ".pdf", ExportFormat:=wdExportFormatPDF
נסה לראות האם זה פותר לך את הבעיה
@dovid כתב בכלי ה-ai החדשים של גוגל:
אינטאיציית הAI הפנימית שיש לי
@לוי-ווילשאנסקי כתב באיך משתמשים בMARKDOWN?:
איך משתמשים בMARKDOWN?
לפני שתשלח לי את התגובה על הפוסט שכוונתך כהבנת @dovid , תלחץ על עזרה מצד שמאל מתחת לכפתור השליחה, ותראה נפלאות..
@מוטי-מן אתה יכול לנסות להשתמש בגוגל דרייב, אבל לא עם התוכנה שלהם אלא עם תוכנות צד שלישי כמו FreeFileSync או AirExplorer, ושם תוכל לבחור תיקייה מסוימת במחשב לסנכרון/גיבוי עם כל תיקייה בגוגל דרייב, עם אפשרות ליצירת קיצור דרך לסנכרון מהיר, המעלה של זה מבחינתי שזה לא רץ ברקע ולוקח משאבים, מצד שני התוכנות הללו נוטות לייצר שגיאות על כלום (בסנכרון עם ענן), כמו "לא ניתן לקרוא את מאפייני XX" ללא סיבה נראית לעין, ואז כשאתה לוחץ "נסה שנית" זה כן עובד..
@אברהם-א כתב בטאבלט + נטפרי:
רציתי לשאול אותך האם אתה מרוצה מהלנובו?
הוא נחמד, לא חזק מידי, אבל לא נתקע בהרצת אפליקציות קלאסיות, יש לי עליו כ80 אפליקציות סה"כ.
וכן האם אפליקציות של בנקים ואשראי עובדים בזה?
כן,
לי מותקן בנק הפועלים, דיסקונט וממילא גם מרכנתיל בפשטות (-ניתן להפקיד צ'קים בשניהם), כאל, פייבוקס וביט,
בעבר היה לי גם את האפליקציות של מקס וonezero (הייתי בפיילוט, סגרתי את החשבון ברפורמה אל תחשדו -:)
אני כן יודע שפפר לא עובד - לכאורה כי הם דורשים מכשיר טלפון,
פיוניר לא עבד לי - אני חושב כי הוא זיהה משהו עם הרוט שהיה לי בזמנו, ולא בגלל הטאבלט עצמו.
אני רק מדגיש שכרגע זה בלי וויפרי או תעודות ברוט, אלא עם תעודות בהתקנה רגילה כי שכחתי את הסיסמה והייתי צריך לאפס אותו..
אם אתה רוצה לבדוק משהו ספציפי, תוכל לכתוב ואם אספיק לפני שאסע חזרה לישיבה אבדוק בל"נ.
@WWW אתה עובד בו זמנית? כי אצלי זה בד"כ שבועיים במחשב אחד, ואז יומיים במחשב שני, ואז שוב שבועיים במחשב הראשון, כשיש הפסקה של כמה שעות בין לבין בד"כ, ולא נתקלתי בבעיות מהותיות..
אולי זה קשור לאישי? כי פעם לפחות היה הבדל מהותי בצורת העבודה, בין הארגוני לאישי, היום כלפי חוץ זה נראה שזה אותו דבר אבל אני לא יודע בבירור..
@מוטי-מן אני משתמש לזה בonedrive (יש לי חשבון ארגוני שלא אני משלם עליו), יצרתי ספריות בכל המחשבים בשם "פיתוח" והגדרתי את המיקום שלהם לתיקיית הonedrive במחשב, וכך זה מסתנכרן לענן ומהענן למחשב בצורה ממש חלקה, לא ממש נתקלתי בבעיות מהסוג שציינת במהלך סינכרון (אני מסנכרן את תיקיות המסמכים, שולחן עבודה, תמונות, הורדות ועוד כמה אישיות..), זה אכן היה פעם, אבל מאז השתנו כמה דברים גם בנטפרי וגם בתוכנה עצמה..
לגבי התארכות הנתיב, זה הציק לי גם, ומה שעשיתי, ששיניתי את מיקום התיקיה של הסנכרון לתיקיית השורש של כונן C,
אגב, נראה לי שזה צורך פחות משאבים מגוגל דרייב (עכ"פ פחות ראם ודאי..)
@חוקר מה שכן לא ממש אפשרי להוריד ולצפות בתכנים מסוימים באתר (בנטפרי), וזה מציק כשצריך גישה רגע לאיזה מסמך, אבל זה לא הציק לי עדיין בתכנות..
@צדיק-תמים אפשר להתגבר על זה במלא דרכים, רק ציינתי שישים לב...
וקצת שיעורי בית, שיהיה לך גם משהו לעשות...
לאחרונה שמתי לב שבהודעות מהסוג הזה (ולא, אל תשאלו מה זה הסוג הזה, עדיין לא ירדתי לחקר הדבר, אבל בהודעות שנשלחות באמצעות הספריות של גוגל סקריפט) ההודעות בעברית מגיעות מוצגות כltr, מה שמשבש את התצוגה ומציק בעין, אפשר לסדר את זה בקלות ע"י הטעמעה של תוכן ההודעה כhtml, משהו כזה:
let textHtml = `<div dir='rtl'>"${content}"</div>`;
אתה צריך להכניס את זה כפרמטר בעת שליחת ההודעה
@מעמד-מוצלח מסכים בכל מילה עם @צבי-ש, אבל יש לי משהו שהכנתי פעם לחבר, זה קצת יותר מ'כל התחלה של קוד כזה'
אני זוכר שהיה לו תלונה בקשר לשרשורים, מעיון קליל בקוד נראה שזה בגלל שכל הודעה נשלחת בנפרד, שים לב שההודעות נשארות מסומנות בתווית גם לאחר השליחה שלהם למייל השני.
// Forwards The Emails By abaye
const label = 'move';
const email = 'email@gmail.com';
function sendEmails() {
let threads = GmailApp.search(`label:${label}`);
threads.forEach(thread => {
let messages = thread.getMessages();
messages.forEach(message => {
let senderName = message.getFrom();
let subject = message.getSubject();
let body = message.getPlainBody();
let attachments = message.getAttachments();
let emailContent = `שולח ההודעה: ${senderName}\nהנושא: ${subject}\n\nתוכן ההודעה:\n${body}`;
GmailApp.sendEmail(
email,
`Fwd: ${subject}`,
emailContent,
{
attachments: attachments,
name: "הועבר מהמייל של מוישי"
}
);
});
});
}
@Sara-Rivka יותר מזה, אני משתמש בסימון כדי לדעת האם התשובה ההיא עזרה לאותו משתמש, ויש לי מה לנסות את זה גם (זה אמנם לא ברמה של סטאק אבל עדיין)
@פלורידה אתה יכול אולי להגדיר משימה אחת לדקה לדוגמה שתפעיל סקריפט שיבדוק האם תוכנה X פעילה, ובאם לא, יפעיל אותה, אבל לא פירטת מה בדיוק הצורך, כך שאיני יודע האם זה יתאים לך..
באתר החדש.
@צדיק-תמים אני מדבר (תמיד) רק על האתר הישן, נכנסתי לחדש בפעם האחרונה לפני שנה או אולי אפילו שנתיים.. (אני לא מנהל מערכות באופן שוטף, ומבחינת הפיתוח נראה לי הישן יותר טוב, אבל האמת שאפי' לא ניסיתי את החדש..)
@צדיק-תמים לא הבנתי מה בדיוק התכוונת,
עכ"פ מנסינות עקרים כבר תקופה, נראה שהבעיה היא בימות,
מה שכן שמתי לב, שבהעלאה של קובץ עם מספור אוטומטי ללא המרה (זה חייב להיות wav בשביל המספור), השם נשמר תקין גם בהעלאה של קובץ יחיד.
ניתן לכאורה (ואולי לזה התכוונת) להעלות תמיד בחלקים, ואז זה יפתור את הבעיה, אבל משום מה תמיד כשאני עושה ככה הקובץ אמנם מושמע תקין אבל הגודל שלו מתנפח לפי שניים לפחות..
@ivrtikshoret אכן זה היה הבעיה!
לא שמתי לב לזה לפני זה בשרשור המקורי..
עדכנתי את הקוד למעלה לקוד התקין, אם יש מישהו שצריך...
תגובה: העלאת קובץ בapi לימות המשיח | קוד שבפייתון עובד וב nodejs לא כל כך
אני גם כן נתקל בבעיה דומה בקוד C#, מתעבורת הרשת נראה בבירור שהחלקים נשלחים היטב לשרת, אבל בסוף אני מקבל קובץ ריק, (התגובה מימות תקינה ומופיע שגודל הקובץ הוא 0)
דבר נוסף שייתכן שהא בהא תליא, למרות שמוגדר autoNumbering וconvertAudio בפועל הקובץ לא מומר (לכאורה) והוא נשמר עם השם המקורי.
יצויין שקבצים קטנים מ50 מגה עולים היטב, ומומרים וממוספרים כהוגן.
להלן הקוד הרלוונטי, וכאן התיעוד
אם צריך טוקן בשביל לבדוק אפשר ליצור קשר בפרטי
עדכון: הקוד עודכן וכעת הוא עובד היטב,
(שימו לב שבקבצים קטנים מ50 מגה (העלאה רגילה) השם המקורי שנשמר בפרטי הקובץ משבש את התווים העבריים, בהעלאה בחלקים זה נשמר בפרטי הקובץ בצורה טובה)
public class YemotUploader
{
private const int ChunkSize = 5000000;
private async Task<List<byte[]>> ReadInChunksAsync(string filePath)
{
var chunks = new List<byte[]>();
using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[ChunkSize];
int bytesRead;
while ((bytesRead = await fileStream.ReadAsync(buffer, 0, ChunkSize)) > 0)
{
var chunk = new byte[bytesRead];
Array.Copy(buffer, chunk, bytesRead);
chunks.Add(chunk);
}
}
return chunks;
}
public async Task<Dictionary<string, string>> UploadFileAsync(
string filePath,
string path,
string tokenYemot
)
{
if (new FileInfo(filePath).Length > 5000000)
{
var contentName = Path.GetFileName(filePath);
var contentPath = Path.GetFullPath(filePath);
var contentSize = new FileInfo(contentPath).Length;
var qquuid = Guid.NewGuid().ToString();
var chunks = await ReadInChunksAsync(contentPath);
var offset = 0;
foreach (var chunk in chunks)
{
using (var httpClient = new HttpClient())
using (var content = new MultipartFormDataContent())
{
content.Add(new StringContent(tokenYemot), "token");
content.Add(new StringContent(path), "path");
content.Add(new StringContent(qquuid), "qquuid");
content.Add(new StringContent("1"), "convertAudio");
content.Add(new StringContent("true"), "autoNumbering");
content.Add(new StringContent("yemot-admin"), "uploader");
content.Add(new StringContent(contentName), "qqfilename");
content.Add(new StringContent(contentSize.ToString()), "qqtotalfilesize");
content.Add(new StringContent(chunks.Count.ToString()), "qqtotalparts");
content.Add(new StringContent(chunk.Length.ToString()), "qqchunksize");
content.Add(new StringContent(offset.ToString()), "qqpartbyteoffset");
content.Add(new StringContent(chunks.IndexOf(chunk).ToString()), "qqpartindex");
content.Add(
new ByteArrayContent(chunk)
{
Headers =
{
ContentDisposition =
new System.Net.Http.Headers.ContentDispositionHeaderValue(
"form-data"
)
{
Name = "\"qqfile\"",
FileName = $"\"{contentName}\"",
},
ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(
"application/octet-stream"
)
}
},
"qqfile"
);
var response = await httpClient.PostAsync(
"https://www.call2all.co.il/ym/api/UploadFile",
content
);
offset += chunk.Length;
}
}
var doneData = new Dictionary<string, string>
{
{ "token", tokenYemot },
{ "path", path },
{ "uploader", "yemot-admin" },
{ "convertAudio", "1" },
{ "autoNumbering", "true" },
{ "qquuid", qquuid },
{ "qqfilename", contentName },
{ "qqtotalfilesize", contentSize.ToString() },
{ "qqtotalparts", chunks.Count.ToString() },
};
using (var httpClient = new HttpClient())
{
var doneResponse = await httpClient.PostAsync(
"https://www.call2all.co.il/ym/api/UploadFile?done",
new FormUrlEncodedContent(doneData)
);
var doneResponses = (await doneResponse.Content.ReadAsStringAsync()).Split("}{");
foreach (var response in doneResponses)
{
try
{
Console.WriteLine(response);
}
catch (Exception ex)
{
Console.WriteLine("Error decoding JSON: " + ex.Message);
}
}
}
return null;
}
else
{
var url = "https://www.call2all.co.il/ym/api/UploadFile";
var parameters = new Dictionary<string, string>
{
{ "token", tokenYemot },
{ "path", path },
{ "convertAudio", "1" },
{ "autoNumbering", "true" },
};
using (var httpClient = new HttpClient())
using (var formData = new MultipartFormDataContent())
{
foreach (var parameter in parameters)
{
formData.Add(new StringContent(parameter.Value), parameter.Key);
}
var streamContent = new StreamContent(File.OpenRead(filePath));
streamContent.Headers.ContentDisposition =
new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data")
{
Name = "\"file\"",
FileName = $"\"{Path.GetFileName(filePath)}\"",
};
formData.Add(streamContent, "file");
var response = await httpClient.PostAsync(url, formData);
var jsonResponse = await response.Content.ReadAsStringAsync();
Console.WriteLine(jsonResponse);
return null;
}
}
}
}
אני קורא לזה כך
string path = textBox1.Text;
var fileUploader = new YemotUploader();
await fileUploader.UploadFileAsync(path, "ivr2:1", "079999999:12345");
@mekev אולי ביפעת בקרת פרסום קיימים נתונים כאלה..