Advertisement
Guest User

Untitled

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