Advertisement
Guest User

Untitled

a guest
Jan 19th, 2020
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.82 KB | None | 0 0
  1. // Список с символами, которые будут вставляться в тайтл
  2. IZennoList symbolsList = project.Lists["Symbols"];
  3.  
  4. // Список оригинальных тайтлов
  5. string[] titlesList = File.ReadAllLines(project.Directory+@"\Titles.txt", Encoding.UTF8);
  6.  
  7. // Шанс добавления месяца и года в тайтл
  8. int monthPercentage = int.Parse(project.Variables["monthPercentage"].Value);
  9. int randomWord = 0;
  10. int randomValue = 0;
  11.  
  12. // Генерируем случайное число от и до - количество итераций уникализации одного тайтла
  13. int randomIter = 0;
  14. Regex r2 = new Regex(@"(\d{1,9})", RegexOptions.Multiline | RegexOptions.IgnoreCase);
  15. MatchCollection mc2 = r2.Matches(project.Variables["iterationUniqueness"].Value);
  16. if (mc2.Count == 2)
  17. {
  18.     randomIter = Global.Classes.rnd.Next(int.Parse(mc2[0].Value), int.Parse(mc2[1].Value));
  19. }
  20. // Перебор тайтлов
  21. foreach (string title in titlesList)
  22. {
  23.     bool month = true;
  24.  
  25.    
  26.     // Получение текущего месяца
  27.     string monthToday = new DateTime(2015, 1, 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("us")).ToUpper();
  28.    
  29.     // Проверка есть ли в тайтле месяц, если есть, отключаем добавление месяца с годом
  30.     int index = title.IndexOf(monthToday, StringComparison.InvariantCultureIgnoreCase);
  31.     if (index != -1)
  32.     {
  33.         month = false;
  34.     }
  35.    
  36.     // Делим тайтл на слова
  37.     string[] words = title.Split(' ');
  38.  
  39.     for(int i=0; i < randomIter; i++)
  40.     {
  41.         if (words.Length > 3)
  42.         {
  43.             // Если в тайтле больше трёх слов, то вставка символов после второго слова в тайтле
  44.             randomWord = Global.Classes.rnd.Next(2, words.Length);
  45.         }
  46.         else
  47.         {
  48.             // Если в тайтле меньше трёх слов, то вставка символов в любое место тайтла, кроме начала
  49.             randomWord = Global.Classes.rnd.Next(0, words.Length);
  50.         }
  51.  
  52.         // Получение случайного слова из тайтла после которого будет вставлен символ
  53.         string word = words[randomWord];
  54.         string symbol = "";
  55.        
  56.         // Получение случайного символа из списка
  57.         int randomSymbol = Global.Classes.rnd.Next(0, symbolsList.Count);
  58.         symbol = symbolsList[randomSymbol];
  59.        
  60.         // Проверка на триггер вставки месяца в тайтл
  61.         if (month == true)
  62.         {
  63.             randomValue = Global.Classes.rnd.Next(100);
  64.            
  65.             // Шанс вставки месяца с годом в тайтл 25%, если меньше, то вставки не будет
  66.             if (randomValue < monthPercentage)
  67.             {
  68.                 symbol = " "+monthToday+" 2020 ";
  69.                
  70.                 // Если сделали вставку месяца с годом, то для этого тайтла повторную вставку отключаем
  71.                 month = false;
  72.             }
  73.         }
  74.    
  75.         // Создаём уникальное слово: слово + символ
  76.         string wordUnique = word+symbol;
  77.        
  78.         // Записываем обратно в массив слов
  79.         words[randomWord] = wordUnique;
  80.     }
  81.    
  82.     Tools tool = new Tools();
  83.    
  84.     // Склеиваем слова обратно в тайтл с добавленными символами и обрезаем, если длиннее 100
  85.     string result = string.Join(" ", words);
  86.     string newTitle = "";
  87.     if (result.Length >= 98)
  88.     {
  89.         newTitle = tool.TruncateLongString(result, 98, ".");
  90.     }
  91.     else
  92.     {
  93.         newTitle = result;
  94.     }
  95.    
  96.     // Записываем результат в файл
  97.     File.AppendAllText(project.Directory+@"\NewTitles.txt", newTitle+Environment.NewLine, Encoding.UTF8);
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement