Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
yayoimizuha committed Jul 19, 2022
1 parent c9f6b99 commit 5162107
Show file tree
Hide file tree
Showing 3 changed files with 238 additions and 37 deletions.
131 changes: 131 additions & 0 deletions artwork_viewer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
import datetime
import io
import os.path
import pprint
import time
import tkinter
from tkinter import *
from tkinter import ttk

import PIL.ImageTk
import PIL.Image
import requests

from search_on_itunes import search_on_itunes_v2
import pandas

df = pandas.read_excel(os.path.join(os.getcwd(), 'merged.xlsx'), sheet_name='Sheet1', index_col=0)
print('rows:', df.__len__())
print(df.iloc[1])


def get_itunes_info(row):
url, artist_name, release_name, release_type, release_date, record_label, song_name, length, lyrics, composition, arrangement = row.tolist()
print('\n\n\n')
print(artist_name)
print(release_name)
print(song_name)
print(int(str(length).split(':')[0]) * 60 + int(str(length).split(':')[1]))
print(datetime.datetime.strptime(release_date, '%Y/%m/%d').date())
response = search_on_itunes_v2(artist_name=artist_name, album_name=release_name, song_name=song_name,
released_date=datetime.datetime.strptime(release_date, '%Y/%m/%d').date(),
length=int(str(length).split(':')[0]) * 60 + int(str(length).split(':')[1]),
debug=False)

if response == [None, None, 0]:
print("Not found!")
return [{'collectionName': 'None'},
[None, 'None', None, 'http://cdn.helloproject.com/img/release/o/nowprinting.jpg', None, 'None'],
row.tolist()]

return response


i = 6000


def increment():
global i
print(i, end='->')
i += 1
print(i)
if i >= df.__len__():
i = df.__len__() - 1
global info
info = get_itunes_info(df.iloc[i])
artist_label['text'] = info[1][1]
album_label['text'] = info[0]['collectionName']
song_label['text'] = info[1][5]

global canvas
global img
img = PIL.ImageTk.PhotoImage(
PIL.Image.open(io.BytesIO(requests.get(info[1][3].replace('5000x5000', '1000x1000')).content)))
canvas.itemconfig(tagOrId='image', image=img)

print(info)


def decrement():
global i
print(i, end='->')
i -= 1
print(i)
if i < 0:
i = 0
global info
info = get_itunes_info(df.iloc[i])

artist_label['text'] = info[1][1]
album_label['text'] = info[0]['collectionName']
song_label['text'] = info[1][5]

global canvas
global img
img = PIL.ImageTk.PhotoImage(
PIL.Image.open(io.BytesIO(requests.get(info[1][3].replace('5000x5000', '1000x1000')).content)))
canvas.itemconfig(tagOrId='image', image=img)

print(info)


root = Tk()
root.geometry('2000x1100+100+100')
root.title('H!P Release & iTunes Connector')

info = get_itunes_info(df.iloc[4000])
artist_label = tkinter.Label(root, text=info[1][1], font=("", 20))
artist_label.place(x=20, y=20)

album_label = tkinter.Label(root, text=info[0]['collectionName'], font=("", 20))
album_label.place(x=20, y=60)

song_label = tkinter.Label(root, text=info[1][5], font=("", 20))
song_label.place(x=20, y=100)

artwork = PIL.ImageTk.PhotoImage(
PIL.Image.open(io.BytesIO(requests.get(info[1][3].replace('5000x5000', '500x500')).content)))
canvas = tkinter.Canvas(root, width=1000, height=1000)
canvas.place(x=700, y=0)
canvas.create_image(
0,
0,
image=artwork,
anchor=tkinter.NW,
tag='image'
)

decBtn = tkinter.Button(text='前へ', command=lambda: decrement())
decBtn.place(x=20, y=140)
incBtn = tkinter.Button(text='次へ', command=lambda: increment())
incBtn.place(x=20, y=180)


def slideshow():
increment()
global root
root.after(300, slideshow)


root.after(300, slideshow)
root.mainloop()
72 changes: 67 additions & 5 deletions load_and_search.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
import datetime
import io
import os.path
import pprint
import time
import tkinter
from tkinter import *
from tkinter import ttk

import PIL.ImageTk
import PIL.Image
import requests

from search_on_itunes import search_on_itunes_v2
import pandas
Expand All @@ -12,24 +20,78 @@
pandas.options.display.max_colwidth = 6000
pandas.options.display.colheader_justify = 'left'

# root = Tk()
# root.geometry('1600x600')
# root.title('H!P Release & iTunes Connector')
# artist_label = tkinter.Label(root, text="artist", font=("", 20))
# artist_label.place(x=20, y=20)
# album_label = tkinter.Label(root, text="album", font=("", 20))
# album_label.place(x=20, y=60)
# song_label = tkinter.Label(root, text="song", font=("", 20))
# song_label.place(x=20, y=100)
#
# artwork = PIL.ImageTk.PhotoImage(
# PIL.Image.open(io.BytesIO(requests.get('http://cdn.helloproject.com/img/release/o/nowprinting.jpg').content)))
# canvas = tkinter.Canvas(root, width=500, height=500)
# canvas.place(x=1000, y=0)
# canvas.create_image(
# 0,
# 0,
# image=artwork,
# anchor=tkinter.NW
# )

df = pandas.read_excel(os.path.join(os.getcwd(), 'merged.xlsx'), sheet_name='Sheet1', index_col=0)

for _, col in df.iterrows():
url, artist_name, release_name, release_type, release_date, record_label, song_name, length, lyrics, composition, arrangement = col
url, artist_name, release_name, release_type, release_date, record_label, song_name, length, lyrics, composition, arrangement = col.tolist()
print('\n\n\n')
print(artist_name)
print(release_name)
print(song_name)
print(int(str(length).split(':')[0]) * 60 + int(str(length).split(':')[1]))
print(datetime.datetime.strptime(release_date, '%Y/%m/%d').date())
print('\n\n\n')
response = search_on_itunes_v2(artist_name=artist_name, album_name=release_name, song_name=song_name,
released_date=datetime.datetime.strptime(release_date, '%Y/%m/%d').date(),
length=int(str(length).split(':')[0]) * 60 + int(str(length).split(':')[1]),
debug=False)
pprint.pprint(response)
# time.sleep(1)

# time.sleep(0.3)
if response == [None, None, 0]:
print("Not found!")
continue

pprint.pprint(response[1])

root = Tk()
root.geometry('1600x600+100+100')
root.title('H!P Release & iTunes Connector')

artist_label = tkinter.Label(root, text=response[1][1], font=("", 20))
artist_label.place(x=20, y=20)

album_label = tkinter.Label(root, text=response[0]['collectionName'], font=("", 20))
album_label.place(x=20, y=60)

song_label = tkinter.Label(root, text=response[1][5], font=("", 20))
song_label.place(x=20, y=100)

artwork = PIL.ImageTk.PhotoImage(
PIL.Image.open(io.BytesIO(requests.get(response[1][3].replace('5000x5000', '500x500')).content)))
canvas = tkinter.Canvas(root, width=500, height=500)
canvas.place(x=1000, y=0)
canvas.create_image(
0,
0,
image=artwork,
anchor=tkinter.NW
)

root.mainloop()
# time.sleep(5)
# time.sleep(10)
# input()

time.sleep(1)

# search_result = search_on_itunes(search_keyword=song_name, artist_keyword=artist_name, debug=True)
# # pprint.pprint(search_result)
Expand Down
72 changes: 40 additions & 32 deletions search_on_itunes.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ def search_on_itunes_v2(song_name='', album_name='', artist_name='', length=0, r
if artist_name != '':
print('アーティスト名: ' + artist_name)
if song_name == '' and album_name == '':
sys.stdout = sys.__stdout__
return KeyError
if debug is False:
sys.stdout = open(os.devnull, 'w', encoding='UTF-8')
Expand All @@ -63,63 +64,70 @@ def search_on_itunes_v2(song_name='', album_name='', artist_name='', length=0, r
if song_name[0].isascii() or song_name[0].isdigit():
song_name = ' ' + song_name
song_name = mojimoji.zen_to_han(song_name, ascii=False, kana=False)

result_json = json.loads(safe_request_get_as_text(
raw_result = safe_request_get_as_text(
"https://itunes.apple.com/search?term=" + song_name +
"&media=music&entity=song&attribute=songTerm&country=jp&lang=ja_jp&limit=10&GenreTerm=J-Pop&sort=recent"))
"&media=music&entity=song&attribute=songTerm&country=jp&lang=ja_jp&limit=50&GenreTerm=J-Pop&sort=recent")
result_json = json.loads(raw_result)
# pprint.pprint(json.loads(result_json))
sort_list = []
if not result_json['results']:
return []
sys.stdout = sys.__stdout__
return [None, None, 0]
for content in result_json['results']:
pprint.pprint(content)
# pprint.pprint(content)
if 'releaseDate' not in content:
return [None, None, 0]
customized_data = []
print('収録アルバム: ' + content['collectionName'])
itunes_released_date = datetime.datetime.fromisoformat(
str(content['releaseDate']).replace('Z', '+00:00')).date()
print(itunes_released_date)
customized_data.append(itunes_released_date)
print('アーティスト名: ' + content['artistName'])
print(content['artistViewUrl'])
print(str(content['artworkUrl100']).replace('100x100', '5000x5000'))
print(content['collectionViewUrl'])
customized_data.extend([content['artistName'], content['artistViewUrl'],
str(content['artworkUrl100']).replace('100x100', '5000x5000'),
content['collectionViewUrl'], content['trackName'], content['trackTimeMillis'] / 1000])
print('曲名: ' + content['trackName'])
print('長さ: ' + str(int(content['trackTimeMillis'] / 1000)) + '秒')

collection_name_diff = difflib.SequenceMatcher(None, str(content['collectionName'])
.replace('- Single', '').replace(' - EP', ''),
album_name).ratio()
print()
print('album name diff inverted:', end='')
print(collection_name_diff)
print('released day diff: ', end='')
print(1 / (abs((itunes_released_date - released_date).days) + 1))
print('album name diff :{}'.format(collection_name_diff))

released_date_diff = abs((itunes_released_date - released_date).days)
print('released day diff: {}'.format(released_date_diff))

artist_name_diff = difflib.SequenceMatcher(None, content['artistName'], artist_name).ratio()
print('artist name diff: ', end='')
print(artist_name_diff)
print('length diff: ', end='')
print(1 / (abs(int(content['trackTimeMillis'] / 1000) - length) + 1))
print(collection_name_diff +
1 / (abs((itunes_released_date - released_date).days) + 1) +
artist_name_diff +
1 / (abs(int(content['trackTimeMillis'] / 1000) - length) + 1))

sort_list.append([content, collection_name_diff +
1 / (abs((itunes_released_date - released_date).days) + 1) +
artist_name_diff +
1 / (abs(int(content['trackTimeMillis'] / 1000) - length) + 1)])
print('artist name diff: {}'.format(artist_name_diff))

length_diff = abs(int(content['trackTimeMillis'] / 1000) - length)
print('length diff: {}'.format(length_diff))

if (collection_name_diff < 0.7) or (released_date_diff > 100) or (artist_name_diff < 0.7) or (length_diff > 20):
print("Too far from input...\n\n\n")
continue

sort_list.append([content, customized_data, collection_name_diff + 1 / (released_date_diff + 1) +
artist_name_diff + 1 / (length_diff + 1)])

print("\n\n\n")
if not sort_list:
sys.stdout = sys.__stdout__
return [None, None, 0]
pprint.pprint(sorted(sort_list, key=operator.itemgetter(1))[-1])
sys.stdout = sys.__stdout__
return sorted(sort_list, key=operator.itemgetter(1))[-1]


print(search_on_itunes_v2(song_name='おねがいネイル', album_name='モーニング刑事。', length=249,
released_date=datetime.datetime.strptime('1998/09/30', '%Y/%m/%d').date(),
artist_name='モーニング娘。&平家みちよ',
debug=True))

print(search_on_itunes_v2(song_name='My Days for You', album_name='真野恵里菜', length=261,
released_date=datetime.datetime.strptime('2011/06/29', '%Y/%m/%d').date(),
artist_name='真野恵里菜',
debug=True))
# res = search_on_itunes_v2(song_name='My Days for You', album_name='My Days for You', length=261,
# released_date=datetime.datetime.strptime('2011/06/29', '%Y/%m/%d').date(),
# artist_name='真野恵里菜',
# debug=False)
# pprint.pprint(res[1])


def search_on_itunes(search_keyword, artist_keyword="", debug=False):
Expand Down

0 comments on commit 5162107

Please sign in to comment.