Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.60 KB | None | 0 0
  1. import telebot
  2. import requests
  3. import re
  4. from time import sleep
  5. from telebot import types
  6. import sqlite3
  7.  
  8. bot = telebot.TeleBot('632061718:AAEoanuGDBBOkqEyUf3pk7xPFtYxb7-O-Ds', threaded=False)
  9.  
  10. def make_query(*params):
  11. conn = sqlite3.connect('Ex.db')
  12. c = conn.cursor()
  13. c.execute(*params)
  14. retur = c.fetchall()
  15. conn.commit()
  16. conn.close()
  17. return retur
  18.  
  19. def nickname_define(message):
  20.  
  21. name, surname = message.from_user.first_name, message.from_user.last_name
  22. if name:
  23. nickname = f'{surname}_{name}' if surname else name
  24. else:
  25. nickname = surname if surname else 'Somebody'
  26.  
  27. return nickname
  28.  
  29. @bot.message_handler(commands=['start'])
  30. def start(message):
  31. person = nickname_define(message)
  32. start_text = 'start'
  33. #Audio Button
  34. markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
  35. markup.row('Мои аудиозаписи')
  36. bot.send_message(message.chat.id, start_text, reply_markup=markup)
  37.  
  38. @bot.message_handler(commands=['help'])
  39. def help(message):
  40. bot.send_message(message.chat.id, 'help')
  41.  
  42. @bot.message_handler(content_types=['text'])
  43. def text(message):
  44. t = message.text
  45. if t == 'Мои аудиозаписи':
  46. url_preparing(message)
  47.  
  48. def extra(download_site):
  49. download_text = requests.get(download_site).text
  50. SongBlockList = re.findall('artist=(.+)&title=(.+)&url=', download_text)
  51. LinksList = re.findall('<a href="/download.php(.+)>', download_text)
  52.  
  53. DownloadLinkReq = []
  54. for link in LinksList:
  55. DownloadLinkReq.append('https://vrit.me//download.php?artist=' + link[8:-1])
  56. return SongBlockList, DownloadLinkReq, download_text
  57.  
  58. def url_preparing(message):
  59. #Feed Button
  60. markup = types.InlineKeyboardMarkup()
  61. btn_feed= types.InlineKeyboardButton(text='Feed', url='https://vk.com/feed')
  62. markup.add(btn_feed)
  63. ask_text = 'You can get to your profile faster, using the feed link'
  64. sent = bot.send_message(message.chat.id, ask_text, reply_markup = markup)
  65. bot.register_next_step_handler(sent, url_parsing)
  66.  
  67. def url_parsing(message):
  68. check_val = re.findall('https://vk.com/\w+', message.text)
  69. check_val_unsafety = re.findall('vk.com/\w+', message.text)
  70. user_id = ''
  71. id_parsing_link = 'http://showid.ru/names/'
  72. correct_info = 'Your link is correct. Now i am parsing it'
  73. incorrect_info = 'Your link is incorrect, I can\'t parse it. Please, check it again'
  74. if (len(check_val) == 1 and (check_val[0] == message.text)):
  75. user_id = message.text[15:]
  76. bot.send_message(message.chat.id, correct_info)
  77. elif len(check_val_unsafety) == 1 and (check_val_unsafety[0] == message.text):
  78. user_id = message.text[7:]
  79. bot.send_message(message.chat.id, correct_info)
  80. else:
  81. bot.send_message(message.chat.id, incorrect_info)
  82. if len(user_id) != 0:
  83. id_parsing_link += user_id
  84. page = requests.get(id_parsing_link)
  85. req = page.text
  86. number_id_req = re.findall('<p><strong>ID:</strong> \d+</p>', req)
  87. number_id = number_id_req[0][24:-4]
  88. download_site = "https://vrit.me/audios" + number_id
  89. SongBlockList, DownloadLinkReq, download_text = extra(download_site)
  90. if len(SongBlockList) == 0: SongBlockList, DownloadLinkReq, download_text = extra(download_site)
  91.  
  92. if 'Для скачивания музыки разрешите доступ к своим аудиозаписям!' in download_text:
  93. bot.send_message(message.chat.id, "Your audios are closed😞. Please, add something, and repeat")
  94.  
  95. elif len(SongBlockList) == 0:
  96. bot.send_message(message.chat.id, "Your audios are empty😞. Please, open them, and repeat")
  97.  
  98. else:
  99. SongBlockList = [SongBlockList[i][0]+'-'+SongBlockList[i][1] for i in range(len(SongBlockList))]
  100. ListOfSongs = list()
  101. for i in range(len(SongBlockList)//5 + (1 if len(SongBlockList)%5 > 0 else 0)):
  102. if i == len(SongBlockList)//5 + (1 if len(SongBlockList)%5 > 0 else 0)-1:
  103. ListOfSongs.append(SongBlockList[i*5:])
  104. else:
  105. ListOfSongs.append(SongBlockList[i*5:i*5+5])
  106. new = list()
  107. for x in ListOfSongs[-1]:
  108. if x != '': new.append(x)
  109. ListOfSongs[-1] = new
  110. nickname = nickname_define(message)
  111.  
  112. make_query(f"DROP TABLE IF EXISTS {nickname};")
  113. make_query(f"CREATE TABLE {nickname} (Ua_ID INTEGER PRIMARY KEY AUTOINCREMENT, Songs text, Links text);")
  114. make_query(f'insert into {nickname} (Songs, Links) values (?, ?)', (';;;'.join([';;'.join(x) for x in ListOfSongs]), ';;;'.join(DownloadLinkReq)))
  115.  
  116. markup = types.InlineKeyboardMarkup()
  117. for i in range(len(ListOfSongs[0])):
  118. btn = types.InlineKeyboardButton(text=f'{ListOfSongs[0][i]}', url=DownloadLinkReq[i])
  119. markup.add(btn)
  120. btn1 = types.InlineKeyboardButton(text='⬅️', callback_data='⬅️'+';'+'0'+';'+nickname)
  121. btn2 = types.InlineKeyboardButton(text='➡️', callback_data='➡️'+';'+'0'+';'+nickname)
  122. markup.add(btn1, btn2)
  123. bot.send_message(message.chat.id, text="pesni", reply_markup=markup)
  124.  
  125.  
  126. @bot.callback_query_handler(func=lambda c: True)
  127. def inline(c):
  128.  
  129. if '⬅️' in c.data or '➡️' in c.data:
  130. act, page, nickname = (c.data).split(';')
  131. page = int(page)
  132. songs = [x.split(';;') for x in (make_query(f'select Songs from {nickname}')[0][0]).split(';;;')]
  133. if act == '➡️':
  134. page = (page+1)%(len(songs))
  135. else:
  136. page = (page-1)%(len(songs))
  137.  
  138.  
  139. links = (make_query(f'select Links from {nickname}')[0][0]).split(';;;')
  140. markup = types.InlineKeyboardMarkup()
  141. for i in range(len(songs[page])):
  142. btn = types.InlineKeyboardButton(text=f'{songs[page][i]}', url=links[5*page+i])
  143. markup.add(btn)
  144. btn1 = types.InlineKeyboardButton(text='⬅️', callback_data='⬅️'+';'+str(page)+';'+nickname)
  145. btn2 = types.InlineKeyboardButton(text='➡️', callback_data='➡️'+';'+str(page)+';'+nickname)
  146. markup.add(btn1, btn2)
  147.  
  148. bot.edit_message_text(chat_id=c.message.chat.id, message_id=c.message.message_id, text='pesni', reply_markup=markup)
  149.  
  150.  
  151. def main():
  152. bot.polling(none_stop=True, interval=0)
  153.  
  154.  
  155. if __name__ == '__main__':
  156. while True:
  157. try:
  158. main()
  159. except Exception as e:
  160. print(e)
  161. sleep(1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement