Nội dung được xóa Nội dung được thêm vào
→‎AWB: Trả lời
→‎AWB: đã hiểu đoạn code
Dòng 261:
Bạn cho ví dụ xem? [[User:Alphama|<span style="background:#16BCDA;color:white;border-radius:4px;">&nbsp;<b>A</b> l p h a m a&nbsp;</span>]] <sup><span style="background:yellow;border:1px #16BCDA solid;border-radius:2px;">[[User talk:Alphama|Talk]]</span></sup> 10:29, ngày 24 tháng 7 năm 2021 (UTC)
 
:Mời bạn xem [https://vi.wikibooks.org/w/index.php?title=Danh_s%C3%A1ch_ti%E1%BB%83u_h%C3%A0nh_tinh/299001%E2%80%93300000&action=history lịch sử trang này], tôi đã chạy 2 lượt mà vẫn không xong. Nhất là ở cái lượt 2, nó chỉ dịch đúng 1 chỗ, nếu cứ như thế thì phải chạy 14 lần nữa mới xong. Chạy 14 lần là còn may chán, tôi đang chạy AWB và nó còn skip luôn cái trang này, không thèm dịch. Đoạn mã tôi chép của bạn. [[b:vi:User:Đức Anh|Đức Anh]] <span style="font-size:0%">[[User:Đức Anh]]</span>([[b:vi:User talk:Đức Anh|thảo luận]]) 10:35, ngày 24 tháng 7 năm 2021 (UTC)
<source lang="csharp">
WikiFunctions.Parse.Parsers parsers = new WikiFunctions.Parse.Parsers();
WikiFunctions.Parse.HideText removeText = new WikiFunctions.Parse.HideText(false, true, false);
WikiFunctions.Parse.HideText HiderHideExtLinksImages = new WikiFunctions.Parse.HideText(true, true, true);
WikiFunctions.Parse.HideText HiderHideExtLinksImagesUnhideMeta = new WikiFunctions.Parse.HideText(true, false, true);
/// <summary>
/// Sửa lỗi chung của AWB
/// </summary>
/// <param name="ArticleText"></param>
/// <param name="ArticleTitle"></param>
/// <param name="wikiNamespace"></param>
/// <param name="Summary"></param>
/// <param name="Skip"></param>
/// <returns></returns>
public string ProcessArticle(string ArticleText, string ArticleTitle, int wikiNamespace, out string Summary, out bool Skip)
{
Skip = false;
Summary = "";
Article a = new Article(ArticleTitle, ArticleText);
string zeroth = WikiRegexes.ZerothSection.Match(a.ArticleText).Value;
bool CircaLink = WikiRegexes.CircaLinkTemplate.IsMatch(a.ArticleText), Floruit = (!zeroth.Contains(@"[[floruit|fl.]]") && WikiRegexes.UnlinkedFloruit.IsMatch(zeroth));
//a.AWBChangeArticleText("Sort meta data", parsers.SortMetaData(a.ArticleText, ArticleTitle), true);
a.AWBChangeArticleText("ViWikiFixes", ViWikiFixes(a.ArticleText, ArticleTitle, wikiNamespace), true);
//a.HideText(HiderHideExtLinksImagesUnhideMeta);
//a.AWBChangeArticleText("Sửa ngày giờ", TranslateDateTime(a.ArticleText), true);
//a.UnHideText(HiderHideExtLinksImagesUnhideMeta);
return a.ArticleText;
}
/// <summary>
/// Sửa lỗi chung cho tiếng Việt
/// </summary>
/// <param name="ArticleText"></param>
/// <param name="ArticleTitle"></param>
/// <param name="wikiNamespace"></param>
/// <returns></returns>
public string ViWikiFixes(string ArticleText, string ArticleTitle, int wikiNamespace)
{
//cấu hình các phương thức để chạy bot, dùng 2 dấu gạch chéo để che đi các phương thức không cần chạy
string originVersion = ArticleText;
// Choose main & category namespaces only
if (wikiNamespace != 0 && wikiNamespace != 14)
{
return ArticleText;
}
ArticleText = TranslateDateTime(ArticleText);
ArticleText = TranslateDateTime(ArticleText);
ArticleText = TranslateDateTime(ArticleText);
ArticleText = TranslateDateTime(ArticleText);
ArticleText = TranslateDateTime(ArticleText);
ArticleText = TranslateDateTime(ArticleText);
ArticleText = TranslateDateTime(ArticleText);
ArticleText = TranslateDateTime(ArticleText);
return ArticleText;
}
/// <summary>
/// Dịch định dạng ngày giờ từ tiếng Anh sang tiếng Việt
/// </summary>
/// <param name="ArticleText"></param>
/// <returns></returns>
public string TranslateDateTime(string ArticleText)
{
if (ArticleText.Contains("xếp hạng đĩa đơn") || ArticleText.Contains("Xếp hạng đĩa đơn") || ArticleText.Contains("Singlechart") || ArticleText.Contains("singlechart")) return ArticleText;
string a = "";
string b = "";
string c = "";
string result = "";
DateTime dt = new DateTime();
string convertDate = ArticleText;
string convertDatetemp = ArticleText;
int count = 0;
while (true)
{
if (count >= 100) break;
count++;
Match mdatetime = Regex.Match(convertDate, @"([Jj]anuary|[Ff]ebruary|[Mm]arch|[Aa]pril|[Mm]ay|[Jj]une|[Jj]uly|[Aa]ugust|[Ss]eptember|[Oo]ctober|[Nn]ovember|[Dd]ecember)\s{1}\d+,\s{1}\d{4}");
if (mdatetime.Success)
{
Match mfile = Regex.Match(convertDate.Substring(mdatetime.Index), @".*\.(jpg|JPG|jpeg|JPEG|gif|ogg|OGG|GIF|flac|FLAC|svg|SVG)");
if (mfile.Success && mfile.Value.Contains(mdatetime.Value) == true)
{
convertDate = convertDate.Substring(mfile.Index + mfile.Value.Length);
convertDatetemp = convertDate;
continue;
}
else
{
try
{
dt = Convert.ToDateTime(mdatetime.Value);
a = dt.Month.ToString();
b = dt.Day.ToString();
c = dt.Year.ToString();
result = "ngày " + b + " tháng " + a + " năm " + c;
convertDate = convertDate.Replace(mdatetime.Value, result);
ArticleText = ArticleText.Replace(convertDatetemp, convertDate);
convertDatetemp = convertDate;
}
catch
{
break;
}
}
}
else break;
}
count = 0;
while (true)
{
if (count >= 100) break;
count++;
Match mdatetime = Regex.Match(convertDate, @"\d+\s{1}([Jj]anuary|[Ff]ebruary|[Mm]arch|[Aa]pril|[Mm]ay|[Jj]une|[Jj]uly|[Aa]ugust|[Ss]eptember|[Oo]ctober|[Nn]ovember|[Dd]ecember)\s{1}\d{4}");
if (mdatetime.Success)
{
Match mfile = Regex.Match(convertDate.Substring(mdatetime.Index), @".*\.(jpg|JPG|jpeg|JPEG|gif|ogg|OGG|GIF|flac|FLAC|svg|SVG)");
if (mfile.Success && mfile.Value.Contains(mdatetime.Value) == true)
{
convertDate = convertDate.Substring(mfile.Index + mfile.Value.Length);
convertDatetemp = convertDate;
continue;
}
else
{
try
{
dt = Convert.ToDateTime(mdatetime.Value);
a = dt.Month.ToString();
b = dt.Day.ToString();
c = dt.Year.ToString();
result = "ngày " + b + " tháng " + a + " năm " + c;
convertDate = convertDate.Replace(mdatetime.Value, result);
ArticleText = ArticleText.Replace(convertDatetemp, convertDate);
convertDatetemp = convertDate;
}
catch
{
break;
}
}
}
else break;
}
count = 0;
while (true)
{
if (count >= 100) break;
count++;
Match mdatetime = Regex.Match(convertDate, @"([Jj]anuary|[Ff]ebruary|[Mm]arch|[Aa]pril|[Mm]ay|[Jj]une|[Jj]uly|[Aa]ugust|[Ss]eptember|[Oo]ctober|[Nn]ovember|[Dd]ecember)\s{1}\d+\s{1}\d{4}");
if (mdatetime.Success)
{
Match mfile = Regex.Match(convertDate.Substring(mdatetime.Index), @".*\.(jpg|JPG|jpeg|JPEG|gif|ogg|OGG|GIF|flac|FLAC|svg|SVG)");
if (mfile.Success && mfile.Value.Contains(mdatetime.Value) == true)
{
convertDate = convertDate.Substring(mfile.Index + mfile.Value.Length);
convertDatetemp = convertDate;
continue;
}
else
{
try
{
dt = Convert.ToDateTime(char.ToUpper(mdatetime.Value[0]) + mdatetime.Value.Substring(1));
a = dt.Month.ToString();
b = dt.Day.ToString();
c = dt.Year.ToString();
result = "ngày " + b + " tháng " + a + " năm " + c;
convertDate = convertDate.Replace(mdatetime.Value, result);
ArticleText = ArticleText.Replace(convertDatetemp, convertDate);
convertDatetemp = convertDate;
}
catch
{
break;
}
}
}
else break;
}
//Fix lỗi ngày tháng "Kiểm tra giá trị ngày tháng"
while (true)
{
if (count >= 100) break;
count++;
Match mdatetime = Regex.Match(convertDate, @"(access-date|date)\s*=\s*\d{4}\s*-\s*\d+\s*-\s*\d+\s*(\||})");
if (mdatetime.Success)
{
Match mfile = Regex.Match(convertDate.Substring(mdatetime.Index), @".*\.(jpg|JPG|jpeg|JPEG|gif|ogg|OGG|GIF|flac|FLAC|svg|SVG)");
if (mfile.Success && mfile.Value.Contains(mdatetime.Value) == true)
{
convertDate = convertDate.Substring(mfile.Index + mfile.Value.Length);
convertDatetemp = convertDate;
continue;
}
else
{
try
{
//int i = mdatetime.Value.IndexOf('=');
//int j = mdatetime.Value.IndexOf('|');
string temp = mdatetime.Value.Substring(mdatetime.Value.IndexOf('=') + 1).Trim();
if (mdatetime.Value.Contains("|"))
{
temp = temp.Substring(0, temp.IndexOf('|')).Trim();
}
else if (mdatetime.Value.Contains("}"))
{
temp = temp.Substring(0, temp.IndexOf('}')).Trim();
}
dt = Convert.ToDateTime(temp);
a = dt.Month.ToString();
b = dt.Day.ToString();
c = dt.Year.ToString();
if (mdatetime.Value.Contains("access-date"))
{
result = "access-date = ngày " + b + " tháng " + a + " năm " + c;
}
else
{
result = "date = ngày " + b + " tháng " + a + " năm " + c;
}
if (mdatetime.Value.Contains("}"))
{
result += "}";
}
else result += " |";
convertDate = convertDate.Replace(mdatetime.Value, result);
ArticleText = ArticleText.Replace(convertDatetemp, convertDate);
convertDatetemp = convertDate;
}
catch (Exception ex)
{
string s = ex.Message;
break;
}
}
}
else break;
}
while (true)
{
if (count >= 100) break;
count++;
Match mdatetime = Regex.Match(convertDate, @"(access-date|date)\s*=\s*\d+\s*-\s*\d+\s*-\s*\d{4}\s*(\||})");
if (mdatetime.Success)
{
Match mfile = Regex.Match(convertDate.Substring(mdatetime.Index), @".*\.(jpg|JPG|jpeg|JPEG|gif|ogg|OGG|GIF|flac|FLAC|svg|SVG)");
if (mfile.Success && mfile.Value.Contains(mdatetime.Value) == true)
{
convertDate = convertDate.Substring(mfile.Index + mfile.Value.Length);
convertDatetemp = convertDate;
continue;
}
else
{
try
{
string temp = mdatetime.Value.Substring(mdatetime.Value.IndexOf('=') + 1).Trim();
if (mdatetime.Value.Contains("|"))
{
temp = temp.Substring(0, temp.IndexOf('|')).Trim();
}
else if (mdatetime.Value.Contains("}"))
{
temp = temp.Substring(0, temp.IndexOf('}')).Trim();
}
string[] s = temp.Split('-');
dt = Convert.ToDateTime(s[2] + "-" + s[1] + "-" + s[0]);
a = dt.Month.ToString();
b = dt.Day.ToString();
c = dt.Year.ToString();
if (mdatetime.Value.Contains("access-date"))
{
result = "access-date = ngày " + b + " tháng " + a + " năm " + c;
}
else
{
result = "date = ngày " + b + " tháng " + a + " năm " + c;
}
if (mdatetime.Value.Contains("}"))
{
result += "}";
}
else result += " |";
convertDate = convertDate.Replace(mdatetime.Value, result);
ArticleText = ArticleText.Replace(convertDatetemp, convertDate);
convertDatetemp = convertDate;
}
catch
{
break;
}
}
}
else break;
}
#region Fix lỗi 2ngày 2 tháng 4 năm 2012
while (true)
{
if (count >= 100) break;
count++;
Match mdatetime = Regex.Match(convertDate, @"\d+[Nn]gày\s{1}\d+\s{1}tháng");
if (mdatetime.Success)
{
Match mfile = Regex.Match(convertDate.Substring(mdatetime.Index), @".*\.(jpg|JPG|jpeg|JPEG|gif|ogg|OGG|GIF|flac|FLAC|svg|SVG)");
if (mfile.Success && mfile.Value.Contains(mdatetime.Value) == true)
{
convertDate = convertDate.Substring(mfile.Index + mfile.Value.Length);
convertDatetemp = convertDate;
continue;
}
else
{
try
{
//dt = Convert.ToDateTime(char.ToUpper(mdatetime.Value[0]) + mdatetime.Value.Substring(1));
b = mdatetime.Value.Substring(0, 1) + mdatetime.Value.Substring(mdatetime.Value.IndexOf("ngày ") + 5, 1);
result = "ngày " + b + " tháng";
convertDate = convertDate.Replace(mdatetime.Value, result);
ArticleText = ArticleText.Replace(convertDatetemp, convertDate);
convertDatetemp = convertDate;
}
catch
{
break;
}
}
}
else break;
}
#endregion
return ArticleText;
}
</source>
[[b:vi:User:Đức Anh|Đức Anh]] <span style="font-size:0%">[[User:Đức Anh]]</span>([[b:vi:User talk:Đức Anh|thảo luận]]) 10:35, ngày 24 tháng 7 năm 2021 (UTC)
 
Bạn đang dùng 1 cái thay thế năm -> dấu gạch chéo, cái này do bạn thiết lập ở phần Thay thế, k phải là code của tôi. [[User:Alphama|<span style="background:#16BCDA;color:white;border-radius:4px;">&nbsp;<b>A</b> l p h a m a&nbsp;</span>]] <sup><span style="background:yellow;border:1px #16BCDA solid;border-radius:2px;">[[User talk:Alphama|Talk]]</span></sup> 10:39, ngày 24 tháng 7 năm 2021 (UTC)